Java基础系列之二

  • 四、常量

定义:常量表示不能改变的数值。

Java中常量的分类
1.整数常量:所有整数。
2.小数常量:所有小数。
3.布尔(boolean)型常量:只有两个数值,true、false。
4.字符常量:将一个数字字母或者符号用单引号('')标识,如:'a'。
5.字符串常量:将一个或者多个字符用双引号("")标识,如:"helloworld"、"a"、""(空字符串)。
6.null常量:只有一个数值就是:null。

  • 五、变量

定义:内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),该区域的数据
可以在同一类型范围内不断变化。可以类比数学中的X。

特点:变量其实就是将不确定的数据进行存储,也就是需要在内存中开辟一个空间。用来不断的存放同一类型的常量,并可以重复使用。

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

 例如: int a =1;

P.S.
1、格式是固定的,记住格式,以不变应万变。
2、变量的作用范围(一对{}之间有效)。
3、变量只能存放某一类型的数据。

  • 数据类型

Java语言的数据类型包括8种基本类型,3种引用类型

Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间:

byte1个字节
short2个字节
int4个字节
long8个字节
float4个字节
double8个字节
char2个字节

  • 类型转换

  所有的byte型、short型和char的值将被提升到int型。
如果一个操作数是long型,计算结果就是long型;
如果一个操作数是float型,计算结果就是float型;
如果一个操作数是double型,计算结果就是double型。

下面用几个例子说明下上述总结:

1 int x = 3;
2 byte b = 5;
3 x= x + b;
int类型的变量占4个字节,当byte类型的变量与其相加的时候,首先会将byte类型的变量自动转化为4个字节的int类型,然后再进行加法操作

 

1 byte b = 3;
2 b = b + 200;
3 System.out.println(b);

当byte类型的变量提升为int类型与int类型的常量200相加后,结果依然是int类型,再赋值
给byte类型,第三行会出现损失精度的错误。

byte b = 3;
b = (byte)(b + 200);
System.out.println(b);
结果为-53的原因是,200+3结果是203,换算成占1个字节空间的二进制也就是11001011。
由于首位为1,所以是负数,除符号位外,其余部分取反加1,得1,0110101,即-53。

 

1 byte a = 3 +7;
2 byte b = 3;
3 byte c = 7; 
4 byte d = b +c;
5 
6 代码第4行编译不通过!
7 涉及到编译器编译程序时候的细节,之所以byteb=3+7;,没有报错,是因为3和7都是常量,编译器知道结果是10,并且在byte范围之内,因此就自动进行了强转,所以不会报错。
8 而b=b1+b2;中b1和b2都是变量,编译器编译程序是一行一行编译的,它根本不知道b1和b2到底是多少,两个byte类型的数据相加时,首先都会被提升为int类型,他们的和也是int类型,其值可能会超过byte的范围,因此就会报错。

 

 

结语:大家可以看到,在基础系列的变量部分,我只写了基本类型的一些使用及注意事项,引用类型变量的使用我想放在面向对象部分阐述。

 

posted @ 2019-07-22 10:09  毛毛细语  阅读(141)  评论(0)    收藏  举报