Java的构造方法,静态变量与静态方法
程序员文章站
2024-03-12 12:33:44
...
一.Java的构造方法
1.定义
就是将对像的属性(成员变量)进行初始化的方法。
2.写法
1.方法名与类名完全相同
2.没有返回值类型(比如int String,void也不写)
3.没有返回值(没有return)
3.代码
public class Demo01 {
public static void main(String[] args) {
//如果没有自己定义无参构造方法的话,系统会有默认的无参方法
//这里最好在Person类中自己定义无参方法,这样避免错误
//这个是调用无参方法
Person p = new Person();
p.sayHi();
//有参的构造方法
//函数的重载 参数不同(参数顺序 参数个数 参数类型)
//切记 参数的名字不同 不是函数的重载
//构造方法 也符合函数的重载
Person p2=new Person("王五", 100);
p2.sayHi();
}
}
class Person{
String name = "李四"; //名字
int age =28 ; //年龄
//无参数的构造方法
public Person() {
}
//写一个有参数的构造法
public Person(String name,int age) {
//给对象的成员变量赋值
this.name=name;
this.age=age;
}
public void sayHi() {
System.out.println(name+"--"+age);
}
}
4.注意事项
1.如果你没写任何构造方法,那么系统会提供一个无参构造方法
2.如果你写了有参构造方法,这时系统就不在为你提供无参的构造方法
3.如果你想写有参构造方法,建议你把无参的构造方法也写上
二.Java的静态变量(类变量)
1.定义:被static修饰的成员变量
2.静态变量调用
1.可以使用对象去调用(但是不推荐)
2.静态变量用类名去调用(静态变量不依赖对象 因为静态变量被加载的时候 对象还没有被创建)
3.静态变量的特点:
* 1.随着类的加载而加载
* 2.创建于优先于对象的存在
* 3.是类创建出来对象共享的部分
* 4.可以使用类名去调用
4.优点:节省内存空间
5.静态变量与成员变量的区别
- 1.所属不同
- 成员变量:属于对象 又叫对象变量(实例变量)
- 静态变量:属于类的 又叫类变量
- 2.内存中的存储位置不同
- 成员变量:堆内存中
- 静态变量:存储在 方法区中的静态区
- 3.加载到内存中的时机不同(声明周期不同)
- 成员变量:随着对象的创建而创建
- 静态变量:随着类的加载而存在
- 4.调用方法不同
- 成员变量:只能使用 对象去调用
- 静态变量:可以用对象去调用 但是一般用类名去调用
6.内存表现
7.代码表现
public class Demo04 {
public static void main(String[] args) {
Girl g1=new Girl();
g1.name = "夏小慧";
Girl.country="中国";
g1.sayHi();
Girl g2=new Girl();
g2.name ="牧屿秋";
g2.sayHi();
Girl g3=new Girl();
g2.name ="萧雨";
g2.country="中国1";
g2.sayHi();
}
}
class Girl{
String name; //姓名
static String country; //国籍
public Girl() {
}
public void sayHi() {
System.out.println(name+"---"+country);
}
}
三.Java的静态方法(类方法)
1.静态方法的调用
所定义的类名 . 所要调用该类中的方法
2.代码
public class Dmeo05 {
public static void main(String[] args) {
Man m1=new Man();
m1.sayHi1();
// 静态方法的调用
//使用 类名.方法 去调用
Man.sayHi2();
}
}
class Man{
int num1;
static int num2;
//在成员方法中可以使用成员变量和静态变量
public void sayHi1() {
System.out.println(this.num1);
System.out.println(Man.num2);
}
//生明一個 静态成員方法
//num1是成员变量
//num2是静态变量
//简单记:静态方法中只能使用静态变量 和 静态方法
public static void sayHi2() {
System.out.println(num2);
}
}