Mr.J--Java之static关键字

 

 

今天看《Java编程思想》P86页,有句话很好地诠释了static:

  “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”

java中的静态关键字主要用于内存管理。我们可以用变量、方法、块和嵌套类应用java static关键字。静态关键字属于类的类,而不是类的实例。

静态变量(也称为类变量)和静态方法(也称为类方法)

 

 

1)Java静态变量
如果您将任何变量声明为静态变量,那么它就是已知的静态变量。静态变量可以用来引用所有对象的公共属性(对于每个对象来说不是唯一的),例如:公司名称、学生的大学名称等等。静态变量在类装入时只在类区域内获得一次内存。利用静态变量:它使您的程序内存有效(节省内存)。
理解没有静态变量的问题。

class Student{  
     int rollno;  
     String name; 
     String college="ITS";  
} 

        假设我的学院有500名学生,现在所有的实例数据成员都会在创建对象时获得内存。所有学生都有其独特的rollno和名称,所以实例数据成员是好的。在这里,大学是指所有物体的共同属性。如果我们使它保持静态,这个字段只会获得一次内存。


所有对象都共享Java静态属性。被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
       static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

 

  但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。例如:

 

public static 表示公共的静态方法;

public 表示公共的方法;

静态方法不需要实例化,直接通过 类名.方法()掉问;

公共方法需要实例化,通过new 类名.方法()调用;

 

以上是我对static的了解,有不足之处请各位大佬指出。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值