Java 易错细节题

版权声明:欢迎访问ssm个人搭建博客 https://www.yanzhaochang.top 所有版权归静待花开所有 https://blog.csdn.net/qq_42081709/article/details/90234547

1 下列代码描述正确的是

    

    A: 代码可以编译运行,输出“AB.AB”。

    B: 代码可以编译运行,输出“A.A”。

    C: 代码可以编译运行,输出“AB.B”。

    D: 代码可以编译运行,输出“A.B”。

 

    答案:C

    解析:   

        引用a指向对象A

        引用b指向对象B

        引用x指向对象A

         引用y指向对象B

        在operate方法中,引用x指向的对象A被连接了B,对象A也就被改变为AB

        然后又把引用y指向了x所指向的对象地址,也就是此时引用a,x,y指向同一个对象AB

        而引用b没有发生任何变化,依旧指向对象B。

        Java 中参数的传递,都是值传递,并不是引用传递,

    图解:

        

2 下列描述正确的是

        

        A: 输出结果 :13

       B: 语句:b6=b4+b5编译出错

       C: 语句:b3=b1+b2编译出错

       D: 运行期抛出异常

 

       答案:C

       解析:

            被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;

            在编译时就已经变为b6=10了而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。

            Java中的byte,short,char进行计算时都会提升为int类型。

3 下列哪种说法是正确的

    A: 实例方法可直接调用超类的实例方法

    B: 实例方法可直接调用超类的类方法

    C:实例方法可直接调用其他类的实例方法

    D: 实例方法可直接调用本类的类方法

 

    答案:D

    解析:

        类方法就是静态方法。其它的就是实例方法

        实例方法可以对当前对象的实例变量进行操作,也可以对类变量进行操作,但类方法不能访问实例变量。实例方法必须由实例对象来调用,而类方法除了可由实例对象调用外,还可以由类名直接调用。

        另外,在类方法中不能使用 this 或 super。 关于类方法的使用,有如下一些限制:

            1 在类方法中不能引用对象变量。

            2 在类方法中不能使用super、this关键字。

            3 在类方法不能调用类中的对象方法。

        与类方法相比,实例方法几乎没有什么限制:

            1 实例方法可以引用对象变量(这是显然的),也可以引用类变量。

            2 实例方法中可以使用super、this关键字。

            3 实例方法中可以调用类方法。

4 下列描述正确的有哪些

   byte b1=1,b2=2,b3,b6;
   final btye b4=4,b5=6;
   b6=b4+b5;
   b3=(b1+b2);
   System.out.println(b3+b6);

      A: 输出结果:13

      B: 语句:b6=b4+b5编译出错

      C: 语句:b3=b1+b2编译出错

      D: 运行期抛出异常

 

     答案:C

     解析:

        被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了

        而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。

        Java中的byte,short,char进行计算时都会提升为int类型。

5 下列代码输出正确的是

        

    A:505000
    B:0
    C:510050
    D:5050

 

    答案:B

     解析:

        这是因为jvm在处理i = i++时, 会建立一个临时变量来接收i++的的值,然后返回这个临时变量的值,返回的值再被等号左边的变量接收了,这样就是说i虽然自增了但是又被赋值了0,这样输出的结果自然就是0了。
        count = count ++的原理是:
        temp = count;(左count)
        count =count +1;(右count)
        count = temp; 一直为0(左count)

        count = ++count 的原理
        temp= count +1 (右count)
        count = temp (左count)

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_42081709/article/details/90234547