Java中静态变量与静态方法 初解

构造方法注意事项:

接https://blog.csdn.net/lijock/article/details/80244581

1. 当类中没有提供无参的构造方法的时候

系统在你创建对象时 会自动调用无参的构造方法

这个被调用的无参构造方法是系统本身提供的

2. 如果你只提供了有参的构造方法

那么系统将不再给你提供无参构造方法

建议: 书写类的时候 为了规范化 最好将无参和有参构造方法都写上 

class Car{
    private String name;
    private String description;
    // 无参构造方法
    public Car(){
    this.name = "车名";
    this.description = "描述";
    }
    // 有参构造方法
    public Car(String name,String description){
      this.name = name;
      this.description = description;
     }
}

    静态变量

静态变量: 相当于一个共享的变量 每个对象都能访问到

使用关键词 static修饰

 形如:  static String name;

静态变量也叫类变量 即可以使用对象直接调用 也可以使用类名直接调用

建议使用类名直接调用: 

1. 方便静态变量和成员变量的区分

2. 静态变量与对象无关,生成静态变量时 对象还没有被创建

public class Demo03 {
	public static void main(String[] args) {
		AVGirl girl1 = new AVGirl();
		girl1.name = "苍老师";
		AVGirl.country = "日本";
		girl1.sayHi();
		
		AVGirl girl2 = new AVGirl();
		girl2.name = "小泽老师";
		AVGirl.country = "韩国";
		girl2.sayHi();
	}
}

class AVGirl{
	String name;  // 姓名
	static String country;  // 国籍
		public AVGirl() {
		
	}
	
	public void sayHi() {
		System.out.println(name + ".." + country);
	}
}

 对象加载到内存中的表现步骤:

 1.加载有main方法的类(class文件) 到方法区中

 2.main方法 入栈(创建AVGirl对象)

 3.先把AVGirl.class加载到 方法区中

 4.在堆内存中 开辟空间 创建AVGirl的对象(根据class文件的成员变量写入对象属性)

 5.赋值方法 入栈 赋值完 出栈

 6.main方法执行完毕 出栈

 7.程序结束


静态变量与成员变量的区别:

1.所属不同

静态变量: 属于类的 也叫类变量

成员变量: 所属对象的 也叫对象变量

2.在内存中的位置不同

静态变量: 在方法区的静态区

成员变量: 在堆内存中

3.在内存中的加载时机不同(生命周期不同)

静态变量: 随着类的加载而加载 随着类的销毁(程序结束时)而销毁

成员变量: 随着对象的创建而创建 随着对象的销毁(运行完)而销毁

4.调用方式不同

静态变量: 对象名.静态变量名  或者 类名.静态变量名(推荐)

成员变量: 对象名.成员变量名

    静态方法

main方法 就是静态方法

public static void main(String[] args){ }

静态方法与成员方法:

成员方法中 即可以使用成员变量 也可以使用静态变量

静态方法中只能使用静态变量

静态方法跟静态变量一样 随着类的加载而加载

静态方法的执行和成员方法一样 在栈内存中执行 入栈和出栈

简单记: 静态的只能调用静态的  成员的都可以 

int num1 = 10; // 成员变量
static int num2 =20; // 静态变量
// 成员方法
public void fun1() {
	System.out.println(this.num1);
	System.out.println(num2);
	}
// 静态方法
public static void fun2() {
	//System.out.println(this.num1);
	System.out.println(num2);
		
	// fun1(); --- this.fun1(); 不能调用成员方法 
	fun3();  // 只能调用静态方法
	}
// 静态方法
public static void fun3() {
	System.out.println("666");
	}
解析main函数

public JVM调用main方法的时候 需要最高的权限

static 调用静态方法 是不需要创建对象的

main 不是关键词  当程序运行时

     jvm只会调用并且使用类名调用 一个叫main的函数

String[] args 原来是用来接收键盘输入的字符串

(可以使用 javac 和 java指令 测试)

编写工具类

1.一般所有的构造方法都使用静态的 方便调用

2.构造方法私有化 (对象对于这个工具类无作用)



猜你喜欢

转载自blog.csdn.net/lijock/article/details/80258786