目录
8种基本数据类型
类型转换
题目
JAVA的数据类型分为:基本数据类型和引用数据类型。本篇博客会介绍基本数据类型及其使用的注意事项,其中包括隐式类型转换、显示类型转换、编译器的常量优化,结尾会给出10道练习题。
8种基本数据类型
字节型
byte
一个字节
-128 ~ 127字符型
char
二个字节
0 ~ 2^16-1短整型
short二个字节-2^15 ~ 2^15-1整型
int四个字节-2^31 ~ 2^31-1长整型
long八个字节-2^63 ~ 2^63-1单精度浮点型
float四个字节1. * 10^(-45) ~ 3. * 10^38双精度浮点型
doubleJava数据基础题八个字节
4.*10^(-324) ~1.*10^308布尔类型
boolean有争议(为什么java的特点叫做“一次编译,到处运行”?因为上面的数据类型的字节大小不管是16位操作系统还是32位操作系统还是64位操作系统,都不变)
对于一个数据类型,给他一个超出其范围的值,报错
为什么int类型的数值范围是 -2^31 ~ 2^31 - 1?
int 有4个字节,一共32位,即int可以表示 2^32个数,正数分一半负数分一半,正数从1 ~ 2^31,负数从 -1 ~ -2^31,但是正数还要表示0,所以最大值减一即 0 ~ 2^31 - 1
(这只是简单的理解,具体参见原码反码补码)
为什么char占两个字节?为什么它没有负数?
1、JAVA使用unicode字符集,里面的各种字符都是两个字节,'a' 、'b'...
2、因为char的第一位不是符号位,所以char 的数据范围为:0 ~ 2 ^ 16-1
在JAVA中,整数值默认为int类型,小数默认double类型。
如:
那为什么可以进行 byte a = 1; 呢?
因为编译器进行了隐式类型转换:byte a = (byte) 1;
类型转换
隐式/显示类型转换的规则是比较数据范围而不是字节大小,即float可以转为long而long不能转为float。
1、byte/short/char 三种数据类型之间的任意两种进行运算时,都要用int或更大的类型类型接收
编译器在给 a 、b 赋值后将 a 、b 隐式(自动)转换为 int 类型
而当你进行强制类型转换后,如果值正常,报错消失,如果值太大,超过接收类型的范围,则进行绕圈圈行为。
但是 short a = 1 + 2;不会报错,
因为给变量赋值时,如果右侧全是常量,编译器也会进行隐式类型转换,这成为 “编译器的常量优化” ,如果右侧有变量参与,就不能进行这种优化
a++,a += 1;这两种是可以的,是因为+=、++是java语言中的运算符,Java编译器会对它特殊处理进行正确的编译。
2、当两种不一样的数据类型进行运算时,会将其中一个较小的数据类型转换成较大的数据类型进行运算
题目
1、基本数据类型在使用时不初始化能用吗?
答案 :不能
2、JAVA有无符号整型吗?
答案 :无
3、下列错误的选项为:()
答案:B
解析:编译器认为111是int,但是他已经超过了int的范围,所以错误
4、下列变量的定义中,正确的是()
答案 :C
解析 : 相信你会疑惑,为什么float a = 123L;是正确的,而long a = 3.14F;是错误的呢?因为float的取值范围大于long,long装不下float,所以 long a = 3.14F错误。
5、boolean能转换成其他的基本数据类型吗?
答案 :不能,boolean不能赋值给其他基本类型,同时其他基本类型不能赋值给boolean
6、JAVA的字符类型采用的是unicode字符集,每个unicode码占用____个比特位?
答案 :16,因为俩字节
7、下面哪个表达式是正确的?
答案 : C
解析 : 因为B和D没有指定变量,A把128给byte,太大了
8、下列代码第几行会出错?
答案 :7。因为k没有初始化就使用
9、下列语句中正确的是()。
答案 :A。
解析 :A.相当于1 + 49;
B.中"2"是字符串,2 + "2" 被转换成字符串,不能赋值给int。
C.单引号代表字符型,它只能有一个字符,'one'有三个。
D.257 > 127
10、下列选项中,不属于Java基本数据类型的是
答案 : A
解析 : Integer是int的包装类,是引用数据类型,而不是基本数据类型
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/539.html