java中的变量于常量及数据类型
Java中的变量与常量
变量定义的注意事项
1.作用域问题:变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。
2.初始化值问题:没有初始化值不能直接使用。
3.在一行上建议只定义一个变量:可以定义多个,但是不建议。
4.定义long类型(一种数据类型,下面会提到)时要在数值后面加上L,否则数字超过int容量会报错;定义float类型时要在数值后面加F,否则会发生报错。这是因为如果未加会导致变量未被定义为我们想要的float或long类型,而是小数默认的double类型或整数默认的int类型。
举个例子
class Demo_3 {
public static void main(String[] args) {
float a=3.14F;
long b=5611114865L;
System.out.println(a);
System.out.println(b);
}
}
这里先试一下不加F
不加L效果如下:
java中的数据类型
自动类型提升
自动类型提升是指
1.byte,short,char在运算过程中会转化为int类型;若含有long或double则会转化为long或double
2.范围较小的数据类型和范围较大的数据类型同时操作时会转化为较大的数据类型(byte在与short,char运算时会转化为int)
这里举个例子:byte在运算过程中自动提升至int类型
class Demo_3 {
public static void main(String[] args) {
byte a=2;
byte b=3;
byte c=a+b;
System.out.println(b);
}
}
强制类型转化
有的时候你可能不希望你定义的byte,short或其他类型在运算过程中被转化为int,long,或double类型,那么你可以使用强制类型转化来使其转化为你想要的类型
就拿上免得那个例子来再试一次
但是这样也有不好的地方,当运算的结果的大小超出你强制转化的类型容量的话运算结果可能就会出错,例如:
byte容量为一个字节即 -128~127 所以127+2超过的他的容量,这时强行存储进byte类型中,导致了错误的结果—127