Java中数据类型和运算符
数据类型
Java中数据类型分两大类:
基本数据类型
引用类型(类似于C语言中的指针)
引用类型:
数组、类、枚举、抽象类、接口、String都是引用类型
字符串类型:String
String str=“hello”; “hello”->常量池
注意:字符串拼接任何数据类型,其结果就是一个字符串
基本数据类型/简单类型
整形类型:
int 4字节 取值范围:(-2^31) ~ (2^31-1)
long 8字节 取值范围:(-2^63) ~ (2^63-1) long类型的值最后都加上大写L
双精度浮点型 double 8字节
java中,int除以int任然是int(舍弃小数部分)用double来代替即可
单精度浮点型 float 4字节(12.5f)后面要+f,不然默认12.5为双精度浮点型double
字符类型:char 2字节 可以表示汉字,不能够表示负数,只能表示正数
java中用Unicode字符集->可以表示更多的字符
字节类型:byte 1字节
短整型类型:short 2字节
布尔类型:boolean 没有明确的大小,JVM没有明确规定
为什么正数的最大数+1就变成了最小值呢?
final关键字(常量的特性),
1.在编译的时候,就知道值是多少
2.常量一旦被定义,就不能被修改(一定要初始化,但是只能初始化一次,具体是不是在定义时候初始化?没有关系)
类型转换:
1.如果把大类型赋值给小类型的时候,一定要强转
整形提升
当两个不同类型的数进行运算后,就会把类型小的整形提升为大的类型
CPU为了存取数据的速度,他的取值,是4个字节4个字节去取
不足4个字节的数据,先提升为4个字节
例如:
byte a=10;
byte b=20;
byte c=(byte)(a+b);//因为byte不足4字节,会整形提升为int4字节,然后再运算。,所以要强转
运算符
简单的运算符,我就不说了吧,我就说一点难的,容易忘记的
位运算符:注意每一个运算符的特性
&:都为1则为1,有一个为0,则为0
|:只要有一个1为1,两个都为0为0
^:不一样为1,一样为0
~:0->1 1->0
移位运算符:<< >> >>>无符号右移
面试题:同学,如何将一个数字快速的扩大8倍。
0000 0010 2
0001 0000 8
右移:>>,左边补符号位
正数右移动n位:-> num / (2^n)
负数右移n位:-> 没有规律,左边补1
无符号右移 >>>不管符号位是1,还是0统一补0,
左移:<<, 右边统一补0
正数负数左移n位,结果都是 num * (2^n)
num左移n位:-> num * (2^n)
注意:计算机用位运算,在底层是最快的
条件运算符:就是三目运算符
表达式1?表达式2:表达式3