zoukankan      html  css  js  c++  java
  • Java课堂疑问解答与思考3

    一、

    两对整数明明完全一样,为何一个输出true,一个输出false

     

    答:

    整数在小于127时都可以用常量池,因此第一次比较的的地址是取自同一个地址的数字,而第二次比较的数是创建了两个不同地址的对象,所以第一次比较的地址相同,第二次不同。

     二、

    Integer类的装箱和拆箱到底是怎样实现的?

    答:

    下面是代码

    public class BoxAndUnbox {
          public static void main(String[] args)

        {
          int value=100;

          Integer obj=value; //装箱

        int result=obj*2; //拆箱

          System.out.println(result);

          System.out.println(obj); 

      }

    }

    运行结果

    在装箱的时候自动调用的是IntegervalueOf(int)方法。而在拆箱的时候自动调用的是IntegerintValue方法。因此可以用一句话总结装箱和拆箱的实现过程:装箱过程是通过调用包装器的valueOf方法实现的,而拆箱过程是通过调用包装器的 intValue方法实现的.

    三、

    静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?请编写代码验证你的想法。

    答:

    源代码:

    class Myclass

    {

    int i=100;    //实例变量

    static public void output(){

    Myclass a=new Myclass();   //关键点

    System.out.println(a.i);

    }

    }

    public class Test3 {

           public static void main(String[] args){

            Myclass g=new Myclass();

            g.output();

           }

    }

    运行结果;

    静态字段/实例字段可以在声明时同时赋初值,也可以在静态/实例代码块中初始化,或者在构造方法中赋初值。

    字段的初始化按位置顺序执行,故后续位置的字段的初始化,可以使用之前初始化的字段。但如果在字段初始化中使用后续的字段,则会产生编译错误。

    常量字段只能被赋值一次,否则会产生编译错误。在创建第一个实例或引用任何静态成员之前,将自动调用静态初始化代码块,执行静态初始化;在创建第一个实例时,将自动调用实例初始化代码块,执行实例初始化。类的静态初始化在给定的程序中至多执行一次,对象的实例初始化则每次创建对象都要执行。

     

  • 相关阅读:
    大三小学期 Android开发的一些经验
    高德地图显示不出来
    imageview无法显示图片:java.lang.RuntimeException: Canvas: trying to draw too large(281520000bytes) bitmap
    设置ImageView显示的图片铺满全屏
    大三小学期 web前端开发的一些小经验
    HTML5----响应式(自适应)网页设计
    div闪一下就消失
    登录界面输入判断为空的bug
    Solr之.net操作
    Java Web之路(一)Servlet
  • 原文地址:https://www.cnblogs.com/2016-zck/p/7695613.html
Copyright © 2011-2022 走看看