Java重修之路(七)面向对象之静态,主函数,Doc文档,静态代码块,对象初始化过程,单例设计模式
来源:互联网 发布:java ssh linux 编辑:程序博客网 时间:2024/04/26 22:31
静态(Static)
是一个修饰符,用于修饰成员(包括成员变量和成员函数)
被Static修饰的变量不在堆内存中,被提取到共享区域中,节省空间。被对象所共享。
public class Person { private int age; private String name; private String Dept = "计算机科学学院";}比如这个Person类,每个人的Dept都是一样的,每次new一个对象都会包含一个初始化完成的Dept,这样极大浪费空间,发现每个对象的Dept都是一样的,于是用Static修饰,将Static提到共享区域中共用,节省空间。
当成员被Static修饰时,就多了一种调用方式,除了可以被对象调用以外,还可以直接通过类名调用。类名.静态成员。
对象共享的数据才能定义为静态。
Static特点:
随着类的加载而加载,随着类的消失而消失。生命周期最长。(一旦类被调入内存,此时静态变量就已经存在)
被所有对象所共享。
优先于对象存在。
可以直接被类名调用。
实例变量和类变量的区别:
类中静态变量也称为类变量,类的成员变量成为实例变量。
1.存放位置的区别:
类变量随着类的加载而存在于方法区/共享区.
实例变量随着对象的建立存在于堆内存的对象实例里。
生命周期的区别:
类变量生命周期最长,随着类的消失而消失。
实例变量随着对象的消失而消失。
静态的使用注意事项。
1.静态方法只能访问静态成员(包括成员变量和成员方法)
原因很简单:因为静态方法随着类的加载而加载,此时对象还不存在,因此非静态的成员变量和成员方法都不存在,所以不能访问。
非静态方法既可以访问静态,也可以访问非静态。
2.静态方法中不可以定义this,super关键字,还是因为静态优先于对象存在,this也是代表对象。
利弊:
对对象的共享数据进行单独的存储, 节省空间。
可以直接被类名调用。
弊端:生命周期过长,访问有局限性。
主函数Main
public class Hello { public static void main(String[] args) { // 主函数是一个特殊的函数,作为程序的入口,可以被JVM调用。 // public:访问权限最大,可以被虚拟机访问 // Static:代表着主函数随着类的加载而加载 // void:主函数没有具体的返回值 // main:不是关键字,但是是一个特殊的标记,可以被JVM识别 // 参数:是字符串数组 // 主函数是固定格式的,供虚拟机识别 // 主函数可以重载,但是虚拟机只识别这一个 System.out.println(args.length); System.out.println(args); // 其实传进去一个数组实体,但是长度为0 new String[0] } public static void main(String[] args, int x) { System.out.println("主函数重载"); }}打印结果:0[Ljava.lang.String;@2a139a55
帮助文档的制作doc
给类制作帮助文档要求类必须是public修饰
类中的私有的方法不会暴露,只会暴露public和protected会暴露出去供人使用
制作方法:
写好类和方法的注释说明之后,编译:
效果:
然后点开index.html即可查看。
至此,说明文档制作完成。
静态代码块
特点:随着类的加载而执行,只执行一次。用于给类进行初始化。
public class Person { static { System.out.println("我是静态代码块!"); } public static String Name = "zhangsan";}
运行结果:
看下边执行结果:
打印结果为:bca
注意与构造代码块的区别:
静态代码块与类联系在一起,构造代码块与对象联系在一起,构造代码块详见上一篇文章构造代码块详解
静态代码块初始化类,构造代码块初始化对象。 静态代码块最先执行,只有有对象出现才会有构造代码块,注意执行顺序。
静态代码块也只能访问静态成员。
打印结果为:acd 首先是静态代码块,然后是构造代码块,然后是构造函数。
对象的初始化过程
静态方法之间互相调用,不能用this. 因为没有对象,可以用 类名. 但是一般省略。
单例设计模式
一个类在内存中只存在一个对象。
为了获取到实例,但是又不能new,只能通过getInsTance方法,但是没有对象,不能通过对象调用,只能讲此方法静态,由于静态只能调用静态,必须将s静态,然后private。最后通过类名调用。
实现方式二:懒汉式
Single类进内存,对象还没有存在,只有调用了getInstance才会建立对象。但是懒汉式有弊端,不能保证唯一性。
有可能CPU刚刚判断玩s==null 成立,就转去执行其他程序,然后B走到这里再次判断s==null成立,这时后边再执行就会有两个对象,不能保证唯一性。
解决方案:
synchronized是同步的意思,会进行加锁成立,一次只允许进一个。
建议使用饿汉式。
- Java重修之路(七)面向对象之静态,主函数,Doc文档,静态代码块,对象初始化过程,单例设计模式
- day06static关键字,main函数,帮助文档的制作,静态代码块,对象的初始化过程,单例设计模式
- static关键字,main函数,帮助文档的制作,静态代码块,对象的初始化过程,单例设计模式
- Java基础之面向对象(二)--static、静态代码块、Main函数、单例模式
- Java基础之面向对象(二)--static、静态代码块、Main函数、单例模式
- Java学习日记(三)面向对象、类、封装、构造函数、this、static、静态代码块、单例设计模式
- Java基础---面向对象(面向对象,类,对象,匿名对象,封装,构造函数,构造代码块,this,static,main,帮助文档,静态代码块,单例)
- C++转Java自学之路(四)文档注释、静态代码块与对象初始化过程
- Java基础--面向对象(静态、main函数、帮助文档、单例设计模式)
- 面对对象2【static】【主函数】【静态应用】【Java帮助文档】【静态代码块】【对象初始化过程】
- 黑马程序员—— 4,二维数组,面向对象,制作帮助文档,静态代码块,构造代码块,构造函数,单例设计模式
- java_面向对象_02_静态(代码块)_main_单例设计模式
- 黑马程序员——java第六天:面向对象(静态、帮助文档、对象初始化过程、单例)
- JAVA面向对象知识点总结(3)—静态static、主函数详解、静态代码快、对象初始化过程
- java--面向对象(static关键字、main、静态什么时候使用、静态代码块、对象的初始化过程)
- 制作程序文档_主函数_静态代码块_对象的初始化过程_对象调用成员过程
- Java重修之路(六)面向对象初识,类与对象,成员变量,局部变量,封装,构造函数,构造代码块,this关键字
- 面向对象静态static应用之单态设计模式
- 【通讯术语】MSIN
- 网页加载去除网页元素 webView
- Java Double 保留两位小数点
- Spark初学笔记
- Android中如何引入text文件
- Java重修之路(七)面向对象之静态,主函数,Doc文档,静态代码块,对象初始化过程,单例设计模式
- 线性序列中同时求出最大值和最小值
- 函数的知识点
- Teamviewer 获取免费版
- 单片机串行口及应用
- 关于cocoaPods报错的问题(更新篇)
- plsql远程访问数据库 解决ora-12541:TNS:无监听程序
- 浅谈CICS性能分析
- Android如何将text文件内容显示到插件中