java静态关键字使用

来源:互联网 发布:淘宝杂货铺店名大全 编辑:程序博客网 时间:2024/04/29 20:03


 

1static关键字

         (1)静态的意思。可以修饰类的成员(成员变量和成员方法);

         (2)静态成员的特点:

                   A:随着类的加载而加载,生命周期最长。

                   B:优先于对象存在。

                   C:被所有的对象所共享。

                   D:比非静态成员多了一种访问方式。可以通过类名直接调用。建议用类名.调用

         (3)什么时候需要使用static修饰呢?

                   当类中的成员需要被所有对象共享时,用static修饰。不需要被共享时,就不用static修饰。

                   简单说:共性用static修饰,特性不用static修饰。

         (4)注意事项

                   A:静态方法只能访问静态成员的。

                   B:静态方法中不能使用this,super关键字。

                   Cmain是静态的。

                            **格式如下:

                            publicstatic void main(String[] args){//new String[0]

                            }

 

                              ***由于它被jvm调用,所以权限要足够大,所以用public权限修饰符。

                              ***为了jvm可以不用创建对象直接调用它,所以用static修饰。

                              ***void jvm不需要任何返回。但是方法体结尾默认有return;

                              ***main jvm只认识这个名字。

                              ***String[]有可能需要传入参数。

                              ***args字符串数组的名字,只要符合标识符的命名规则可以随便起。

对静态的理解:

类的一个成员被static修饰后,该成员就属于类的成员了,被所有对象共享,如果成员是成员变量,那么该成员以及该成员的值就被所有对象所共享;如果成员是成员方法,那么该方法就被所有对象共享;相反如果成员没有用static修饰,那么每个对象就有自己的成员,这时可以说,每个对象的成员是他私有的,注意这和权限控制里的私有权限是两码事。可以想象,共享的方法只能访问共享的成员,是无法访问对象私有的成员的,而对象私有的成员方法是可以访问共享的成员的。打个比方,就像我们给别人做事情肯定花的是别人的钱,绝不会花私人的钱,而给自己干活时,却可以花别人的钱,只要别人不追究。这也就是为什么static修饰的成员只能访问static修饰的成员,如static修饰的成员方法,static修饰的初始化块还有static修饰的内部类均如此。也有的人把static理解为静态的或全局的,其实差不多,因为静态的对应者动态的,全局的对应着局部的,看你从哪个角度去理解。

什么时候使用static修饰成员方法。

我的理解是,只要该成员方法不需要与非static的成员打交道,就可以使用static。换句话说,只要该方法的执行与对象本身的状态没有关系,就可以使用static(这个结论可能过于草率)。这类方法通常只对传入的参数作处理,执行过程和自身状态毫无关系,比如我们熟知的IntegerString

Integer.toBinaryString(10);

String.valueOf(12);

IntegerString虽然都有非static的成员,但是这两个方法都不与非static的成员打交道,所以可以定义成static的。

通常,我们在定义一个工具类时,一般把它的方法定义成static的,因为这种类只用作工具,只关注他的行为,不关注他的状态,所以不需要定义成员变量。使用这种工具类的方法时无需创建对象,既简单又节省资源。创建对象来调用反而麻烦且浪费资源,所以这种类被设计出来后就干脆不允许创建对象,因为其构造方法被设计成private权限了。比如我们用的MathArrays,还有Collections。这三个类时我们java中最常见的三个工具类。

static在实际开发中有很多巧妙的用法,只有理解了static的意义,我们才能领略其中的巧妙。

2:代码块

         (1)局部代码块控制变量的生命周期{int x}

         (2)构造代码块每创建一次对象就执行一次。

         (5)静态代码块

                   类中加载流程?

                   静态代码块--构造代码块--构造方法。

 

 

 

3:静态的应用

         工具类ArrayTool

         因为使用的都是class文件。所以你应该先编译ArrayTool,然后在编译ArrayToolDemo,最后执行ArrayToolDemo

         但是如果引用的工具类特别多的情况下,这样就很麻烦,所以java提供好的方式:只编译ArrayToolDemo即可。

         (其实它首先在classpath下找ArrayTool.class,如果没有,接下来在当前类下找ArrayTool.class文件。

          如果还没有,它就会找ArrayTool.java文件,并且进行编译。如果都没有,就报错。)

 

          制作工具说明书:代码中有文档注释,javadoc解析。

          javadoc -d myAPI -author -versionArrayTool.java

          -d 后面跟目录

          ArrayTool.java 源代码文件

          javadoc: 错误 -找不到可以文档化的公共或受保护的类。

          改用public修饰一下即可

 

 

0 0
原创粉丝点击