zoukankan      html  css  js  c++  java
  • Java中的构造器与垃圾回收

    构造器

    在我们初始化对象时,如果希望设置一些默认值,那么就可以使用构造器,在Java中,构造器使用和类同名的名字且没有返回值,如下

    class Test{
        private String name;
        Test(String n){
            name = n;
        }
        public String getName(){
            return name;
        }
    }
    
    public class app {
        public static void main(String[] args){
            Test test = new Test("小王");
            String n = test.getName();
            System.out.println(n);
        }
    }
    
    // 小王
    

    并且可以发现这个构造器是在new的时候执行的。如果是继承至某个父类,那么我们可以在子类中调用super来手动执行父类中的构造器。

    class Test{
        private String name;
        Test(String n){
            name = n;
        }
        public String getName(){
            return name;
        }
    }
    
    class Test2 extends Test{
        Test2(String n){
            super(n);
        }
    }
    
    public class app {
        public static void main(String[] args){
            Test2 test = new Test2("老王");
            String n = test.getName();
            System.out.println(n);
        }
    }
    
    // 老王
    

    前面之所以说是手动是因为,就算你不去调用父类的构造器,它还是会被执行,只是它执行的是没有参数的构造器。我们不妨来看看下面这段代码

    class Test{
        Test(){
            System.out.println("Test");
        }
    }
    
    class Test2 extends Test{
        Test2(){
            System.out.println("Test2");
        }
    }
    
    public class app {
        public static void main(String[] args){
            Test2 test = new Test2();
        }
    }
    
    // Test
    // Test2
    

    不竟程序自动调用了父类的构造器,而且还比子类构造器先执行,之所以父类的构造器先执行是有原因的,你想啊,子类往往需要用到父类中的一些变量或方法,如果不先初始化父类中的构造器,那么肯定就会出现一些问题。

    垃圾回收

    我们知道一个方法,可以无数次的被调用,因此如果没有一个合理的规范,那么每次执行都会加大内存的消耗,而且有些方法执行完毕以后就没有任何意义了,因此一些语言中加入了垃圾回收,对于一些没有用处的进行回收,当然垃圾回收不仅仅针对方法。

    但是话说回来你也不能乱回收对吧,得有一个规范,而这个规范就是,如果一个对象没有被引用,或被设置成null,又或者当前对象被其他对象所覆盖,那么它就会变成垃圾,会被垃圾收集器所回收。

  • 相关阅读:
    查看.NET Core源代码通过Autofac实现依赖注入到Controller属性
    序列化二叉树
    把二叉树打印成多行
    按之字形顺序打印二叉树
    对称的二叉树
    JDK源码阅读顺序
    二叉树的下一个结点
    删除链表中重复的结点
    链表中环的入口结点
    字符流中第一个不重复的字符
  • 原文地址:https://www.cnblogs.com/pssp/p/6305721.html
Copyright © 2011-2022 走看看