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