Java 关键字

    1. 被Java语言赋予特定含义的单词
    2.  组成关键字的字母全部小写
    3.  goto和const作为保留字存在,目前并不使用
    4. 一般关键字在IDE中会高亮

用于定义数据类型的关键字

class

interface

byte

short

int

long

float

double

char

boolean

void

    

用于定义数据类型值的关键字

true

false

null

  

用于定义流程控制的关键字

if

else

switch

case

default

while

do

for

break

continue

return

    

用于定义访问权限修饰符的关键字

private

protected

public

  

用于定义类,函数,变量修饰符的关键字

abstract

final

static

synchronized

 

用于定义类与类之间关系的关键字

extends

implements

   

用于定义建立实例及引用实例,判断实例的关键字

new

this

super

instanceof

 

用于异常处理的关键字

try

catch

finally

throw

throws

用于包的关键字

package

import

   

其他修饰符关键字

native

strictfp

transient

volatile

assert


Java标示符

    1. 给类,接口,方法,变量等起名字时使用的字符序列
    2. 由英文大小写字母和数字以及$和_组成,切不能为Java关键字,同时不能以数字开头
    3. 标示符区分大小写

Java 注释

    1. 为了对程序进行说明
    2. 单行注释 //注释内容
    3. 多行注释 /*注释内容*/
    4. 文档注释 /**注释内容 */

Java常量

    1. 执行程序过程中值不会发生变化
    2. 字符串常量 例如 "aba", "happy"
    3. 整数常量    例如 10,二进制表示(0b1010),八进制表示(012),十进制表示(10,默认表示形式),十六进制表示(0x000A)
    4. 小数常量    例如 1.1,2.1等
    5. 字符常量    例如 'a', 'b',但是'ab'是错的
    6. 布尔型常量 例如 true,false
    7. 空常量       只有null

整数常量会有原码,反码,和补码的区别,所有数据的运算都是采用补码进行的;

    1. 原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
    2. 反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
    3. 补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

Java变量

    1. 在程序执行的过程中,在某个范围内其值可以发生改变的量;
    2. 定义格式:数据类型 变量名 = 初始化值;

Java 数据类型

Java是强数据类型语言,内存上会区别不同类型内存的大小,下面是不同数据类型的区分表。

【Java基础】基础概念-LMLPHP

不同数据类型大小区分如下:

简单类型

boolean

byte

char

short

Int

long

float

double

void

字节数目

1

1

2

2

4

8

4

8

--

封装器类

Boolean

Byte

Character

Short

Integer

Long

Float

Double

Void

默认整数是用int表示,如果用long,记得数字后缀加L;默认小数用double表示,如果要用float,记得用F为后缀;


Java 类型转换

  1. 布尔型不支持转化
  2. byte,short,char—int—long—float—double;
  3. byte,short,char相互之间不能转换,他们参与运算首先转换为int类型;
  4. 强制转换: 目标类型 变量名=(目标类型)(被转换的数据);

注意点:

byte b1 = 3, b2 = 4, b;
b = b1 + b2;//会报错,可能损失精度
b = 3 + 4;//不会报错

  因为

b = b1 + b2

  默认有类型提升,byte和byte相加,先转换成int,然后将int赋值给byte会出现“可能损失精度”的报错;

但是 b = 3 + 4则不会报错,这是因为常量先把结果计算出来,然后看是否在byte范围内,如果在则不会报错;

所以变量是先讲类型进行提升,byte,short,char的计算,都是先到int,然后再去计算。常量在编译后就可以确定,而变量要运行后才能确定。

如果赋值出现溢出怎么办,例如有byte b = (byte) 131;

  这时候计算机操作如下:

      计算机会把131看作整数,所以在计算机中存储131为4个字节,如下:

0000 0000  0000 0000  0000 0000  1000 0011

然后赋值给byte,会先截取最后一个字节,所以b在计算机中存储的是1000 0011,记住,这是补码,最终输出的结果是原码。

补码:  1                000 0011

反码:  1                000 0010

原码:  1                111 1101

      所以结果为:-125


  Java 算术运算符

【Java基础】基础概念-LMLPHP

  注意点:

  1. 除法中,整数和整数相除,得到的是整数
  2. +号可以表示加法,正数和字符串的链接
  3. System.out.println(8++);这句语句编译会出错,因为常量不能参与这种自增运算,++,--针对的是变量

  Java 关系运算符

【Java基础】基础概念-LMLPHP


  Java 逻辑运算符

【Java基础】基础概念-LMLPHP

    &&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
    ||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。

    &,|,^:当两边出现的是布尔值时,做的是逻辑运算,最后结果为true或false;但,当两边为数值时,做的是位运算。


  Java算术运算符
    A:+,-,*,/,%,++,--
    B:+的用法
        a:加法
        b:正号
        c:字符串连接符
    C:/和%的区别
        数据做除法操作的时候,/取得是商,%取得是余数
    D:++和--的用法
        a:他们的作用是自增或者自减
        b:使用
           **单独使用
          放在操作数据的前面和后面效果一样。
          a++或者++a效果一样。
          **参与操作使用
          放在操作数的前面:先自增或者自减,再参与操作
            int a = 10;
            int b = ++a;// b为11
          放在操作数的后面:先参与操作,再自增或者自减
            int a = 10;
            int b = a++;//b为10


  Java赋值运算符
     A: =,+=,-=,*=,/=,%=等
     B: =叫做赋值运算符,也是最基本的赋值运算符
       int x = 10; 把10赋值给int类型的变量x。
     C:扩展的赋值运算符的特点
      隐含了自动强制转换。

      面试题:
        short s = 1;
        s = s + 1; //先做了类型转换到int,然后没有强制类型转换,会报出“可能损失精度的错误”

        short s = 1;
        s += 1;// 隐含了自动强制转换。不会报错


       
  JAVA位运算符号

A:^的特殊用法

  一个数据针对另一个数据位异或两次,该数不变
B:面试题
  a:请实现两个变量的交换
    **采用第三方变量:用一个temp中间变量来实现交换
    **用位异或运算符(高效率)
      

a = a ^ b;
b = a ^ b;
a = a ^ b;

        ** 用减法

a = a + b;
b = a - b;
a = a - b;

  

        ** 一条语句实现交换

b = (a+b) - (a=b);

  

  b:请用最有效率的方式计算出2乘以8的结果:2<<3


  Java三元运算符

A:格式
  比较表达式?表达式1:表达式2;
B:执行流程:
  首先计算比较表达式的值,看是true还是false。
  如果是true,表达式1就是结果。
  如果是false,表达式2就是结果。
C:案例:
  a:比较两个数据是否相等
  b:获取两个数据中的最大值
  c:获取三个数据中的最大值


05-08 15:12