java是强类型的语言,变量必须先定义后使用。


定义变量的格式:
>>> 数据类型 变量名 = 值;


基本的数据类型:

变量和数据类型 - 图1


变量和数据类型 - 图2




隐式类型转换:

Byte var_name = 4;

上面这一句,编译器解析时,会这么思考:

  1. 判断右边的数值为整型
  2. 右边声明为Byte类型,于是判断其数值是否在1个字节之内
  3. 如果是,将整型的高字节进行抹除,最后存储到内存





    变量和数据类型 - 图3

    为什么 a = b+c 会编译错误呢?

  4. 编译器解析时,看到右边是变量,它就会内存根据变量名寻址,发现是整型,于是涉及到了不同变量相加问题

  5. 而a=3+5,这里会进行隐式类型转换,所以不会报错





    强制类型转换:

    变量和数据类型 - 图4

    不同类型之间相加时(比如这里的byte和int),会向上兼容(隐式类型转换)

    但是如果存储时的变量还是那个变量类型(这里的byte),超过存储空间范围(int是4字节) 就会报错。

    因此我们需要强制类型转换。



    注意:

    x += b (这种语句底层已经帮我们进行了强转,这也是+= 和 x=x+b这两者的区别)






    常量
    定义变量的时候,如果加上final修饰符,这个变量就变成了常量。常量在定义时进行初始化后就不可再次赋值,再次赋值会导致编译错误。




    var关键字
    变量和数据类型 - 图5



    变量的作用范围

    java里面的{ }就是作用域,编译器就能识别出语句块的开始和结束。而在语句块中定义的变量,它有一个作用域,就是从大括号定义处开始,到语句块结束(里面的内存会被释放)。超出了作用域引用这些变量,编译器会报错。

    定义变量时,要遵循作用域最小化原则,尽量将变量定义在尽可能小的作用域,并且,不要重复使用变量名。




    已使用 Microsoft OneNote 2013 创建。