金现代面试题—— i++,++i, &&,&|自动装箱和自动拆箱(int,byte,float等)|取int等基本类型的最大值

版权声明:已开启版权声明 https://blog.csdn.net/M_Kerry/article/details/81076895

本文目录

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 的区别

  i++,先赋值,后自增
  ++i ,先自增,后赋值(或比较)

②&&和&的区别

&&前面结果 如果是 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);
}

结果又会是怎样?

答案: 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种)
都有对应的封装类类型

类型名称 关键字 封装类 大小 取值范围
字节型 byte Byte 8位 -27 ~27 -1
短整型 short Short 16位 -215~215-1
整形 int Integer 32位 -231~231-1
长整型 long Long 64位 -263~263-1
浮点型 float Float 32位 3.4e-38~3.4e+38
双精度 double Double 64位 1.7e-38~1.7e+38
字符型 char Character 16位 ‘\u0000’~’\uFFFF’
布尔型 boolean Boolean 1位 true/false

装箱和拆箱

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

//基本类型转换成封装类型
int i=2;
//装箱

Integer it=new Integer(i)

//自动装箱
Integer it2=i;

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

Integer it = new Integer(5);

        //拆箱
        int i2 = it.intValue();

        //自动拆箱
        int i3 = it;

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

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

 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.通过封装类获取其基本类型的最大值

//   整型
        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

猜你喜欢

转载自blog.csdn.net/M_Kerry/article/details/81076895
今日推荐