• 2020.10.10收获(动手动脑三)


    1、这两种方式定义的变量是一样的吗?

    早期经常这样定义变量
            int value=100;
    前面的示例中这样定义变量
            MyClass obj = new MyClass();

    这两种变量是不一样的。

    前者是原始数据类型,例如int,float之类的变量,当声明一个原始数据类型的变量时,实际上并没有创建一个对象,此变量=null。

    后者是引用类型变量,“引用”一个对象的变量称为“引用类型”的变量,定义一个原始类型的变量时,会马上给其分配内存,而对象变量的初始化中,该变量若不引用一个真实的对象,则必须声明为null。而且引用对象后的对象变量,且如果不再使用此变量,将会回收类定义的对象所占用的内存。

     

    2、以下代码为何无法通过编译?哪儿出错了?

     

     注:如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。

    3、如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,谁说了算?请依据代码的输出结果,自行总结Java字段初始化的规律。

    复制代码
    public class InitializeBlockDemo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            
            InitializeBlockClass obj=new InitializeBlockClass();
            System.out.println(obj.field);
            
            obj=new InitializeBlockClass(300);
            System.out.println(obj.field);
        }
    
    }
    
    class InitializeBlockClass{
        //下面这句在初始化块之前与之后,会影响到field字段的初始值
        //public int field=100;
        
        {
            field=200;
        }
        public int field=100;
        public InitializeBlockClass(int value){
            this.field=value;
        }
        public InitializeBlockClass(){
            
        }
    }
    复制代码

     

    • 由结果可以看出,先调用构造方法,然后是字段的初始值,最后是初始化块,按着代码的顺序。执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。
    • 在Java编程中,字段的初始化顺序是
    1. 类加载时直接初始化静态字段;

    2. 类加载时调用静态方法初始化静态字段;

    3. 实例化对象时,在调用构造函数之前代码块中初始化字段;

    4. 实例化对象时,在调用构造函数之时初始化字段;

    4、静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

    复制代码
    public class stat {
        int a = 3;
        static int b = 4;
    
        public static void ceshiyi() {
            System.out.println("非静态变量a=" + new stat().a);
            System.out.println("静态变量b=" + b);
        }
    
        public static void main(String[] args) {
            stat.ceshiyi();
            stat i = new stat();
            System.out.println("a=" + i.a);
    
        }
    }
    复制代码

     

     

  • 相关阅读:
    字符编码与函数
    linux打印彩色字
    企业级docker仓库Harbor部署
    PyPI使用国内源
    CentOS 7.2 升级内核支持 Docker overlay 网络模式
    购物车2
    购物车
    定制 cobbler TITLE 信息
    06.密码错误3次锁定
    05.for循环语句
  • 原文地址:https://www.cnblogs.com/ltw222/p/13797300.html
Copyright © 2020-2023  润新知