三大特殊类
1.String类(一旦定义不可更改)
==与.equals的区别:==比较的是两字符串的地址,.equals比较的是两字符串的内容

public static void main(String[] args) {
    String str="123";
    String str1=new String("123");
    System.out.println(str.equals(str1));//true
    System.out.println(str==str1);//false
}

String赋值时,直接赋值时该字符串保存在在常量池中,不是直接赋值时保存在堆上。常量池中相同的字符串只放一个,以后再有相同内容的字符串将直接引用不用重新开辟内存,以减少内存消耗。
手动入池方法:intern();

//手动入池
public static void main(String[] args) {
    String str="123";
    String str1=new String("123").intern();
    System.out.println(str1.equals(str));//true
    System.out.println(str==str1);//true
}

面试题:比较String两种对象实例化方法的区别:
1.直接赋值:只会开辟一块堆内存空间,且字符串内容会保存到常量池中。
2.构造方法:会开辟两块对内存空间,其中一块成为垃圾空间,且不会保存在常量池中,可用intern()方法手动入池。

String的方法: charAt(int index)取得指定索引位置的字符,从0开始.
toCharArray()将字符串变为字符数组返回 如:char[]=str.toCharArray();
.equalsIgnoreCase(String str)不区分大小写的比较;
CompareTo()比较两个字符串(ASCII码)大小关系,相等返回0,小于返回内容小于0,大于返回内容大于0;
IndexOf(String str,int fromIndex)从指定位置开始查找字符串位置;如果内容重复,只能返回查找的第一个位置。
.contains(String str)判断一个字符串是否存在;
split(String regex,int limit)将字符串按照regex拆分,每组的最大长度为limit。
.toUpperCase();字符串转大写。.toLowerCase();字符串转小写。
.isEmpty();判断字符串是否为空

StringBuffer的内容可更改,用append()方法;StringBuffer变为String用toString()方法
StringBuffer方法:.reverse()字符串的反转

面试题:String、StringBuffer、StringBulider的区别:
1、String的内容不可修改,StringBuffer、StringBulider的内容可以修改。2、StringBuffer采用同步处理,属于线程安全操作;StringBulider采用异步处理,属于线程不安全操作。StringBuffer为变量,String为常量。

2、Object类
Object为所有类的父类。Object可以接受所有的数据类型,包括:类、数组、接口。
3、包装类
包装类的类型:(1) 对象型(Object的直接子类):Boolean、Character(char);
(2)数值型(Number的直接子类):Byte、Double、Short、Long、Integer、Float;
装箱与拆箱
装箱:将基本数据类型变为包装类对象,利用每一个包装提供的构造方法实现装箱处理。
拆箱:将包装类中包装的基本数据类型取出。利用Number类中提供的六种方法。
手动装箱拆箱:

Integer num = new Integer(55) ; // 装箱
int data = num.intValue() ; // 拆箱
System.out.println(data);

自当装箱拆箱:

Integer x = 55;
System.out.println(++x);

阿里编码规范:所有相同类型的包装类对象之间值进行比较,全部使用equals方法。

字符串与基本数据类型转换需要使用包装类
(1)将字符串变为int型:

String str = "123060" ; // String类型
int num = Integer.parseInt(str) ;
System.out.println(num);

(2)将字符串变为double型:

String str = "123" ; // String类型
double num = Double.parseDouble(str) ;
System.out.println(num);

注:字符串转为数字时,如果有非数字则会报错。
(3)将字符串变为boolean型:(只有字符串内容为”true”时,才返回true)

String str = "true111" ; // String类型
boolean num = Boolean.parseBoolean(str) ;
System.out.println(num);//false

将基本类型转为字符串:1、使用String的valueOf()方法,此方法不产生垃圾。 2、任何数据类型只要使用”+”连接空白字符就变成了字符串类型。