Java入门构造方法、静态变量与静态方法
1.构造方法
构造方法的形式与注意事项
构造方法:对成员变量初始化。
写法:
关键词 类名(){
}
注意:构造方法没有返回值且无返回值位置。
构造方法是系统调用的,每创建一个对象,构造方法只会调用一次。
系统会根据你传入的参数来选择调用构造方法。
类的书写顺序
1.成员变量
2.构造方法
3.set/get方法
4.成员方法
构造函数在代码中的应用
public static void main(String[] args) {
Car c1 = new Car();
c1.sayHi();
Car c2 =new Car("自行车", "红色");
c2.sayHi();
}
}
class Car{
private String name;
private String color;
//无参构造
public Car(){
name = "拖拉机";
color = "黑色";
System.out.println();
}
//有参构造
public Car(String name, String color) {
this.name = name;
this.color = color;
System.out.println();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name =name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public void sayHi() {
System.out.println(name + " " +color);
}
2.静态变量
静态变量(共享变量 被所有对象所共享)
关键词 static(修饰成员变量)
优点:可以节省内存空间。
静态变量的调用
1.可以使用对象.变量名调用(不推荐)。
2.直接使用类名调用(系统推荐)。
更好的区分成员变量和静态变量。
成员变量和静态变量区别
1.调用方式
成员变量:对象调用。
静态变量:对象和类名(推荐)都能调用。
2.在内存中的表现
成员变量:在堆内存中。
静态变量:在方法区的静态区。
3.所属不同
成员变量:成员变量属于对象。
静态变量:静态变量属于类 不依赖对象的创建。
4.生命周期
成员变量:随着对象的创建而创建,随着对象的销毁而销毁。
静态变量:随着类的加载而创建,随着程序的结束而销毁。
注意:类是优先于对象存在的
应用
public static void main(String[] args) {
student student1 = new student();
student1.studnetName = "小明";
student1.studentCity = "南通";
student1.sayHi();
student student2 =new student();
student2.studnetName = "小红";
student2.sayHi();
}
}
class student{
String studnetName;
static String studentCity;
public void sayHi() {
System.out.println(studnetName + " " + studentCity);
}
静态方法
静态变量(类变量)
静态方法(类方法)
静态方法(也是进栈执行)
和静态变量一样被加载到方法区的静态区。
静态方法 也是随着类的加载而加载。
注意:静态方法中不能使用成员变量。
静态方法被加载时可能还没有对象产生。
注意:也不能使用 this关键字。
静态方法的调用
1.使用对象调用(不推荐)。
2.直接使用类名调用(推荐)。
3.成员方法中可以调用成员方法和静态方法。
4.静态方法中不能调用成员方法,但可以调静态方法。
总结:静态的只能使用静态的。
应用
public static void main(String[] args) {
Test.fun2();
}
}
class Test{
int number1 = 10;
static int number2 = 20;
//成员方法中可以使用成员变量
//也可以使用静态变量
public void fun1() {
//本类中调用本类的方法可以省略this或类名
fun2();
System.out.println(number1);
System.out.println(number2);
}
public static void fun2() {
//System.out.println(number1);
System.out.println(number2);
fun3();
}
public static void fun3() {
int a = 10;
System.out.println();
}
}