黑马程序员-java中static的使用


---------------------- android培训java培训、期待与您交流! ----------------------

Static关键字可以修饰方法、属性、还可以修饰类。

1.static修饰属性:

无论一个类生成了多少个对象,所有这些对象共同使用唯一一份静态的成员变量;一个对象对该静态成员变量进行了修改,其他对象的该静态成员变量的值也随之改变。如果一个成员变量是static的,那么可以用类名.成员变量(如String.CASE_INSENSITIVE_ORDER)方法访问该成员变量。Java中推荐使用类名访问静态成员变量。

2.static修饰方法:

static修饰的方法叫静态方法。对于静态方法来说,可以用类名.方法名(如String.copyValueOf)来使用。静态方法只能继承不能重写(可以隐藏,overhide)只要有静态不要覆盖。

3.static代码块:静态代码块。

静态代码块的作用也是完成一些初始化的工作。首先执行静态代码块,然后执行构造方法。静态代码块在类被加载时执行。而构造方法是在生成对象时执行。要想调用某个类来生成对象,首先需要将类加载到Java虚拟机上(jvm),然后由jvm加载这个类的生成对象。类的静态代码块只会执行一次,是在类被加载的时候执行的,因为每个类只会被加载一次,所以静态代码块也只会执行一次;而构造方法不然,只要生成一次对象就会被调用一次。

如果继承体系中既有构造方法又有静态代码块,那么首先执行最顶层的类的静态代码块,一直执行到最底层类的静态代码块,然后再去执行最顶层的构造方法,一直执行到最底层类的构造方法,其中静态代码块只会执行一次(即如果多次生成对象,静态代码只会执行一次,而构造方法执行多次)。

4.不能在静态的方法中去访问非静态的成员变量。

5.静态的方法只能访问静态的成员变量,不能用静态方法中使用this。

6.静态导入:

在一个类中静态导入一个方法,不必加上类前缀即可使用该方法。以便提供甚至更加强大的减少击键次数功能,虽然一些人争议说这是以可读性为代价的。例如:

package unite5;

 

import static java.lang.Integer.parseInt;

 

public class StaticImportTest {

   

    int a = parseInt("13");

 

}

 

下面是使用静态导入的几条原则:

 

你必须说import static, 不能说static import。

提防含糊不清的命名static成员。例如,如果你对Integer类和Long类执行了静态导入,引用MAX_VALUE将导致一个编译器错误,因为Integer和Long都有一个MAX_VALUE常量,并且Java不会知道你在引用哪个MAX_VALUE。

你可以在static对象引用、常量(记住,它们是static 或final)和static方法上进行静态导入。

7. 在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义、使用的时候会有种种的限制。所以在实际工作中用到的并不多。在开发过程中,内部类中使用的最多的还是非静态地成员内部类。不过在特定的情况下,静态内部类也能够发挥其独特的作用。

 

---------------------- android培训java培训、期待与您交流! ----------------------详细请查看: http://edu.csdn.net/heima
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值