JAVA语法细节(1)

来源:互联网 发布:java递归算法40例 编辑:程序博客网 时间:2024/05/29 13:38

1、变量的作用域

变量的作用域从变量定义的位置开始,到变量所在的那对大括号结束。变量定义内存开辟一块空间用于该变量,变量到达作用域时,该变量从内存中消失。

2、变量的数据类型

变量基本数据类型:byte、short、int、long、float、double、char、boolean 

byteb = 3;short s = 4000;int x = 12;long l = 123l;         //定义的数据后需加‘l’代表定义的是long型变量float f = 2.3f;        //定义的数据后需加‘f’代表定义的是float型变量double d = 3.4;char ch = '1';boolean bl = true;
注意:Java中所有的常数默认都是int类型的数据,当定义byte  x=9;时,编译器自动检查所赋值是否超出定义的类型范围,若没超出范围正常定义,若超出范围,编译器报错,“可能会损失精度”。


变量的自动类型转换:

byte x = 1, m = 2;     //定义了一个byte型数据xint y = 2;             //定义了一个int型数据yy = x+m;     //自动将x+m的类型转换成int类型

变量的强制类型转换:

short a = 23;int b = 34;b = (int)a;


3、使用变量时需注意一些情况

byte a = 1;byte b = 2;b = a+b;
这种情况下编译器会报错,“可能会损失精度”。
int a = 1;int b = 2;b = a+b;
这种情况,编译器不会报错,能正常运行。这是因为在Java中两个byte型的数据相加如果两个数据比较大结果可能会超过buyte型变量的所属范围,编译器会提示可能会损失精度。而两个int型的数据相加,若超出范围则向前进位,但只取低32位的有效数据,所以编译器不会报错。

4、运算符a++,++a,+=

(1) 当a++,和++a单独存在时,这两个运算语句的结果是相同的,都相当于a = a + 1;

(2)当a++或++a参与运算时,结果就不相同了

class VarDemo2 {public static void main(String[] args) {int a = 1, b, c;b = a++;c = ++a;System.out.println("a="+a+",b="+b+",c="+c);}}
编译、运行后输出“a=3,b=1,c=3”,当a++参与运算时,b=a++这条语句执行时,内存中先开辟出一个临时变量存储a的值,然后运行a++,此时a的值为2,然后将a++的值(即开辟的临时变量的值)赋给b,运行c=++a;时,a自加一次,此时a的值为3,将a的值赋给c。

(3)+=是一个赋值运算符,

byte a = 9;a = a+1;

此时编译器报错,提示“可能会损失精度”,原因如上文所述。

byte a = 9;a += 1;
此时编译器不会报错,能正常运行,“+=”是一个赋值运算符,在赋值前会自动检查是否超出了作用范围。



0 0