我是靠谱客的博主 迷路康乃馨,这篇文章主要介绍金现代面试题—— i++,++i, &&,&|自动装箱和自动拆箱(int,byte,float等)|取int等基本类型的最大值,现在分享给大家,希望可以做个参考。

      • 本文目录
      • 1.看程序运行,算运行结果
      • 2.问答——解释一下自动装箱和自动拆箱
      • 3.对byte,short,float.double 进行自动装箱和自动拆箱
      • 4.通过封装类获取其基本类型的最大值

本文目录

1.看程序运行,算运行结果

public static void main(String[] args){
int i=1,j=1;
if(i++==2&&++j==2){
i=7;
}
System.out.println(“i=”+i+”,j=”+j);
}
请给出 输出结果:
正解:i=2,j=1

这个题出的很巧妙,知识点如下

①i++和++i 的区别

复制代码
1
2
3
i++,先赋值,后自增 ++i ,先自增,后赋值(或比较)

②&&和&的区别

复制代码
1
2
3
&&前面结果 如果是 false,后面的语句将不再执行 &则无论前面结果怎样,都会执行后面的语句

③如果这道题改成

public static void main(String[] args){
int i=1,j=1;
int a=i++;
//此时 i++已经执行完
if( i==2&&++j==2){
i=7;
}
System.out.println(“i=”+i+”,j=”+j);
}

复制代码
1
2
结果又会是怎样?

答案: i=7,j=2

这里写图片描述

总结: 透过现象看本质

int i=1;
if( i++==2) false
先比较:执行完 1==2 (1等于2)结果为false 之后
再自增: i++,i的值此时为 2


int i=1;
a=i++;
if(i==2) true
先赋值:a=i ,值为1
再自增:i=2 ,结果为true

2.问答——解释一下自动装箱和自动拆箱

1,int和integer有什么区别
即基本类型和其封装类的关系

答:java所有的基本类型(8种)
都有对应的封装类类型

类型名称关键字封装类大小取值范围
字节型byteByte8位-27 ~27 -1
短整型shortShort16位-215~215-1
整形intInteger32位-231~231-1
长整型longLong64位-263~263-1
浮点型floatFloat32位3.4e-38~3.4e+38
双精度doubleDouble64位1.7e-38~1.7e+38
字符型charCharacter16位‘u0000’~’uFFFF’
布尔型booleanBoolean1位true/false

装箱和拆箱

装箱:把基本类型转换为封装类类型,即将栈中的数据封装成对象存放到堆中的过程。
这里写图片描述
自动装箱:不需要构造方法,直接用 = 自动把基本类型转换为封装类类型

复制代码
1
2
3
4
5
6
7
8
//基本类型转换成封装类型 int i=2; //装箱 Integer it=new Integer(i) //自动装箱 Integer it2=i;

拆箱:把封装类类型转换为基本类型,即将堆中的数据值存放到栈中的过程。
这里写图片描述
自动拆箱:不需要调用Integer的intValue方法,直接用 = 自动把封装类类型转换为基本类型

复制代码
1
2
3
4
5
6
7
Integer it = new Integer(5); //拆箱 int i2 = it.intValue(); //自动拆箱 int i3 = it;

总结:自动装、拆箱就是简化了基本类型和其封装类类型的转换。

3.对byte,short,float.double 进行自动装箱和自动拆箱

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void main(String[] args) { // 1. 对byte,short,float,double进行自动拆箱和自动装箱 byte b = 1; short s = 2; float f = 3.14f; double d = 6.18; // 自动装箱 Byte b1 = b; Short s1 = s; Float f1 = f; Double d1 = d; // 自动拆箱 b = b1; s = s1; f = f1; d = d1; }

4.通过封装类获取其基本类型的最大值

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 整型 System.out.println("byte的最大值是:"+Byte.MAX_VALUE); System.out.println("short的最大值是:"+Short.MAX_VALUE); System.out.println("int的最大值是:"+Integer.MAX_VALUE); System.out.println("long的最大值是:"+Long.MAX_VALUE); //浮点型 System.out.println("float的最大值是:"+Float.MAX_VALUE); System.out.println("double的最大值是:"+Double.MAX_VALUE); //字符型 System.out.println("char的最大值是:"+Character.MAX_VALUE); //注,boolean 布尔类型没有最大值。 >运行结果 byte的最大值是:127 short的最大值是:32767 int的最大值是:2147483647 long的最大值是:9223372036854775807 float的最大值是:3.4028235E38 double的最大值是:1.7976931348623157E308 char的最大值是:

char源码
char 源码部分

double源码

这里写图片描述

吃一堑长一智
end

最后

以上就是迷路康乃馨最近收集整理的关于金现代面试题—— i++,++i, &&,&|自动装箱和自动拆箱(int,byte,float等)|取int等基本类型的最大值的全部内容,更多相关金现代面试题——内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部