JavaSE基础语法
一、数据类型
byte
1个字节(8bit),取值范围-128~127,默认值0
short
2个字节(16bit),取值范围-32768~32717,默认值0
int
4个字节(32bit),取值范围-2147483648~2147483647,默认值0
long
8个字节(64bit),-263~ 263-1,默认值0L
float
4个字节(32bit),用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位),默认值0
double
8个字节(64bit),双精度浮点型,默认值0
char
2个字节(16bit),字符型,用于存储单个字符,无负数,取值范围0~65535,默认值为空
boolean
布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false),默认值false
- long型时,需要在值后面加L或l
- float型常量,须后加‘f’或‘F’
- float可以保证十进制科学计数法小数点后6位有效精度和第7位的部分精度。double可以保证十进制科学计数法小数点后15位有效精度和第16位的部分精度。
- 字符型的值必须使用单引号,只能而且必须存储单个字符,不能是空单引号。
- 字符型使用Unicode编码(ASCII,特殊字符,中文、日文、韩文…)
Java中每一个字符,都有一个唯一的Unicode编码值,知道字符的Unicode编码后,可以等价写成
char c = '\u5c1a';//Unicode编码值的十六进制形式
- String是引用数据类型,String的常量值必须使用双引号。单独的双引号也是一个字符串值
1.1 基本数据类型转换
1.小容量转大容量,自动转
byte,short,char --> int -->long -->float -->double
byte b = 127; //把127赋值给b,存储到b变量中
int num = b; //把变量b中的值复制一份给num,也是说把变量b中的值赋值给num
2.大容量转小容量,强制转换,按低位截取
int age = 130;
byte bb = (byte)age;//溢出
System.out.println("bb = " + bb);
自动转和强制转换的意思是 是否需要在变量前面加上(数据类型)
来对变量进行转换;
从上面看自动转不需要,但是强转需要
3.byte,short,char之间运算统统转为int
三者之间是互不转换的,包括byte+byte等运算也会变成int
三者之间不进行运算,若运算都将自动升级为int再做运算
4.Java中一元运算符不会进行自动类型转换
byte b =127;
b++;
System.out.println(b); //-128
这里 b++ 等价于 byte(127 + 1) = -128
整个执行过程如下:
byte(127) 0111 1111
+
int(1) 0000 0000 0000 0000 0000 0000 0000 0001
----------------------------------------------------------
= 0000 0000 0000 0000 0000 0000 1000 0000
----------------------------------------------------------
(byte)向下转换
最终的结果: 1000 0000
1.2 引用数据类型转换
引用数据类型转换要有前提,必须有父子关系;