Java——数据类型
众所周知Java是一个强类型语言,什么是强类型语言呢?
答:要求变量的使用要严格符合规定。所有变量都必须先定义后才能使用(安全性高,速率慢!)
例子:
Java的数据类型分类
①基本类型(primitive)
数值类型
整数类型
byte占1个字节范围.
short 站2个字节范围.
int占4个字节范围.
long 占8个字节范围.
浮点类型
float占4个字节范围
double占8个字节范围
字符类型
char占2两个字节
布尔类型
占1位其值只有false和true。
八大基本数据类型
②引用类型 (reference)
引用类型包括:
1.类。
2.接口。
3.数组。
数据类型扩展
1.整数扩展:进制
二进制0b,八进制0,十进制,十六进制0x。
2.浮点数扩展
注:float是离散,有限,舍入误差,大约,接近不等于。
例:
我们可以看到的是0.1不等于0.1,c=c+1。
这个就和float有关了,即在上面强调float的特点。最后也总结出来一个道理:
最好完全避免使用浮点数进行比较!!!
3.字符拓展
所有的字符本质都是数字!!!
我们可以举例看一下:
把字符a强制转换为整数型,对应的数字是 97。这个是为什么呢?
答:在底层有一个Unicode编码:表(a:97,b:98......)每一个字符都对应有相应的数字!!!
4.转义字符
样式 含义
\123 1~3位八进制数据所表示的字符,如\256
\uF890 4位十六进制数据所表示的字符,如\u0014
’ 单引号字符
\ 反斜杠字符
\t 水平制表符
\v 垂直制表符
\r 回车
\n 换行符
\b 退格
\f 换页
\a 响铃
类型转换
低————————————————————————————>高
byte,short,char ——>int ——>long——>float——>double
注:小数的优先级大于整数!!!
例:
int i = 128; byte b = (byte)i; //这个转换时有溢出
输出为-127(因为有溢出)
强制转换格式:(类型)变量名
强制转换是由高到低,自动转换是由低到高。
注意一些转换的情况!!!
不能对布尔值进行转换。
不能把类型转化为不相干的类型。
在把高容量转换到低容量的时候,强制转换。
转换的时候可能存在内存溢出或者精度问题。
JDK新特性
这个是我们补充的一个地方,下面的例子是可以用到的。
首先先介绍一下JDK的新特性:数字之间是可以用下划线分隔的,这样可以更清楚的分别位数!!!
int money = 1000000000; int money1 = 10_0000_0000; //两者是输出相同的
解决一些溢出问题
首先我们来看下面这段代码:
int money1 = 10_0000_0000; int years = 20; int total = money1 *years; System.out.println(total);
我们来猜一下这个结果是200000000000还是什么呢?
我们来看结果!!!
可能有基础的小伙伴已经直到这个是为啥了,就是因为溢出问题 。
我么在思考一下,如果我们在total前面加个long呢???
是不是这样他就不会在溢出了???
我们来试试:
int money1 = 10_0000_0000; int years = 20; long total = money1 *years; System.out.println(total);
我们呢看一下结果:
还是溢出!!!这是为什么呢?
其实在运算前money和years就是默认为int类型,在转换前就已经出现溢出问题了!
那我们怎么来解决这个溢出呢?
我们就可以用类型转化了哦!我们来看代码:
int money1 = 10_0000_0000; int years = 20; long total = money1 *((long)(years)); System.out.println(total);
这样输出的结果就是我们想要的结果了哦!
今天的Java分享就结束了,我就要正式进入Java了!!!!
冲起来!!!!