Byte、Short、Integer、Long、Float、Double这六个对象是继承自Number,Number继承于Object
Boolean、Character直接继承于Object
八大基本类型对象都有实现Comparable、Serializable接口
Serializable接口:串行化(序列化),可以在网络上传输
Comparable接口:对象可以相互进行比较
Integer自动装箱,范围在-128~127之间使用的是Integer缓存数组(通过调用Integer.valueOf()方法),每次从数组里取值。不论取多少次,值都是相同一个。
不在缓存数组里则是new 一个新的Integer对象。
如果有基本数据类型和包装类进行比较判断,则比较的都是基本数据类型。
是char[]字符数组,该数组是final类型,不可以被修改。指的是地址不能被修改,数组value不能指向新的对象。
String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是在更改地址,效率较低。
返回的是常量池的对象(地址)
根据创建对象方式的不同,String地址的表现形式不一样
hashcode返回的是对象的地址。最终对象的地址。对于String来说,就是常量池中对象的地址。
==比较的是地址,栈中存储的地址(地址也是值的一种)
equals比较的是值,最终指向的值
equals:区分大小写,判断内容是否相等
equalsIgnoreCase:不区分大小写,判断内容是否相等
length:获取字符的个数,字符串的长度
indexOf:获取字符在字符串中第一次出现的索引,索引从0开始,如果找不到,返回-1
lastIndexOf:获取字符在字符串中最后一次出现的索引
substring:截取指定范围的字符串的子串
trim:去前后空格
charAt:获取某索引出的字符,不能使用Str[index]这种方式
toUpperCase:返回转换成大写的字符串
toLowerCase:返回转换成小写的字符串
concat:拼接字符串
compareTo:比较两个字符串的大小
toCharArray:转换成字符数组
format:格式字符串,%s 字符串 %c 字符 %d 整型 %.2f 浮点型
%s、%c、%d、%.2f等是占位符,由后面的变量来替换
replace:返回替换字符串中的字符
split:分割字符串,对于某些分割字符,我们需要转义,比如|等
返回数组,以参数作为分割符
StringBuffer类是继承AbstractStringBuffer类
实现了Serializaable接口
父类AbstractStringBuffer有属性char[] value,不是final修饰的
该value存放字符串内容,存放位置在堆中
--------相比于String,String是直接继承自Object类,自己有char[] value,是final的,不可被修改,该value存放字符串内容,存放位置在常量池中
StringBuffer是被final修饰的,不能被继承
StringBuffer保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上就是更新值,不用每一次更新地址(创建新对象),效率较高
StringBuffer()
无参构造器,不带字符的字符串缓冲区,初始容量为16个字符
StringBuffer(CharSequence seq)
构造一个字符串缓冲区,包含与指定的CharSequence相同的字符
StringBuffer(int capacity)
构造一个不带字符,具有指定初始容量的字符串缓冲区。大小为传进来的capacity值
StringBuffer(String str)
构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容
大小为指定字符串长度+16
String--------->StringBuffer
//1.使用构造器 String str = "study java"; StringBuffer stringBuffer1 = new StringBuffer(str); //2.使用append方法 StringBuffer stringBuffer2 = new StringBuffer(); stringBuffer2 = stringBuffer2.append(str);
StringBuffer-------->String
//1.使用StringBuffer提供的toString方法 String s3 = stringBuffer2.toString(); //2.使用构造器 String s4 = new String(StringBuffer2);
一个可变的字符序列,此类提供一个与StringBuffer兼容的API,但不保证同步(StringBuilder不是线程安全的)。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候,如果可能,简易优先采用该类,因为在大多数实现中,它比StringBuffer要快。
可以重载这些方法,用来接受任意类型的数据