java单例设计模式(Java中哪些是单例的)
1 .工具类的设计
一般来说,将发挥通用功能的许多方法分类存储在类中,并将这些类称为工具类。
工具类被命名为“XXX工具”、“XXX工具”、“xxxx工具”和“XxxTools”等。 其中,Xxx表示阵列实用程序、字符串实用程序、JDBC实用程序等类型。 存储在工具类中的包命名为如何设计工具类,如util、utils、tool和tools。 开发有两种设计。
如果所有工具方法都由公共静态限定,则只需使用工具类名调用工具方法即可。 此时,将工具类的构造函数私有化,以防止创建工具类的对象并调用静态方法。 如果工具方法不是静态限定的,则必须使用工具类对象调用工具方法。 此时,出于将所需的工具类设计为单实例模式的一般原因,使用JDK提供的工具java.util.Arrays这样的第一个
1.1 .公共静态方法(学习) ) ) ) )。
例如,使用公共静态方法设计数组的工具类。
调用方直接使用工具类名.工具方法名完成调用。
int [ ] arr=新的int [ ] { 7,4,2,8,1,9 };
阵列实用程序(arr );
1.2 .单一模式(学习) () ) ) ) ) ) ) ) )。
设计模式(Design pattern ) :总结了重复使用的代码设计经验。 使用设计模式是为了重复使用代码,使代码更容易被他人理解,并保证代码的可靠性。
例如,使用单实例模式方法设计数组的工具类。
单壳设计模式(singleton ) :最常用、最简单的设计模式,单壳的制作有n种写法。
目的:保证整个APP应用程序中有一个类,只有一个实例(一个类在堆中只有一个对象)。
编写单实例模式的步骤(简称饿汉式) :
在这个类中,对象必须自己创建将自己私有化的构造函数,以便从构造函数中创建新工具类的对象,并防止用于返回自己对象的公共静态方法暴露在外面。 。
呼叫代码:
int [ ] arr=新的int [ ] { 7,4,2,8,1,9 };
阵列实用程序() .排序)数组;
枚举使用完毕:
呼叫代码:
int [ ] arr=新的int [ ] { 7,4,2,8,1,9 };
阵列实用程序(arr );
定制
2. 包装类
测试类名时,请勿与JDK的类名同名。学习常用的班级,仔细查阅文档,不太清楚,写很多。
2.1 .基本类型包装类(学会) (学会) ) () ) ) () ) ) ) ) ) ) ) ) )。
需求:使用double类型表示学生的考试成绩。 此时,如何区分考试成绩为0的情况和没有成绩的情况? 用double不行,只能显示0.0的情况。 在这种情况下,必须使用基本类型的包类来解决这个问题。
模拟定义了封装int类型值的类。
使用这个int的包类。
int wapper wapper=空值; //既没有对方也没有数据
intwapperwapper=newintwapper(0; //有对象,表示数据0
此时,模拟的int包装系IntWapper可以表示0和null两者。
基本数据类型与包类的对应关系:
除了Integer和Character以外,基本类型的首字母都是大写的。 讲课只以Integer为例。
2.1.1 .装箱和开箱(
l装箱:将基本类型的数据转换为对应的包装类对象。
l开箱:将包装类的对象改为对应的基础
本数据类型。装箱操作:
方式一:Integer num1 = new Integer(17);
方式二:Integer num2 = Integer.valueOf(17);建议
拆箱操作:
Integernum3 = Integer.valueOf(17);装箱操作
int val = num3.intValue();拆箱操作
从Java5开始提供了的自动装箱(AutoBoxing)和自动拆箱(AutoUnBoxing)功能:
ü自动装箱:可把一个基本类型变量直接赋给对应的包装类变量。
ü自动拆箱:可以把包装类对象直接赋给对应的基本数据类型变量。
Integernum4 = 17;//装箱操作
int val2 = num4;//拆箱操作
自动装箱和拆箱,在底层依然是手动装箱和拆箱。
思考Object obj = 17;代码正确吗?为什么?
Integer i = 17;自动装箱操作
Object obj = i;把子类对象赋给父类变量
把字符串转换为int类型操作:
int num = Integer.parseInt("123");
如果传入的数据是非数字组成,如“SB250”,此时报错NumberFormatException。
2.1.2. 缓存设计(了解)
从性能上考虑,把常用数据存储到缓存区域,使用时不需要每次都创建新的对象,可以提高性能。
Byte、Short、Integer、Long:缓存范围[-128,127]; Character:缓存范围[0,127];Integer的部分源代码如下:
如果把上述代码中的123换成250,则结果都为false。
如果要比较两个对象的数据是否相等,必须使用equals方法来判断。
==比较的是两个数据的内存空间是否是同一块,equals比较的是存储数据是否相等。
int类型的默认值为0,Integer的默认值为null,在开发中建议使用Integer。
n Integer既可以表示0,也可以表示null。
2.2. BigDecimal(掌握)
float和double都不能表示精确的小数,使用BigDecimal类可以解决该问题,BigDecimal用于处理金钱或任意精度要求高的数据。
BigDecimal不能直接把赋值和运算操作,只能通过构造器传递数据,而且必须使用字符串类型的构造器,操作BigDecimal主要是加减乘除四个操作。
结果为:
0.09999999999999999
0.09999999999999999687749774324174723005853593349456787109375
0.10
加减乘除操作:
上述蓝色区域代码分别表示乘法和除法按照四舍五入方式保留两位小数。
本系列教程为叩丁狼Java基础班内部教材,若要获得最好的学习效果,需要配合对应教学视频一起学习。需要完整教学视频,请私信作者。