静态static简介

static关键字

在定义类的时候,类中会有对象的属性或者行为,当描述行为的时候需要创建相应的对象才可以调用,如果这个行为(方法)中没有这个类特有的属性时,仅仅为了调用这个行为来创建对象显得有些多余,但是不创建对象又没有办法调用,这个时候java提供了关键字static。

//调用静态方法时的格式为 类名().静态方法
public class practice01 {
	public static void main(String[] args) {
		person.show2();
	}
}
class person{
	String name="DC";
	int age=1;
	void show1() {
		System.out.println(this.name+" is "+this.age);
	}
	static void show2() {
		System.out.println("我是静态");
	}
}

所以,当类中所定义的功能不需要访问类中的成员变量时,可以用静态来修饰该功能。

静态方法的使用注意事项

1. 静态是随着类的加载就加载了。也是随着类的消失而消失了。
2. 静态优先于对象存在,被对象共享。
3. 因为静态先存在于内存中无法访问后来的对象的中的数据,所以静态无法访问非静
态。而且内部无法书写this。因为这时对象有可能不存在,this没有任何指向。
4. 静态方法不能访问非静态的成员。但是非静态可以访问静态成员的。
说明:静态的弊端在于访问出现局限性。好处是可以直接被类名调用。
5. 静态方法中不允许出现this,super关键字。

静态不仅可以修饰方法,同时静态也可以修饰成员变量

class Circle
{
    //圆的半径
    private double radius;
    //圆周率,由于圆周率是固定值,因此所有对象共享这个数据
    //没有必要每个对象中拥有这个数据,因此可以使用静态修饰
    static double pi = 3.14;
    public Circle(){
    
    }
    //带参数的构造函数
    public Circle(double radius){
        this.radius = radius;
    }
    //获取圆面积
    double getArea(){
        return radius * radius * pi;
    }
}
class CircleDemo{
    public static void main(String[] args){
        System.out.println(new Circle(3).getArea());
    }
}

如果pi这个变量没有被静态修饰的话,当创建Circle对象时,每个对象中都会有pi这个
变量,但是pi是个固定不变的值,没有必要每个对象中拥有,这时可以将这个变量静态修
饰,让所有对象共享就可以了。

静态变量和成员变量的区别
变量所属不同
静态变量所属与类,也称为类变量
成员变量所属于对象,也称为实例变量(实例变量)

内存中的位置
静态变量存储于方法区中的静态区中
成员变量存储于堆内存中

在内存中出现的时间
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而在堆内存中出现,随着对象的消失而消失

调用方式
静态变量可以用类直接调用,也可对象调用
成员变量只能被对象调用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值