关于Java数据类型的拓展和类型转换
拓展
整型拓展
二进制 在Java中输出二进制数时,在数字前面加上0b
八进制 在Java中输出八进制数时,在数字前面加上0
十六进制 在Java中输出十六进制数时,在数字前面加上0x
浮点数
像浮点数 它是有限的,离散的,接近但是不等于,最好避免使用浮点数进行比较
如果必须使用浮点数进行计算的话,可以使用一个数学工具类 BigDecimal
字符
讲到字符就得讲到编码Unicode 0-65536 其中每一个都对应着一个字符
强制转换可以将字符转化为数字,所有的字符本质还是数字
直接在输出时加上int 比如
System.out.println((int)C)
这样就可以将字符转换为整型
转义字符
\t 制表符
\n 换行符
" 双引号
’ 单引号字符
\ 反斜杠字符
\r 回车
\t 跳格
\b 退格
\f 走纸换页
类型转换
首先对上面的所有类型进行容量的比较
容量 从低到高
byte — short,char—int—long—float—double
我们进行类型转换会用到这个
public class conversion {
public static void main(String[] args) {
int i=128;
byte b=(byte) i;
System.out.println(i);
System.out.println(b);
}
}
这就是将int 类型的128转换成byte类型
你会发现,转换后变成了-128
这就涉及到我们下面将说到的溢出问题
byte类型最大只能表示到127,超过后就会变成-128
还有jdk7中可以将数字间用下划线分割开,看的更加仔细,比如1000000000可以表示成10_0000_0000
溢出问题
这就是每个数据类型的容量,溢出后得不到结果,关于每个类型的容量,可以看之前的文章
还有强转换,就是从低容量的转换到高容量的
必须得转换
public class conversion {
public static void main(String[] args) {
int a=10_0000_0000;
System.out.println((long)a);
}
}
上面这样就可以将int 转换为long
注意
不能对布尔值进行转换
不能对象类型转换为不相干的类型
再把高容量转换到低容量的时候强制转换
转换时可能存在溢出,或者精度问题
浮点数转换到整型会丢失小数部分,精度不够
下面就是溢出问题的解决方式
而且得在使用数据时就进行转换,后面转换结果时,是没有用处的
public class conversion {
public static void main(String[] args) {
//操作比较大的数时,要注意溢出问题
int money=10_0000_0000;
int years=20;
int total=money*years;
int total1=money*years;
//值为-1474836480,计算时溢出
long total12=money*years;
//默认时int,转换之前已经存在问题
long tatal123=money*(long)years;
//先将一个数据转换为long 可以运行
System.out.println(tatal123);
}
}
一些反思
今天在帮助同学安装jdk时还是遇到了一些问题
1.安装时得放在环境变量中,用户变量中是没有用的
2.有一些电脑中,后缀名是默认隐藏了的,得调出来,进行更改