Java中的八大数据变量类型
byte、int、short、long、float、double、char、boolean型
- Java语言的数据默认情况下是int类型的,于是在进行运算的过程中可能会出现如下情况:
byte a=3;
a=a+1;
System.out.println(a);
这个代码在运行时是会报错的,因为前面定义了a是byte类型的,但是在后面a=a+1中的a+1在Java中是默认为int类型的,然而前面的a确是byte类型的,这样就会导致前后类型不一致从而报错;
解决方法如下:
byte a=3;
a=(byte)a+1;
System.out.println(a);
或者
int a=3;
a=a+1;
System.out.println(a); //这两种方法的输出结果都是4;
这样使得前后类型一致便可以运行了;
2.在Java中带有小数点的数值默认为double类型的;
在long、float以及double类型定义的数据后面需要分别加L(l)以及F(f),和D(d),如果不加的话可能会出现编译错误而且也会降低程序的可读性,但是并不会影响数据的精度;
例如:
float a=-3.1;
System.out.println(a);
这样是会报错的,因为-3.1默认是double类型的,这样就不能用它赋给用float类型定义的a变量了。
正确的就应该是:
float a=-3.1F;
3.char型只能定义一个字符,而且字母与特殊符号或者汉字需要加单引号,如果是直接将数字复制给字符型变量的话,将会输出ascll对应的字符,而不会输出数字。
char a=97; //输出结果是 A
char b='a'; //输出结果是 a
char c='abd'; //这样会报错
4.当数字不用十进制表示时,二进制的表示方法是0b开头,八进制的表示方法是0开头,十六进制的表示方法是0x开头,其中0均为数字零。
但是这个二进制赋值在eclipse上面无法执行,可以在idea上面运行。
5.因为float类型与double类型定义的变量精度不同,当用double与float类型分别为两个变量赋值0.1的时候,如果比较这两者是否相等,输出的结果是不等的。
double a=0.1;
float b=0.1f;
System.out.println(a==b);//比较a与b是否相同
//在这里输出的结果是false
因为是因为在Java中float类型是离散型的数据类型,并不是连续型的,它具有舍入误差,得出的一个数只是约等于,接近但不等于我们赋给它的那个数。所以以后我们进行数字大小的比较最好完全避免使用浮点类型的变量进行比较。