构造⽅法静态Static 构造⽅法:
概述:
1.构造⽅法:构造函数,构造器,Constructor
2.作⽤:⽤于给对象中的成员变量赋值。
3.构造⽅法的格式:
修饰符类名{
⽅法体
}
4.构造⽅法格式的说明:
1.构造⽅法的⽅法名称,必须和类名⼀模⼀样,连⼤⼩写都⼀样。
2.构造⽅法没有返回值类型,连void也没有
3.构造⽅法没有return语句,如果⼀定需要return语句,就写⼀个return
构造⽅法其他说明:
构造⽅法不需要⼿动调⽤,由JVM虚拟机在  创建对象的时候⾃动调⽤
对象本⾝不能调⽤构造⽅法
构造⽅法只能调⽤⼀次
class Demo01_构造⽅法 {
public static void main(String[] args) {
Person p = new Person();
System.out.Name() + "..." + p.getAge());
//Person p2 = new Person();这是创建第⼆个对象;同⼀个对象只能调⽤⼀次构造⽅法
//p.Person();编译报错,构造⽅法不能通过对象名称⼿动调⽤
}
}
class Person {
private String name;
static修饰的变量
private int age;
public Person() {
name = "张三疯";
age = 123;
}
public void setName(String name) {
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
构造⽅法的注意事项:构造⽅法分为有参构造⽅法和⽆参构造⽅法
如果类中没有⼿动的写构造⽅法,那么系统会默认提供⼀个构造⽅法(⽆参构造⽅法)。如果类中已经⼿动写了构造⽅法,那么系统不会再默认提供构造⽅法了。
构造⽅法可以重载
class Demo02_构造⽅法的注意事项 {
public static void main(String[] args) {
Person p1 = new Person("张三疯", 123);
System.out.Name() + "..." + p1.getAge());
Person p2 = new Person("李四光", 124);
System.out.Name() + "..." + p2.getAge());
Person p3 = new Person();
System.out.Name() + "..." + p3.getAge());
}
}
class Person {
private String name;
private int age;
/*
public Person() {
System.out.println("⾃⼰定义的空参构造执⾏了");
}
*/
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
构造⽅法和set⽅法的⽐较:
1.构造⽅法和set⽅法都是⽤来给成员变量赋值。
区别:构造⽅法是在创建对象的同时,由jvm⾃动调⽤执⾏,⽤于给属性赋值,只能执⾏⼀次。
Set⽅法是在创建对象之后,由对象⼿动调⽤,⽤于给属性修改值,可以调⽤多次。
静态:
静态的作⽤就是将程序中多次要⽤的变量⽤static修饰,这样这个变量就成了⼀个常量,以后要使⽤这个变量时,直接调⽤被staitc修饰的那个就好了,这样⼦节省了内存空间,⽽且便于修改,维护。
静态的加载时机:随着类被加载到内存中去,就直接在静态区开辟了存储静态变量的内存空间
静态变量优先于对象⽽存在。
静态变量被所有该类对象所共享。
静态变量可以被类名直接打点调⽤,不需要创建对象
静态⽅法:在⽅法的声明上,加上static关键字的⽅法,就是静态⽅法。
静态⽅法不能访问⾮静态的变量:原因:静态⽅法在静态⽅法区,⾮静态变量在普通变量区,静态⽅法区⾥不到⾮静态变量,所以不能访问。同理,静态⽅法不能访问⾮静态⽅法。
静态变量和⾮静态变量的区别:
概念上,所属不同:
⾮静态变量属于对象
静态变量属于类,类对象。
内存空间不同,存储位置不同:
⾮静态变量属于对象,所以存储在堆内存中,静态变量属于类,存储在⽅法区的静态区中。
内存时间不同,声明周期不同:
⾮静态变量属于周期,所以⽣命周期和对象相同,随着对象的创建⽽存在,随着对象的消失⽽消失。
静态变量属于类,所以⽣命周期和类相同,随着类的加载⽽存在,随着类的消失⽽消失。
访问⽅式不同:⾮静态变量只能通过对象来访问,静态变量可以通过类名打点来调⽤,也可以通过对象来调⽤。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。