Java复习-singleton类

大部分的时候都把类的构造器定义为public访问权限,允许任何类自由创建该类的对象,但其他某些时候这样会降低系统的性能,比如回收对象带来的开销,为了避免其他类自由的创建该类,我们可以把类的构造器设置为私有属性,一旦把类的构造器定义为私有属性,必须提供一个公共的方法,且为static修饰,因为调用该方法的时候还不存在对象,因此调用该方法的不会是对象,只能是类,除此之外,还必须缓存已经创建的对象,否则该类无法知道之前是不是创建了对象,也就无法保证之创建了一个对象,为此该类需要使用一个成员对象来保存曾经创建的对象,因为该成员变量需要被上面的变量访问。

package Myproject;
public class singleton {
private static singleton instanse;
private singleton(){}
public static singleton getInstance(){
if(instanse==null){
instanse=new singleton();
}
return instanse;
}

}

package Myproject;
public class Mysingleton {
public static void main(String[] args){
singleton s1=singleton.getInstance();
singleton s2=singleton.getInstance();
}
}

singleton s3=new singleton();//这样的声明方式就是错误的,找不到声明方式。

时间: 2024-10-27 08:23:27

Java复习-singleton类的相关文章

Java复习(四)类的重用

4.1类的继承 Java只支持类的单继承,每一个子类只能有一个直接父类. #继承的语法 class childClass extends parentClass { //类体 } 子类不能直接访问从父类中继承的私有属性及方法,但可以使用共有(及保护)方法进行访问. 方法覆盖 如果子类不需要使用从父类继承来的方法的功能,则可以声明自己的同名方法. 4.2Object类 判断两个对象是否同一的equals方法 public boolean equals(Object x){ return this

Java复习-Bigdecimal类

因为直接引用float和double类型的数据进行算数运算的时候总是会进行精度的丢失,因此Java采用了bigdecimal类进行精度方面的运算,但是采用精度进行运算的时候,一般传入的是字符串,如果硬要传入double类型的数据的话,采用bigdecimal类提供的方法 产生了精度的丢失, 如果使用了bigdecimal之后,采用的是新建对象,不是以字符串的方式传入的话就会出现误差,所以一定要以字符串的方式传入进去 采用了最后一种方式以后就不会出现进度的消失了

Java复习(三)类中的方法

3.1方法的控制流程 与C/C++类似 3.2异常处理 Java处理错误的方法 抛出(throw)异常 在方法的运行过程中,如果发生了异常,则该方法生成一个代表该异常的代码并把它交给运行时系统,运行时系统便寻找相应的代码来处理这一异常. 捕获(catch)异常 运行时系统在方法的调用栈中查找,从生成异常方法开始进行回溯,直到找到包含相应异常处理的方法为止. 3.2.5声明自己的异常类 public class MyExceptionName extends SuperclassOfMyExcep

Java复习(二)类与对象的基本概念

2.1面向对象的程序设计方法概述 对象 程序中: 一切皆是对象 都具有标识,属性和行为 通过一个或多个变量来保存其状态 通过方法实现他的行为 类 将属性及行为相同或相似的对象归为一类 类可以看成是对象的抽象,代表了此类对象所具有的共有属性和行为 在面向对象的程序设计中,每一个对象都属于某个特定的类 2.1.1抽象 过程抽象 数据抽象 2.1.2封装 2.1.3继承 Java仅支持单继承 2.1.4多态 2.2类与对象 2.2.1类的声明 声明形式 [public] [abstract|final

java复习整理之集合

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.ios培训..Net培训</a>.期待与您交流!------ java复习整理之集合: Collection:集合中的最顶层接口,提供了一些操作集合的共性方法添加:boolean add(E e)boolean addAll(Collection<? extends E> c)删除:void

Java复习第四天---IO流

File类测试 //根据指定的文件名和路径创建File对象 File file = new File("myFile.txt"); //file.exists();检测文件是否存在 boolean exists = file.exists(); System.out.println(exists); //按照file对象指定的路径和文件名创建一个新的文件 file.createNewFile(); exists = file.exists(); System.out.println(e

Java复习第二天---JavaSE基础

[1]以下关于 JVM 的叙述,哪些项正确? A.JVM 运行于操作系统之上,它依赖于操作系统 B.JVM 运行于操作系统之上,它与操作系统无关 C.JVM 支持 Java 程序运行,它能够直接运行 Java 字节码文件 D.JVM 支持 Java 程序运行,它能够直接运行 Java 源代码文件 扩展名为.java的是源代码文件(文本文件):开发时编写代码的文件 扩展名为.class的是字节码文件(二进制):系统运行时执行的文件 [2]下列选项中正确的表达式是: A.byte b = 128; 

java 复习001

java 复习001 比较随意的记录下我的java复习笔记 ArrayList 内存扩展方法 分配一片更大的内存空间,复制原有的数据到新的内存中,让引用指向新的内存地址 ArrayList在内存不够时默认是扩展为1.5倍 + 1个 ArrayList,LinkedList,Vector 区别 Vector内存扩展和ArrayList一样,不过Vector是默认扩展为2倍 Vector支持线程的同步,因此牺牲了访问性能 ArrayList,Vector都是使用数组实现,插入删除效率低 Linked

五:Java之Vector类专题

据说期末考试要考到Vector 这个类,出于复习需要在这里就要好好整理下这个类了. 一.基本概念 Vector 是可实现自动增长的对象数组. java.util.vector提供了向量类(vector)以实现类似动态数组的功能.在Java语言中没有指针的概念,但如果正确灵活地使用指针又确实可以大大提高程序的质量.比如在c,c++中所谓的"动态数组"一般都由指针来实现.为了弥补这个缺点,Java提供了丰富的类库来方便编程者使用,vector类便是其中之一.事实上,灵活使用数组也可以完成向