java原始数据类型Q&A
2021-08-25 15:29:04 8 举报
AI智能生成
java原始数据类型+Q&A总结
作者其他创作
大纲/内容
基础知识
类型 长度 默认值
byte 1 0
char 2 0(\u0000)
short 2 0
int 4 0
long 8 0L
float 4 0.0f
double 8 0 / 0d
boolean 1 false
byte 1 0
char 2 0(\u0000)
short 2 0
int 4 0
long 8 0L
float 4 0.0f
double 8 0 / 0d
boolean 1 false
类型提升
运算表达式中, 自动转换为算式中类型最高的数据类型
byte, short, char 自动提升为int类型进行运算
提升优先级: (byte < short < char) < int < long < float < double
基础类型系统相关性长度
java由于虚拟机屏蔽了系统相关性, 所以无论32位还是64位机器,基础类型的长度不变
QA理解
Q:java中数据类型大小会和平台是32位、64位相关吗?
A:不相关,虚拟机原因平台兼容
A:不相关,虚拟机原因平台兼容
Q:java中解析数据时,需要考虑处理器的大小端问题吗?(即0x1234的12是放在高地址还是低地址)
A:不需要。java由于虚拟机的关系,屏蔽了大小端问题,需要知道的话可用 ByteOrder.nativeOrder() 查询。在操作ByteBuffer中,也可以使用 ByteBuffer.order() 进行设置:。
A:不需要。java由于虚拟机的关系,屏蔽了大小端问题,需要知道的话可用 ByteOrder.nativeOrder() 查询。在操作ByteBuffer中,也可以使用 ByteBuffer.order() 进行设置:。
Q: java中byte、char是多少字节?C++中char是多少字节?
A : java中是1和2, C++中char是1
A : java中是1和2, C++中char是1
Q: java中boolean类型的大小?
A: bool类型无空间大小(来自java编程思想)
根据http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html官方文档的描述:
boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its “size” isn’t something that’s precisely defined.
布尔类型:布尔数据类型只有两个可能的值:真和假。使用此数据类型为跟踪真/假条件的简单标记。这种数据类型就表示这一点信息,但是它的“大小”并不是精确定义的。
A: bool类型无空间大小(来自java编程思想)
根据http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html官方文档的描述:
boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its “size” isn’t something that’s precisely defined.
布尔类型:布尔数据类型只有两个可能的值:真和假。使用此数据类型为跟踪真/假条件的简单标记。这种数据类型就表示这一点信息,但是它的“大小”并不是精确定义的。
Q: 不可变类型有哪几种?
A: short、int、long、float、double、byte、char、boolean的 包装类型, 以及String,这9种属于不可变类型。(这只是部分,还有其他的不可变类)
不可变类型概念:里面的值的内容变了,对应的内存地址也会变化。
A: short、int、long、float、double、byte、char、boolean的 包装类型, 以及String,这9种属于不可变类型。(这只是部分,还有其他的不可变类)
不可变类型概念:里面的值的内容变了,对应的内存地址也会变化。
Q:类里的成员如果是基本数据类型, 那么会自动初始化吗?初始化成什么?
A: 会, 初始化为0或者false。
A: 会, 初始化为0或者false。
Q: java中局部变量没初始化,会报错吗?
A: 会
A: 会
Q: 什么时候不能隐式转化?
A: 如果会丢失精度,则不能隐式转化,比如long转int或者double转long这种。 编译器会强制我们使用强制转化
A: 如果会丢失精度,则不能隐式转化,比如long转int或者double转long这种。 编译器会强制我们使用强制转化
Q:下面哪个是错误的?
A: 选项2是错误的。因为2个byte类型变量相加的时候,会自动转换成int类型,右边的int类型赋值给short类型便会报错。
A: 选项2是错误的。因为2个byte类型变量相加的时候,会自动转换成int类型,右边的int类型赋值给short类型便会报错。
byte b1 = 5;
short s2 = b1;
byte b1 = 5;
byte b2 = 1;
short s2 = b1+b2;
byte b1 = 5;
byte b2 = 1;
int s2 = b1+b2;
byte b2 = 1;
int s2 = b1+b2;
Q:float f = 1.1; 有错吗?
A:float浮点后面要加f。加f就代表是float类型,否则就是double类型浮点。
A:float浮点后面要加f。加f就代表是float类型,否则就是double类型浮点。
Q:整型包装类型的比较,下面输出啥?
Integer num1 = 128,num2 = 128;
System.out.println(num1==num2);
A:输出false。Integer常量池边界问题。值的范围在-128~127的时候Integer可以直接用==比较大小,但是超出这个范围时,==就不管用了,要用equals。
Integer num1 = 128,num2 = 128;
System.out.println(num1==num2);
A:输出false。Integer常量池边界问题。值的范围在-128~127的时候Integer可以直接用==比较大小,但是超出这个范围时,==就不管用了,要用equals。
Q: java的数组一定需要我们手动初始化吗?
A: 不需要,数组元素会自动初始化为null或者0或者false。
A: 不需要,数组元素会自动初始化为null或者0或者false。
Q: 浮点数相等的比较方式
A:相等的话要像这样: if(Math.abs(a-b))<1E-6F)
另外,如果用浮点的a==b或者a!=b做while循环退出判断,可能会导致死循环
A:相等的话要像这样: if(Math.abs(a-b))<1E-6F)
另外,如果用浮点的a==b或者a!=b做while循环退出判断,可能会导致死循环
0 条评论
下一页