首页 > 编程 > Java > 正文

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

2019-11-11 04:00:58
字体:
来源:转载
供稿:网友

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 这是哈希值,我还不太清楚具体的东西 ಥ_ಥ 以后再写写


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表