一附上Demo,注释包含相关知识点
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{
}
}