码迷,mamicode.com
首页 > 编程语言 > 详细

java中自动插入一个默认的构造函数,这到底怎么回事?

时间:2018-09-22 19:47:44      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:必须   col   targe   nload   插入   tar   code   java编译   html   

1.2 当没有任何构造函数,java编译器,会插入一个默认的构造函数   (视频下载) (全部书籍)

见下面的例子:

本章源码

class Line {
    double x = 0.02;
    double y;
}

public class Test {
    public static void main(String[] args) {
        Line c = new Line();
        System.out.println(c.x);
        System.out.println(c.y);

    }
}

结果:

0.02
0.0

编译器会把上面的代码先变成如下的形式,注意: 插入一个缺省的构造函数。里面什么也没干。

 

本章源码

class Circle1 {
    double x = 0.02;
    double y;
    public Circle1(){
    }

}

public class Test {
    public static void main(String[] args) {
        Circle1 c = new Circle1();
        System.out.println(c.x);
        System.out.println(c.y);

    }
}

结果:

0.02
0.0

解释一下上面的例子@马克-to-win:实验表明:最开始x=0,且y=0,后来执行构造函数之前,系统先用double x=0.02; double y=0;赋值, 之后再用构造函数的方法最后赋值。如构造函数中什么都没做就用系统开始的赋值。 

类其中的变量为final时的用法:  (视频下载) (全部书籍)

类当中final变量没有初始缺省值,必须在构造函数中赋值或直接当时赋值。否则报错。

public class Test {
    final int i;
    Test(){
        i=3;
    }
    public static void main(final String[] args) {
        Test t=new Test();
        System.out.println("i = " + t.i);
    }
}

结果:

i = 3


或者
public class Test {
    final int i=9;
    public static void main(final String[] args) {
        Test t=new Test();
        System.out.println("i = " + t.i);
    }
}
结果:
i = 9
详情请见:http://www.mark-to-win.com/index.html?content=JavaBeginner/javaUrl.html&chapter=JavaBeginner/JavaBeginner2_web.html#InsertDefaultConstructor

java中自动插入一个默认的构造函数,这到底怎么回事?

标签:必须   col   targe   nload   插入   tar   code   java编译   html   

原文地址:https://www.cnblogs.com/mark-to-win/p/9690785.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!