static学习笔记(自用)

static学习日记(自用)

  1. static 静态变量 用于修饰成员变量和成员函数

  2. 当成员那被静态修饰后 就多了一个调用方式 除了可以被对象调用外 还可以直接被类名调用

  3. 	类名.静态成员
    
  4. static特点:

    (1)随着类的加载而加载
    也就是说静态会随着类的消失而消失,说明他的生命周期最长,当Human类加载到内存中 country在内存中 而name则不在(因为只有创建对象之后 对象里面才有name)
    (2)优先于对象的存在
    明确:静态是先存在的 对象是后存在的
    (3)被所有对象共享
    (4)可以直接被类名所调用

class Human{
	private String name;//成员变量 实例变量
	static String coutry="CN";  //静态的成员变量 类变量
	//被static修饰之后 已经不再堆内存中了
	
	/*

	 * 为什么country可以用static修饰?
	 * 因为之后创造的每个人都是中国国籍,然而 每创建一个Human h=new Human();以及Human h1=new Human();
	 * 都会同时创建一个name和country,这样的话占用了内存空间
	 * 在使用static修饰之后  可以将country理解为被共享了  所有人共享一个country
	 * 然而每个人姓名都不同 所以不能用一个固定的“名字”  但是country可以
	 */

	public String getName() {
		return name;
	}

	public void setName(String name) {
		
		this.name = name;
		talk();
	}
	public static void talk(){
		System.out.println(name+" "+coutry);
	}
}
public class StaticDemo {
	public static void main(String[] args) {
		Human h=new Human();
		h.setName("wangwu");
		System.out.println("被对象调用 "+h.coutry);
		System.out.println("被类名调用 "+Human.coutry);
	}
}

在这里插入图片描述
实例变量和类变量的区别

实例变量类变量
实例变量随着对象的建立而存在于堆内存中类变量随着实例的加载而存在于方法区中
实例变量的生命周期随着对象的消失而消失类变量生命周期最长,随着类的消失而消失

静态使用注意事项

1.静态方法只能访问静态成员
在此例子中,human类在调用静态方法talk类时,静态方法talk要访问对象的name,但是在本例子中还未创建对象,所以name还没有被创建
非静态方法既可以访问静态也可以访问非静态
在这里插入图片描述
在这里插入图片描述
2.静态方法中不可以定义this、super关键字,因为静态优先于对象存在,所以不可以定义
静态优缺点
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值