概括:
一、数据类型分为:基本数据类型和引用型数据类型
二、基本数据类型
三、引用数据类型
四、常量
五、整型运算
六、浮点数运算
七、布尔运算
八、数组类型特点
九、相关面试题
一、数据类型分为:基本数据类型和引用型数据类型
二、基本数据类型
括号内为字节数
整型:byte(1),short(2),int(4),long(8)
Java只定义带符号的整型。
long类型需要在后面加上L。
Java中,整数默认为int
浮点型:float(4),double(8)
float类型需要在后面加上F,如:0.9f
Java中,小数默认为double类型
字符型:char(2)
字符型可以表示ASCII码和Unicode码字符,用单引号
直接将char赋值给int类型变量就可以得到该字符的Unicode编码。
布尔型:boolean(4)
JVM内部会把boolean表示为4个字节的整型
三、引用数据类型
除了基本数据类型外,其他都是引用数据类型。引用类型的变量内部存储地址,指向对象在内存中的位置。
如:String类型、数组类型
四、常量
1、常量使用final关键字,不可重复赋值
3、变量作用域:从开始定义的地方到语句块结束的地方
语句块是指用{}括起来的区域。
五、整型运算
1、加减乘除(/)余(%)
注意:整数的运算结果永远是整数,除法只得到整数部分。
整数存在范围限制,计算结果超出范围就会产生溢出,溢出不报错,返回奇怪的值。
2、移位运算
<< 左移(x2),填充0
>> 右移(/2),最高位用符号位填充
>>> 无符号右移 最高位补0
注意:byte和short移位时会首先转换为int
3、位运算(区别于布尔运算)
& 与
| 或
~ 非
^ 异或
4、类型自动提升与强制转型
参与运算的两个数类型不一致时,计算结果为较大类型的数。
强制转换:(强制类型),超出范围则得到错误结果
六、浮点数运算
1、+、-、*、/
2、整型与浮点数运算时,自动提升为整型
3、可强制转换为整型,直接丢弃小数部分,超出范围则返回整型最大值
4、浮点数除0不会报错,返回特殊值
I.NaN Not a Number 0.0/0
II.Infinity 无穷大 1.0/0
III.-Infinity 负无穷大 -1.0/0
5、浮点数比较
正确的比较方法是判断两个浮点数之差的绝对值是否小于一个很小的数。
6、四舍五入
对浮点数加上0.5再强制转换即可
七、布尔运算
1、运算符
比较运算符:> >= < <= == !=
与运算:&&、&
或运算:||、|
非运算:!
三元运算符: b?x:y
2、短路运算(&&、||)
如果一个布尔运算表达式能提前确定结果,则后续的计算不再进行,直接返回结果
八、数组类型特点
1、所有元素都会初始化,整型0,浮点型0.0,布尔值false,字符型'\u0000'
2、数组大小不可改变
3、初始化数组的方法
int[] s={1,2,..}
int[] s=new int[]{1,2,...}
九、相关面试题
Java有哪些数据类型
运算符&和&&的区别
float f=3.4;是否正确
short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗
答:short s1 = 1; s1 = s1 + 1;错,s1是short类型,而s1+1结果为int类型,需要强制转换。
short s1 = 1; s1 += 1; 正确,相当于s1=(short(s1+1)),其中隐含强制类型转换。
Java语言采用何种编码方案?有何特点?
答:Unicode编码标准,为每个字符制定了一个唯一的数值,因此在任何语言、平台,程序都可以正放心使用。
用最有效率的方法计算 2 乘以 8
答:2 << 3。(左移一位乘以2)
https://blog.csdn.net/thinkwon/article/details/104390612