美文网首页
Java 基本数据类型相关问题总结

Java 基本数据类型相关问题总结

作者: 07120665a058 | 来源:发表于2018-08-22 22:57 被阅读12次
  • int 溢出
int * int 可能会超过int的最大值,所以应该转为更长整型 long
判断溢出的方法:Math.addExact(left, right)
源码:
int r = x + y;
if (((x ^ r) & (y ^ r)) < 0) {
  throw new ArithmeticException("integer overflow");
}
只有当 x y 是同符号的时候才可能会溢出(x 和 y 的符号都跟 r 不一样)
  • 移位运算符
<< :左移运算符,num << 1,相当于num乘以2
>> :右移运算符,num >> 1,相当于num除以2
>>>:无符号右移,忽略符号位,空位都以0补齐
举例: 1000 …….. 1000
不带符号位(整体右移1) >>>:0100 ……0100
带符号位(符号位不动)>>:1000 …….. 0100
  • 算术运算的类型
long * int = long 只要其中一个是 long,结果就为 long
double * float = double
short * short = int 
  • Math取整
final int number = Math.round();
floor  向下取整
ceil   向上取整
round  四舍五入取整(只根据小数点后一位来判断)
  • INFINITY的定义
public static final double POSITIVE_INFINITY = 1.0 / 0.0;
public static final double NEGATIVE_INFINITY = -1.0 / 0.0;
INFINITY:表示无限,乘以 0 等于NAN,做其他运算结果还是无限
  • NAN的定义:
public static final double NaN = 0.0d / 0.0;
NAN:表示非数字,和谁都不相等,也不等于自己
举例:assertFalse(Double.NaN == Double.NaN);

https://www.cnblogs.com/zhisuoyu/p/5314541.html

  • 几个基本类型的默认值:
boolean:false
int / short / byte / long:0
char:'\u0000'
double:0.0d
float:0.0f
long:0L
String:null
Object:null
  • 基本类型——字节byte —— bit位

byte —— 1字节 —— 1*8   
short —— 2字节 —— 2*8    
int —— 4字节 —— 4*8 

long —— 8字节 —— 8*8

float —— 4字节 —— 4*8 
double —— 8字节 —— 8*8 
char —— 2字节 —— 2*8 ——无符号              
boolean —— 1字节 —— 1*8  
  • UTF可能表示的字节数
UTF-8:1 / 2 / 3
UTF-16:2 / 4
UTF-32:4
  • 运算符优先级
括号 > 单目 > 算术 > 关系 > 位 > 逻辑 > 条件 > 赋值
  • 位运算符
`^` 异或运算符,相同为0,不同为1
`~` 非运算符,按位取反
优先级:`~` > `&` > `|`
  • 区别:&&(逻辑与) &(按位与) |(按位或) ||(逻辑或)
`||` :只要满足第一个条件,后面条件就不再判断
 `|` :要对所有的条件都进行判断

参考文章
Java &、&&、|、||、^、<<、>>、~、>>>等运算符
Java运算符优先级整理

相关文章

网友评论

      本文标题:Java 基本数据类型相关问题总结

      本文链接:https://www.haomeiwen.com/subject/qyjuiftx.html