昨天,我们学习了JAVA基础语法中的前四点内容:注释,关键字,标识符,常量,今天我们来看后四点:变量,数据类型和类型转换,运算符,语句。 进制和进制转换的转换属于课外内容,在此就不再多说,想要了解的可以去看看数电基础中有讲述数值的转换。
1.变量:在程序执行的过程中,在某个范围内,其值是可以改变的量。
-表示格式:数据类型 变量名=变量值;
-定义变量的目的?
答:用来不断的存放同一类型的常量,并可以重复使用。
2.数据类型:java是强类型语言,对于每一种数据都定义了具体的数据类型,在内存中分配了不同的内存空间。
数据类型的分类:
- 引用数据类型
- 列表内容类型
基本数据类型分类:
整数型
* byte 占一个字节 -128到127 * short 占两个字 -2^15~2^15-1 * int 占四个字节 -2^31~2^31-1 * long 占八个字节 -2^63~2^63-1
浮点型
* float 占四个字节 -3.403E38~3.403E38 单精度 * double 占八个字节-1.798E308~1.798E308 双精度
字符型
* char 占两个字节 0~65535
- *
布尔型
* boolean * boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小
3.类型转换
基本类型中byte、short、int、long 和 float、double 依次增大,当后者转换成前者时需要强制转换,例如:long a = 100L;int b = (int)a ; 但前者转换成后者,则可以直接赋值,JVM会完成自动转换 。
强制类型转换:
byte a=3;
byte b=4;
byte c= a+b;//这段代码会报错。
system.out.println(c);`
/*
1.由于byte和byte(或者short,char),进行运算的时候会主动提升为int类型,而两个int类型相加的和也为int类型。
2.a和b 是两个变量,变量存储的值是变化的,在编译的时候无法确定具体的值,相加有可能会超出byte的取值范围。
*/
总结:
基本类型中byte、short、char、int、long 和 float、double 依次增大,当后者转换成前者时需要强制转换,例如:long a = 100L;int b = (int)a ; 但前者转换成后者,则可以直接赋值,JVM会完成自动转换 ,而byte、short、char 之间不会进行相互转换,运算时会自动转换为int类型。即(byte、short、char)>>int>>long >> float>>double .
拓展:long为八个字节,而float为四个字节,为什么float的长度大于long呢?
- long: 8个字节
- float:4个字节
- IEEE754规定 float
- 4个字节是32个二进制位
- 其中第1位是符号位
- 接下来8位是指数位 (取值范围为: 00000000 ~11111111 即为0~255)
- 0到255(0 代表0,255代表无穷大)
- 剩余的1~254,规定每一个数 减去127,即变为 -126~127
- 每个指数位减去127
- 即指数位的范围为2^-126~2^127 ,其值远远大于long的长度。
- 最后 23位代表尾数位(最大为0.999999999999…)
* A:它们底层的存储结构不同。
* B:float表示的数据范围比long的范围要大
* long:2^63-1
* float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1
4.运算符
引入ASCII 码