java静态关键字使用
来源:互联网 发布:淘宝杂货铺店名大全 编辑:程序博客网 时间:2024/04/29 20:03
1:static关键字
(1)静态的意思。可以修饰类的成员(成员变量和成员方法);
(2)静态成员的特点:
A:随着类的加载而加载,生命周期最长。
B:优先于对象存在。
C:被所有的对象所共享。
D:比非静态成员多了一种访问方式。可以通过类名直接调用。建议用类名.调用
(3)什么时候需要使用static修饰呢?
当类中的成员需要被所有对象共享时,用static修饰。不需要被共享时,就不用static修饰。
简单说:共性用static修饰,特性不用static修饰。
(4)注意事项
A:静态方法只能访问静态成员的。
B:静态方法中不能使用this,super关键字。
C:main是静态的。
**格式如下:
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(这个结论可能过于草率)。这类方法通常只对传入的参数作处理,执行过程和自身状态毫无关系,比如我们熟知的Integer和String。
Integer.toBinaryString(10);
String.valueOf(12);
Integer和String虽然都有非static的成员,但是这两个方法都不与非static的成员打交道,所以可以定义成static的。
通常,我们在定义一个工具类时,一般把它的方法定义成static的,因为这种类只用作工具,只关注他的行为,不关注他的状态,所以不需要定义成员变量。使用这种工具类的方法时无需创建对象,既简单又节省资源。创建对象来调用反而麻烦且浪费资源,所以这种类被设计出来后就干脆不允许创建对象,因为其构造方法被设计成private权限了。比如我们用的Math和Arrays,还有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修饰一下即可
- java静态关键字使用
- java静态关键字static
- 黑马程序员--Java基础--静态关键字及其使用
- Java Static静态关键字理解
- Java静态(static)关键字
- java同步静态方法与非静态方法(使用synchronized关键字)
- Java static关键字以及Java静态变量和静态方法
- Java关键字static,abstract,instanceof使用(静态属性,静态方法,抽象类抽象方法的学习)
- java--面向对象(static关键字、main、静态什么时候使用、静态代码块、对象的初始化过程)
- Java中静态关键字的使用和内部类的调用
- Java中静态关键字的使用和内部类的调用
- C#静态方法不能使用this关键字
- 使用import关键字导入静态成员
- java中的static关键字和静态成员
- java中的static关键字和静态成员
- JAVA学习八:static(静态)关键字
- java笔记-static(静态)关键字
- JAVA的访问权限&静态&this关键字
- 五款开源图像处理软件
- 算法
- web开发者必备的11个的javascript工具
- 蓄水池抽样
- 强大图形库
- java静态关键字使用
- XAMPP Linux Frequently Asked Questions
- SSh框架搭建(Struts2.1+Hibernate4.0+Spring3.1)
- ORACLE中文全文索引
- printf函数
- android-AlertDialog 加载xml文件同时显示图片
- 大数据和日期函数
- Linux驱动基本理论之——poll机制图解
- LeetCode——Set Matrix Zeroes