"==" 和 equals的区别 java 日期Date类的使用 自动装箱和自动拆箱

package com.dong.unusalclass;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.dong.reflect.Apple;

public class AutoBoxing {

	public static void main(String[] args) {
		// 自动装箱过程如下  个人理解就是将其装到包装类中
		int  j = 100;
		Integer i1 = new Integer(100); //这个就是创建了i1对象,并传值100
		Integer i = 100; // 本质上编译器为我们加的代码是Integer i = new Integer(100);
		System.out.println(j);
		System.out.println(i);
        //自动拆箱过程如下 包装类对象自动转换成基本类型数据,
		int k = new Integer(100); //本质上,编译器自动为我们添加了: int a = new Integer(100).intValue();
		int b = new Integer(1500).intValue(); //正常操作,定义了一个int对象b            
		System.out.println(k);
		
		//产生的缓存问题
		Integer s1 = 12345;
		Integer s2 = 12345;
		
		System.out.println(s1 == s2);//以为自动装箱 ,所以就创建了两个类,也就不一样
		System.out.println(s1.equals(s2));//这个类的值相等
		
		 //2.再次比较,出现缓存问题
		    Integer x1 = 123;
	        Integer x2 = 123;
		  System.out.println(x1==x2);//true,原因是[-128,127]之间的数,仍然被当做基本数据类型来处理
	      System.out.println(x1.equals(x2));//true
		
		//关于equals 和 == 区别如下 
		int a = 1;
		int b1 = 1;
		System.out.println(a==b1);
		
//	   == 在基本数据类型比较的是数值 在对象的时候比较的是所引用对象的地址
//	   equals 主要比较的就是对象引用的对象的地址,也有比较对象内容的,具体看什么样的场景下使用
/**
 * ==与equals的主要区别是:==常用于比较原生类型,而equals()方法用于检查对象的相等性。另	 
 * 一个不同的点是:如果==和equals()用于比较对象,当两个引用地址相同,==返回true。而
 * equals()可以返回true或者false主要取决于重写实现。最常见的一个例子,字符串的比较,不同情
 * 况==和equals()返回不同的结果。
 * 	
 * 总结:
 * 使用==比较原生类型如:boolean、int、char等等,使用equals()比较对象。
 * ==返回true如果两个引用指向相同的对象,equals()的返回结果依赖于具体业务实现
 * 字符串的对比使用equals()代替==操作符
 * 
 * 以上就是关于equals方法和==操作符的区别,其主要的不同是一个是操作符一个是方法,==用于
 * 对比原生类型而equals()方法比较对象的相等性
 * 
 * 比较的时候不要出现以下这两种情况,否则会报出空指针异常错误:
 * null==a  
 * null.equals(a) 
 */
		Apple e1 =new Apple();
		Apple e2 =new Apple();
        
		System.out.println(e1==e2);
		System.out.println(e1.equals(e2));
		
		String st1 = new String("AAA");
		String st2 = new String("AAA");
        
		System.out.println(st1 == st2);
		System.out.println(st1.equals(st2));//String 类型的时候比较的是字符串对象的内容 特殊
	
		Date date = new Date();//获取系统当前的时间
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		System.out.println(df.format(date));//把日期转换成字符串	
	
		String str1="2018-01-28";
		try{
			System.out.println(df.parse(str1));//必须要进行匹配上才能进行字符串到日期的转换	
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	class TestA{
		
	}

}

猜你喜欢

转载自blog.csdn.net/m0_37264382/article/details/79547384