关于基本类型转换
Java有8种基本类型:
- 整型 (4种)
- 字符型 (1种)
- 浮点型 (2种)
- 布尔型(1种
类型 | 长度 | 能表示的范围 |
---|---|---|
byte | 8位 | -128~127 |
short | 16位 | -32,768~21767 |
int | 32位 | -2,147,483,648~2,147,483,647 |
long | 64位 | -9,223,372,036,854,775,808~9,223,372,036,854,775,807 |
每种类型表示的大小范围是不一样的,如果将一个超出该类型的值直接赋值给该类型变量,编译器会编译报错,可以通过强制类型转换解决编译报错问题;如果进行强制类型转换,则会产生截断,结果就是精度损失,以下面的代码为例:
byte b3=(byte)300;
byte类型能表示的范围是-128~127,结果如下:
那为什么结果是44呢?解释一下原理:
int型数值的存储大小为4字节,byte为1字节,那么int型 100 的二进制数为:
00000000 00000000 00000001 0010 1100,
强制转换为byte型数值后,它的二进制数就会变为1字节,前面的3个字节都会被损失掉,即变为:
0010 1100
将它换算为十进制数就是输出结果44
浮点类型
浮点类型有两种,需要注意的是默认的小数值是double类型的
//该行会出现编译错误,因为54.321是double型的
float f = 54.321;
float f2 = 54.321f;
布尔类型
true:1
false:0
但是,不能直接使用 0、1 进行赋值
String类型
该类型不是基本类型,而是Immutable类型的,一旦创建就不能被改变
变量
当一个变量被声明在类下面,变量就叫做、字段 或者属性\成员变量、Field。
是声明在一个方法上的,就叫做参数。
当访问的变量被多个作用域影响的时候,按照就近原则取