2018.9.16学习笔记(构造方法和他的重载,static)
1 构造方法
构造方法不能创建对象调用,比如
Person p = new Person();
p.Person();是不对的。
2 构造方法的重载
构造方法的重载和方法重载差不多,都是看形式参数列表,分为空参构造和有参构造。
注意:当我们不给构造方法,系统会默认空参构造。但是我们如果给了,系统将不给了。这句话有必要深究一下,当没有构造方法时,系统默认给了一个,所以Person p = new Person()可以执行,当我们自己写了一个有参的构造,执行Person p = new Person()就会出错,因为系统不给我们空参的构造方法了。所以建议自己写有参和无参的。
说道有参构造,还会出现一种情况,比方说Person类完整的成员变量有2个,name和age,那么我们给三个构造函数,第一个可以设置name和age,第二个设置name,第三个设置age。这样他在初始化怎么调用呢?其实就是你初始化哪个参数的,就调用哪个。
3 对象创建的内存过程
4 static静态
静态的概念一直是我自己的盲点,这里从程序运行内存角度来说,如上图所示在方法区,分为静态区和动态区,那么我们修饰的静态方法比如main()还有静态变量比如country放在静态区,当我们第一次给country赋值之后,接下来创建的对象中的country都是第一次福的值,这样做的作用就是节省了代码,country属性都是中国,就不需要每次都给属性指定中国这个值了。
static的核心概念就是共享,被声明的静态成员变量每一个对象都可以访问它,他在java.class加载到方法区时就被执行了,所以那些static代码块只执行一次,并且在加载到方法区的时候就执行了。
为了让概念更清晰一些:
1.static修饰成员变量:相当于这个变量放在共享区域,每个对象都可以访问,一般不用。
2.static修饰成员方法:不用创建对象去使用方法,直接类名.方法即可。
3.static修饰代码块:代码块中的代码在加载时就执行,随着类加载而加载,自动执行,而静态方法需要类名.方法。
应用场景:比如某个学生都有同一个班级编号,那么这个编号就因该是静态修饰。
5 main方法解释
6 java说明书的制作和JDK文档使用
java制作说明书,首先需要在java文件中写文档注释,之后使用javadoc命名编译java文件即可。
Math类的使用:打开Math类之后,发现左边的修饰都是static,当一个类中所有方法都是静态的,就会自动隐藏它的构造方法,目的在于防止创建这个类的对象。 打开jdk中的src.zip找到Math的源码会发现它的构造方法是私有的。