JAVA的修饰词(1)-----static

static:静态


1.为什么用static
创建对象是为了产生实例,并进行数据的封装。但是总会出现这样的情况:
在调用某功能时,并没有用到对象中封装的数据。例如:

class Animal{
    private String name;
    public void Animal(String name){
        this.name = name;
    }
    public void eat{
        System.out.println("eat,eat,eat");
    }
}

内存图:
DongYuhao

在使用的时候,虽然可以编译通过,但是在堆内存中较为浪费。

这时候,就可以使用static修饰啦!
被静态static修饰的方法,除了可以被对象调用外,还可以被类名调用


2.什么时候将方法定义成静态
定义一个功能时,如果该功能不需要访问类中定义的成员变量(非静态),该功能就需要静态修饰(当然不修饰编译也通过)


3.怎么使用
还是上面的例子

class Animal{
    private String name;
    public void Animal(String name){
        this.name = name;
    }
    //用static修饰
    public static void eat(){
        System.out.println("eat,eat,eat");
    }
}

使用时,直接用类调用

Animal.eat();

4.使用要注意什么
1)static的好处就是可以直接被类名调用而不用再创建对象。
2)static存在访问局限性,非静态可以访问静态成员,但是静态不能访问非静态成员。
3)静态方法不能出现this和super
原因:静态是随着类的加载而加载的,也是随着类的消失而消失。这也就意味着静态先于对象存在内存中。所以静态无法访问后来的对象中的数据,也就是静态无法访问非静态,并且this和super没有指向。


5.静态变量
当某成员变量的值,在每一个对象中都一致时,可以对该变量用静态修饰
举个例子说

//计算圆面积
class Circle{
    //圆的半径
    private double radius; 
    //pi值加静态关键词修饰
    private static double pi = 3.14;
    Circle(double radius){
        this.radius = radius;
    }
    //获取圆面积
    double getArea(){
        return radius*radius*pi;
    }
}

静态变量和成员变量的区别:
1)所属范围不同
静态变量所属于类(也称类变量)
成员变量所属于对象(实例变量)
2)调用不同
静态变量可以被类和对象调用(一般用类)
成员变量只能被被对象调用
3)加载时间不同
静态变量随着类加载
成员变量随着对象加载
//markdown咋做表格 ಥ_ಥ


额外的:
对于主函数,public static void main(String[] args)
主函数也是静态的
public : 权限最大
static :静态
void : 无返回值
String[] : 主函数字符串类型参数
args:arguments 参数
不妨来看看这个args到底是啥内容

class MainDemo{
    public static void main(String[] args){
    System.out.println(args);
    }
}

结果:

[Ljava.lang.String;@6e677ea2

黑人问号???

@6e677ea2 这是哈希值,我还不太清楚具体的东西 ಥ_ಥ
以后再写写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值