java、静态代码块、static和单列设计模式
2013-01-24 23:46
453 查看
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
一:static关键字
(1)静态的意思。可以修饰类的成员(成员变量和成员方法);
(2)静态成员的特点:
A:随着类的加载而加载,生命周期最长。
B:优先于对象存在。
C:被所有的对象所共享。
D:比非静态成员多了一种访问方式。可以通过类名直接调用。而且建议这样做。
(3)什么时候需要使用static修饰呢?
当类中的成员需要被所有对象共享时,用static修饰。不需要被共享时,就不用static修饰。
简单说:共性用static修饰,特性不用static修饰。(饮水机和水杯。)
(4)注意事项
A:静态方法只能访问静态成员的。
B:静态方法中不能使用this,super关键字。
C:main是静态的。
**格式如下:
***由于它被jvm调用,所以权限要足够大,所以用public权限修饰符。
***为了jvm可以不用创建对象直接调用它,所以用static修饰。
***void jvm不需要任何返回。但是方法体结尾默认有return;
***main jvm只认识这个名字。
***String[] 有可能需要传入参数。
***args 字符串数组的名字,为了方便使用。
(5)静态代码块
类中加载流程?
静态代码块--构造代码块--构造方法。
实例:
注意:静态代码块:类中加载流程?
-- 静态代码块--构造代码块--构造方法。--
二:静态的应用
工具类ArrayTool
因为使用的都是class文件。所以你应该先编译ArrayTool,然后在编译ArrayTest,最后执行ArrayTest。但是如果引用的工具类特别多的情况下,这样就很麻烦,所以java提供好的方式:只编译ArrayTest即可。(其实它首先在classpath下找ArrayTool.class,如果没有,接下来在当前类下找ArrayTool.class文件。 如果还没有,它就会找ArrayTool.java文件,并且进行编译。如果都没有,就报错。) 制作工具说明书:代码中有文档注释,用javadoc解析。
javadoc -d arrayTool -author -version ArrayTool.java
-d 后面跟目录
ArrayTool.java 源代码文件
javadoc: 错误 - 找不到可以文档化的公共或受保护的类。
改用public修饰一下即可
三:设计模式
java中有23种设计。
单例设计模式:保证类在内存中只有一个对象。
如果保证类在内存中只有一个对象呢?
(1)控制类的创建,不让外部类来创建类的对象。private
(2)在本类中定义一个本来的对象。Student s;
(3)提供公共的访问方式。
单例写法两种:
(1)饿汉式 开发一般用这种方式,因为它的线程安全。
(2)懒汉式:这种方式具有线程安全问题,延迟加载
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
一:static关键字
(1)静态的意思。可以修饰类的成员(成员变量和成员方法);
(2)静态成员的特点:
A:随着类的加载而加载,生命周期最长。
B:优先于对象存在。
C:被所有的对象所共享。
D:比非静态成员多了一种访问方式。可以通过类名直接调用。而且建议这样做。
(3)什么时候需要使用static修饰呢?
当类中的成员需要被所有对象共享时,用static修饰。不需要被共享时,就不用static修饰。
简单说:共性用static修饰,特性不用static修饰。(饮水机和水杯。)
(4)注意事项
A:静态方法只能访问静态成员的。
B:静态方法中不能使用this,super关键字。
C:main是静态的。
**格式如下:
public static void main(String[] args) { }
***由于它被jvm调用,所以权限要足够大,所以用public权限修饰符。
***为了jvm可以不用创建对象直接调用它,所以用static修饰。
***void jvm不需要任何返回。但是方法体结尾默认有return;
***main jvm只认识这个名字。
***String[] 有可能需要传入参数。
***args 字符串数组的名字,为了方便使用。
(5)静态代码块
类中加载流程?
静态代码块--构造代码块--构造方法。
实例:
class Dog { static { System.out.println("a");//第四步 } } class MainDemo { static { System.out.println("b");//第一步 } public static void main(String[] args) { System.out.println("c");//第三步 Dog d = new Dog(); Dog d1 = new Dog(); System.out.println("d");//第五步 } static { System.out.println("e");//第二步 } } 结果为:// b e c a d
注意:静态代码块:类中加载流程?
-- 静态代码块--构造代码块--构造方法。--
二:静态的应用
工具类ArrayTool
因为使用的都是class文件。所以你应该先编译ArrayTool,然后在编译ArrayTest,最后执行ArrayTest。但是如果引用的工具类特别多的情况下,这样就很麻烦,所以java提供好的方式:只编译ArrayTest即可。(其实它首先在classpath下找ArrayTool.class,如果没有,接下来在当前类下找ArrayTool.class文件。 如果还没有,它就会找ArrayTool.java文件,并且进行编译。如果都没有,就报错。) 制作工具说明书:代码中有文档注释,用javadoc解析。
javadoc -d arrayTool -author -version ArrayTool.java
-d 后面跟目录
ArrayTool.java 源代码文件
javadoc: 错误 - 找不到可以文档化的公共或受保护的类。
改用public修饰一下即可
三:设计模式
java中有23种设计。
单例设计模式:保证类在内存中只有一个对象。
如果保证类在内存中只有一个对象呢?
(1)控制类的创建,不让外部类来创建类的对象。private
(2)在本类中定义一个本来的对象。Student s;
(3)提供公共的访问方式。
public static Student getInstance() {return s}
单例写法两种:
(1)饿汉式 开发一般用这种方式,因为它的线程安全。
class SingleDemo { // 私有化构造函数,让外界无法new新的对象 private SingleDemo() {} // 创建自己类的对象 private static SingleDemo s = null; // 创建一个函数 public void show() { System.out.println("这是饿汉式"); } // 对外定义一个访问的的方法,返回一个对象 public static SingleDemo getSingle() { return s; } public class Single { public static void main(String[] args) { // TODO Auto-generated method stub SingleDemo s1 = SingleDemo.getSingle(); s1.show(); } }
(2)懒汉式:这种方式具有线程安全问题,延迟加载
package cn.itcast; class SingleDemo { // 私有化构造函数,让外界无法new新的对象 private SingleDemo() {} // 创建自己类的对象 private static SingleDemo s = null; // 创建一个函数 public void show() { System.out.println("这是懒汉式"); } // 对外定义一个访问的的方法,返回一个对象 public static SingleDemo getSingle() { if (s == null) { //cpu在做快速的切换,当执行到此处,进行判断的过程中,切换又判断,这样就会造成线程不安全 return s = new SingleDemo();// 如果不将new的对象赋给S,这样就变成了2个对象 } else { return s;// 返回类类型对象 } } public class Single { public static void main(String[] args) { // TODO Auto-generated method stub SingleDemo s1 = SingleDemo.getSingle(); s1.show(); } }
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
相关文章推荐
- Java自学笔记(第六天)-static-类变量-对象变量-javadoc文档-static代码块-单例设计模式
- JAVA基础第六天学习日记_static关键字、文档、静态代码块、单例开发模式
- 20160717 代码块/静态/工具类设计思想/制作文档/单列设计模式
- Java学习日记(三)面向对象、类、封装、构造函数、this、static、静态代码块、单例设计模式
- java基础--静态(函数、代码块)、单例设计模式、继承、final修饰符
- Java基础之面向对象(二)--static、静态代码块、Main函数、单例模式
- java学习-通过静态代码块达到的单态设计模式
- Java重修之路(七)面向对象之静态,主函数,Doc文档,静态代码块,对象初始化过程,单例设计模式
- Java基础之面向对象(二)--static、静态代码块、Main函数、单例模式
- java学习日志(九)-- 工具类、静态代码块、单例设计模式
- java -- 静态代码块及单例设计模式
- 黑马程序员java学习第六天,static静态的使用及单例设计模式
- 1、Java面向对象笔记(匿名对象)(static 静态修饰符)(单例设计模式)
- Java笔记2 面向对象<2>static关键字、main函数、静态运用、单例设计模式
- JAVA设计模式-10-代理模式(静态)
- (十五)Core Java Eclipse的使用(快捷配置,模板代码.静态导入,自动拆装箱,享元设计模式) (112)
- Java基础06:Static;单例设计模式;对象初始化;构造函数;
- java中静态代码块的用法static用法详解
- Java设计模式——静态代理设计模式
- java中静态代码块的用法 static用法详解