一.Java7增强的包装类
为了解决Java中8中基本数据类型不能当成Object 类型变量使用的问题,java提供了包装类,为8中基本数据类型分别定义了相应的引用类型。
java1.5以后JDK提供了自动装箱和自动拆箱的功能,所以基本类型和包装类型可以直接装换。包装类可以实现基本类型和字符串类型的转换:
1.利用包装类的parseXxx(String s) 静态方法。
2.是利用包装类提供的构造器
利用String类提供的valueof方法可以实现基本类型转成字符串。
示例代码如下:
<span style="font-size:18px;"><span style="font-size:18px;">package test1;
public class Primitivate2String {
public static void main(String[] args){
String intStr= "123";
//把一个特定的字符串转成int变量
int it1 = Integer.parseInt(intStr);
//int it2 = new Integer(intStr);
System.out.println(it1);
String ftStr= "4.56";
//讲一个特定的字符串转成float变量
float ft1 = Float.parseFloat(ftStr);
//float ft2 = new Float(ftStr);
System.out.println(ft1);
//把一个float变量转成String变量
String ftStr2 = String.valueOf(2.342);
System.out.println(ftStr2);
//把一个double变量转成String类型
String dbString = String.valueOf(3.453563);
System.out.println(dbString);
//把一个boolean型的变量转成String
String blStr = String.valueOf(true);
System.out.println(blStr);
//但其实如果还有一种更加简便的方法可以将基本类型转成字符串类型:
//将基本类型变量和""进行运算。
String intStr1 = 5 + "";
System.out.println(intStr1);
}
}
</span></span>
二.单例类
定义:如果一个类始终只能创建一个实例,则这个类被称为单例类
实现:将这个类的构造器用private修饰,然后提供一个static修饰的public方法用于创建该类的对象。
然后在这个类中还应该定义一个static成员变量用于保存创建的对象,用于判断该类是否已经创建了一个对象。
示例代码如下:
<span style="font-size:18px;"><span style="font-size:18px;">package test1;
public class Singleton {
//使用一个变量来缓存曾经创建过的实例
static private Singleton instance;
//对构造器使用private修饰,隐藏该类构造器
private Singleton(){}
//提供一个静态的方法,用于返回Singleton实例
//该方法加入了控制,保证只产生一个实例
public static Singleton getInstance(){
//如果instance为null,则还没有创建过Singleton实例
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
</span></span>
<span style="font-size:18px;"><span style="font-size:18px;">package test1;
public class Singletontest {
public static void main(String[] args){
//通过getinstance创建Singleton类的对象
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1==s2);
}
}
</span></span>
三.抽象类
用abstract修饰的类,就成了抽象类。抽象类中可以定义抽象的方法,也要用abstract修饰。
对于抽象类来说,不能创建实例只能被当成父类来继承。继承其的普通类必须要实现其中所有abstract方法。
抽象类体现的是一种模板的设计,抽象类作为其子类的模板,从而避免了子类设计的随意性。
示例代码如下符:
package lkl2;
public abstract class Shape {
{
System.out.println("执行Shape类的初始化块");
}
private String color;
//定义一个计算周长的抽象方法
public abstract double calPerimeter();
//定义一个返回形状的抽象方法
public abstract String getType();
//定义Shape的构造器,该构造器不是用于创建shape对象
//而是用于被子类调用
public Shape(){}
public Shape(String color){
System.out.println("正在执行Shape的构造器");
this.color=color;
}
public void Setcolor(String color){
this.color=color;
}
public String Getcolor(){
return color;
}
}
package lkl2;
//定义一个继承了Shape类的普通三角形类
//其必须重写Shape类中所有的abstract方法
public class Triangle extends Shape{
private double a;
private double b;
private double c;
public Triangle(String color,double a,double b,double c){
super(color);
this.setSides(a,b,c);
}
public void setSides(double a,double b,double c){
if(a>=b+c||b>=a+c||c>=a+b){
System.out.println("三角形两边之和必须大于第三 边");
return ;
}
this.a=a; this.b=b; this.c=c;
}
//重写Shape类的计算周长的抽象方法
public double calPerimeter(){
return this.a+this.b+this.c;
}
//重写Shape类返回形状的方法
public String getType(){
return "三角形";
}
}