java构造方法注意项总结

1、构造方法定义

快捷键 :Alt+insert
一个类中定义的方法如果同时满足以下三个条件,该方法称为构造方法

(1)方法名与类名相同
(2)在方法名的前面没有返回值类型的声明
(3)在方法中不能使用return语句返回一个值,但是可以单独写return语句来作为方法的结束

package test;

public class test1 { 
    public test1() {
        System.out.println("无参数构造方法被调用");
    }
}
package test;

public class test2 {
    public static void main(String[] args) {
        test1 t1=new test1();
    }
}

有参的构造方法实现对属性的赋值

package test;

public class test1 {
    String breakfast;

    public test1(String a) {
        breakfast = a;
    }

    public void eat() {
        System.out.println("今天早上吃" + breakfast);
    }
}
package test;

public class test2 {
    public static void main(String[] args) {
        test1 t1 = new test1("面包和牛奶");
        t1.eat();
    }

}

2、构造方法重载
构造方法也可以重载,在一个类中可以定义多个构造方法,只要每个构造方法的参数类型或参数个数不同即可。在创建对象时,可以通过调用不同的构造方法来为不同的属性进行赋值

package test;

public class test1 {
    String breakfast;
    int milk;

    public test1(String a, int b) {
        breakfast = a;
        milk = b;
    }

    public test1(String a) {
        breakfast = a;
    }

    public void eat() {
        System.out.println("今天早上吃" + breakfast + ",牛奶喝了" + milk + "ml");
    }
}

package test;

public class test2 {
    public static void main(String[] args) {
        test1 t1 = new test1("面包和牛奶");
        test1 t2 = new test1("面包和牛奶", 200);
        t1.eat();
        t2.eat();
    }

}

在Java中的每个类都至少有一个构造方法,如果在一个类中没有 定义构造方法,系统会自动为这个类创建一个默认的构造方法,这个默认 的构造方法没有参数,在其方法体中没有任何代码,即什么也不做

package test;
public class test {
    public static void main(String[] args) {
        test1 person = new test1();
    }

}

package test;

public class test1 {
    public test1() {
    }
}

成员变量和局部变量的名称冲突,在方法中将无法访问成员变量
为了解决这个问题,Java中提供了一个关键字this来指代当前对象,用于在方法中访问对象的其它成员

package test;

public class test1 {
    String breakfast;
    int milk;
	//测试用例test1_1
    public test1(int milk) {//访问类的成员变量
        this.milk = milk;
    }

    public test1() {
        System.out.println("eat");
    }
	//测试用例test1_2
    public test1(String breakfast) {  //构造方法(注意 不能在普通成员方法使用  必须在第一行  不能相互调用)
        this();
        this.breakfast = breakfast;
    }

    public void eating() {
        System.out.println("Have breakfast every day");
    }
	//测试用例test1_3
    public void eat() {  //访问类的成员方法
        this.eating();
        int milk=200;
        System.out.println("今天早上吃" + breakfast + ",牛奶喝了" + this.milk + "ml");
        System.out.println("今天早上吃" + breakfast + ",牛奶喝了" + milk + "ml");
    }
}
package test;

public class test1_1 {
    public static void main(String[] args) {
        test1 t1 = new test1();
    }
}

package test;

public class test1_2 {
    public static void main(String[] args) {
        test1 t1=new test1("牛奶面包");
        test1 t2=new test1();
        t1.eating();
        t2.eating();
    }
}

package test;

public class test1_3 {
    public static void main(String[] args) {
        test1 t1=new test1("面包牛奶");
        t1.eat();
    }
}

垃圾回收
1、一个对象在成为垃圾后会暂时地保留在内存中,当这样的垃圾堆积到一定程度时, Java虚拟机就会启动垃圾回收器将这些垃圾对象从内存中释放,从而使程序获得更 多可用的内存空间。
2、除了等待Java虚拟机进行自动垃圾回收外,还可以通过调用System.gc()方法来通知 Java虚拟机立即进行垃圾回收。
3、当一个对象在内存中被释放时,它的finalize()方法会被自动调用,因此可以在类中通 过定义finalize()方法来观察对象何时被释放。
4、一个对象在成为垃圾后会暂时地保留在内存中,当这样的垃圾堆积到一定程度时,Java虚拟机就会启动垃圾回收器将这些垃圾对象从内存中释放,从而使程序获得更多可用的内存空间。

package test;

public class test1 {
    @Override
        protected void finalize() throws Throwable{
            System.out.println("垃圾回收");
        }

    public static void main(String[] args) {
            test1 t1 = new test1();
            test1 t2 = new test1();
            t1=null;
            t2=null;
            System.gc();
            int i;
            for (i=1;i<100;i++){

            }
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

侬本多情。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值