java学习第七天——构造方法与静态static笔记

构造方法
构造方法不能够创建对象,且构造方法的主要作用是完成对象的初始化工作(如果写的类中没有构造函数,那么编译器会默认加上一个无参数且方法体为空的构造函数)。它能够把定义对象时的参数传给对象的域。意思就是当创建一个对象时,这个对象就被初始化。若此构造函数不为空,则会字创建对象时就执行构造函数里面的代码。

class HelloWorld {
Person p=new Person();//在创建对象的时候,系统就已经帮助我们调用了构造方法
//p.Person(); //构造方法是不能够调用的

class Person {
private String name;
private int age;
public Person() {
System.out.println(“Hello World”);
//return; //构造方法也是有return的
}
}

若是类中已经有了有参的构造方法,那么就不会再有无参的构造方法,系统将不会再创建一个无参的构造方法。用以下的代码进行解析:

java学习第七天——构造方法与静态static笔记
这段代码的运行结果为java学习第七天——构造方法与静态static笔记
现在我将无参的构造方法注释掉:
java学习第七天——构造方法与静态static笔记
运行时便出现了错误java学习第七天——构造方法与静态static笔记
因为this()代表的时无参的构造方法,而之前我们说了,当已经有了有参的构造方法时,将不会自动生成无参的构造方法。

静态static
java学习第七天——构造方法与静态static笔记
运行截图如下java学习第七天——构造方法与静态static笔记
现在我将第8行的p2.country = “日本”注释掉,并且再15行的String country的前面加上static关键字,如下:java学习第七天——构造方法与静态static笔记
运行结果与之前的一样,,由此我们可以知道static可以让数据被共享。
Static的特点:

  1. 随着类的加载而加载,也就是当你的类加载是,静态区的数据也会跟着加载;
  2. 优先于对象存在,至于这个的原因就是因为第一个特点,他是随着类加载而加载的,自然是比对象优先存在;
  3. 被类的的所有对象共享,这是为了节省内存;
  4. 可以通过类名调用,示例如下:
    java学习第七天——构造方法与静态static笔记
    运行结果如下java学习第七天——构造方法与静态static笔记

静态变量与成员变量之间的不同(静态变量也叫做类变量,成员变量也叫做对象变量):
1.所属不同,静态变量属于类,成员变量属于对象;
2.存储位置不同,静态变量存储在静态区,成员变量存储在堆内存中;
3.内存中的出现时间不同,静态变量是随着类的加载而加载,随着类的消失而消失。成员变量是随着对象的创建而存在,随着对象的消失而消失;
4.调用不同,静态变量可以直接通过类名来调用静态变量,成员变量则必须通过对象来调用;

Main方法的格式以及其解析:

java学习第七天——构造方法与静态static笔记
如果一个类的所有方法都是静态的,我们需要多做一步,就是在构造方法前加上private,也就是私有构造方法,目的是不让其他的类创建本类的对象,直接用类名.调用即可。