Java复习04

Java SE复习04

  1. 关于对象之间的比较(equals和= =)
       除了特殊的类,其他普通的类,两种比较方法都是看指向的是否是同一个对象,是同一个对象时才会返回true。
       特殊的类:String,Date,File。这些类比较时= =是比较是否指向同一个对象,而equals比较的是对象的内容。
//普通类的对象的比较
 public static void main(String args[]){
    	Person p1=new Person();
    	Person p2=new Person();
    	System.out.println(p1==p2);
    	System.out.println(p1.equals(p2));
    	p1=p2;
    	System.out.println(p1==p2);
    	System.out.println(p1.equals(p2));
    }

输出结果:
在这里插入图片描述

//特殊类的对象的比较
public static void main(String args[]){
        	String p1=new String();
        	String p2=new String();
        	System.out.println(p1==p2);
        	System.out.println(p1.equals(p2));
        }

输出结果:
在这里插入图片描述

  1. String创建的对象。
       ①字面量创建对象:String s="abc;
       ②new创建对象:String s=new String(“abc”);
    字面量创建对象时,只在常量池中创建对象,而new创建对象时,不仅要在常量池中创建,还要在堆中创建。从这个角度看,字面量创建字符串时要省内存一些。在这里插入图片描述

  2. 包装类(wapper)
      ①基本数据包装成包装类的实例:装箱

   Integer i=new Integer()110;

     ②获取包装类实例中的值:拆箱

    int ia=i.IntegerValue();

JDK1.5之后支持自动装箱拆箱,例:Integer i=111;
   可以使用包装类中的静态方法实现字符串之间的转换。

              int i=Integer.parseInt("123");//字符串转化为整形数据
              String s=String.valueOf(123);//整形数据转化为字符串
  1. 关于toString方法
       在没有被重写时,toString是object类中的一个方法,输出对象的地址,效果和直接输出对象引用差不多,可以重写使其可以打印数据。
//没有被重写前
public static void main(String args[]){
    	Person person=new Person();
    	System.out.println(person.toString());
    	System.out.println(person);
    }  

输出结果:
在这里插入图片描述

//Person.java重写toString
public class Person {
    public int sex;
    public String name;
    public int age;
    public Person(String name,int age,int sex) {
		this.age=age;
		this.name=name;
		this.sex=sex;
	}
    public void showInfo(){
    	System.out.println(this.name);
    	System.out.println(this.age);
    	System.out.println(this.sex);
    }
   @Override
public String toString() {
	String string=name+sex+age;
	return string;
}
}
//重写后
public static void main(String args[]){
        	Person person=new Person("Mike",18,0);
        	System.out.println(person.toString());
        	System.out.println(person);
        }

输出结果:
在这里插入图片描述

  1. 单例设计模式:采取某种方法使某个类只有一个实例对象,当实例对象需要消耗大量时间和资源时适合使用这种设计模式。
       实现单例设计方法:将类的构造函数权限设置为private,设置private静态对象,此时类已经实例化了一次,添加getInstance()方法,通过此方法获取已经实例化的静态对象,有两种方式(饿汉和懒汉)。
 public class Singleton {

	private Singleton(){
		
	}
	//饿汉模式
	private static Singleton singleton=new Singleton();
	//只能通过getInstance()方法获取对象,但由于static变量属性,所有对象指向同一个对象地址。
	public static Singleton getInstance(){
		return singleton;
	}
	//Test.java
	public class Test {

	public static void main(String args[]){
		//这时的singleton1,singleton2,类变量singleton都指向同一个地址,实际上类只实例化了一次
		Singleton singleton1=Singleton.getInstance();
		Singleton singleton2=Singleton.getInstance();
		System.out.println(singleton1);
		System.out.println(singleton2);
	}
}

输出结果:
在这里插入图片描述
   从输出结果可以看出,无论通过getInstance()方法添加多少个singleton对象都指向的同一个地址,即实际上此类只有一个实例化对象。此外,除了饿汉模式,还有一种懒汉模式。

public class Singleton {

	private Singleton(){
		
	}
	//懒汉模式
	private static Singleton singleton=null;
	//只能通过getInstance()方法获取对象,但由于static变量属性,所有对象指向同一个对象地址。
	public static Singleton getInstance(){
		singleton=new Singleton();
		return singleton;
	}
}
}

   两者区别在于,如果不使用此类的实例化对象,懒汉模式就不会实例化,直到需要使用才会通过getInstance()方法实例化,而饿汉模式则无论是否使用,先将静态对象实例化出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值