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();

           }

    }

    运行结果;

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

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

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

     

  • 相关阅读:
    Eclipse里编辑代码,进度条出现“Remote System Explorer Operation”解决方法
    Fiddler快速入门
    十分钟学会 Fiddler
    网络抓包工具 wireshark 入门教程
    wireshark使用教程
    Apple iOS MDM开发流程
    input file 文件上传,js控制上传文件的大小和格式
    读取注册表获取Windows系统XP/7/8/10类型(使用wcscmp比较wchar[]内容)
    QT 序列化/串行化/对象持久化
    VC 使用msxml6.dll动态链接库中的函数读写XML文件
  • 原文地址:https://www.cnblogs.com/2016-zck/p/7695613.html
Copyright © 2011-2022 走看看