总结String、Object、包装类的常用方法以及注意点
在javaSE中有三个特殊的类,分别是:String、Object、包装类,关于这三个类的知识点总结以及使用方法、注意事项的总结如下:
String类
String类在所有的开发项目中都可以用到
关于String类的实例化方式:a.直接实例化:String str=“abc”;//直接保存在堆中
b.传统实例化:String str=new String(“123”);
字符串相等比较: “==”本身是进行数值比较的,如果现在用于对象比较,那么所比较的应该就是两个对象所保存的内存地址数值比较,而没有比较对象的内容,那么如果想要进行内容比较,则必须采用String类提供的equals方法
在String类中“==”和equals的区别:
1.“==”进行的数值比较,比较的是两个字符串对象的内存地址数值
2.“equals()”可以进行字符串内容的比较
字符串常量是String的匿名对象
String类的两种实例化的区别:直接实例化多个相同内容的对象时,会自动入池,不会产生垃圾空间,但是通过构造方法实例化多个相同内容的对象时,会产生很多的垃圾空间,因此在String类中存在方法入池操作:public String intern();
字符串常量不可更改:所有的语言对于字符串的底层实现,都是字符数组,数组的最大缺陷就是长度固定。在定义字符串常量时,他的内容不可改变。
观察如下代码:String str=“hello”;
str=str+“world”;
str+=“!!!”;
system.out.println(str);
以上字符串的变更是字符串对象的变更而非字符串常量,所以发生了大量的垃圾空间。
原则:字符串使用就采用直接赋值
字符串比较就使用equals()实现
字符串别改变太多
字符与字符串:
public String (char value []) :构造方法,将字符数组中的所有内容变成字符串
public String (char value[],int offset,int count):构造方法,将部分字符数组中的内容变成字符串
public char charAt(int index):普通方法,取得指定索引位置的字符,索引从0
开始
public char() toCharArray() :普通方法,将字符串变成字符数组输出
字符串与字符数组的转换:
public String(byte bytes[]):构造方法,将字节数组变成字符串
public String(byte bytes[],int offset,int length):构造方法,将部分字节数组中的内容变成字符串
public byte[] getBytes(String charsetName)throws UnsupportedEncodingException :普通方法,编码转换处理
字节并不适合处理中文,只有字符适合处理中文,按照程序的概念来讲,一个字符等于两个字节。字节只适合处理二进制数据。
字符串比较:
String类提供的equals()方法本身是可以区分大小写的相等判断,除了这个方法之外,String类还提供有如下的比较操作:
public boolean equals(Object anObject):普通方法,区分大小写的比较
public boolean equalsIgnoreCase(String anotherString):普通方法,不区分大小写的比较
public int compareTo(String anotherString):普通方法,比较两个字符串大小关系
在String类中compareTo()方法是一个非常重要的方法,该方法返回一个整型,该数据会根据大小关系返回三类内容: 1.相等:返回0
2.小于:返回内容小于0
3.大于:返回内容大于0
字符串查找:
一个完整的字符串之中可以判断指定内容是否存在
字符串查找,最好用最方便的方法是contains();
public boolean contains(CharSequence s):普通方法,判断一个子字符串是否存在
使用indexOf()方法,如果内容重复,他只能返回查找到的第一个位置
字符串替换:
使用一个指定的新的字符串替换掉已有的字符串数据,可用的方法如下:
public String replaceALL(String regex,String replacement):普通方法,替换掉所有的指定的内容
public String replaceFirest(String regex,String replacement):普通方法,替换首个内容
字符串拆分:public String[]split(String regex):普通方法,将字符串全部拆分
public String[] split (String regex,int limit):普通方法,将字符串部分拆分,该数组的长度就是limit极限
字符串截取:从一个完整的字符串中截取出部分内容,可用方法如下:
public String substring(int beginIndex):普通方法,从指定索引截取到结尾
public String substring(int beginIndex,int endIndex):截取部分内容
public String trim():普通方法,去掉字符串中的左右空格,保留中间的空格
public String toUpperCase():普通方法,字符串转大写
public String toLowerCase():普通方法,字符串转小写
public native String intern():普通方法,字符串入池操作
public String concat(String str):普通方法,等同于“+”,不入池
public boolean isEmpty():普通方法,判断是否为空字符串,但不是null,而是长度为0
StringBuffer类
任何的字符串常量都是String对象,而且String的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指向而已。
为了方便字符串的修改,提供StringBuffer类,在String中使用“+”来进行字符串连接,但是这个操作在StringBuffer类中需要更改为append()方法:
public synchronized StringBuffer append(各种数据类型 b)
String和StringBuffer最大的区别在于:String的内容无法修改,而StringBuffer的内容可以修改。频繁修改字符串的情况考虑使用StringBuffer
StringBuffer独有的方法:字符串反转public synchronized StringBuffer reverse();
删除指定范围的数据:
public synchronized StringBuffer delete(int start,int end);
插入数据:
public synchronized StringBuffer insert(int offset,各种数据类型 b);
String、StringBuffe、StringBuilder的区别:
1.String的内容不可修改。StringBuffer和StringBuilder的内容可以修改
2.StringBuilder采用异步处理,属于线程不安全操作,效率高
StringBuffer采用同步处理,属于线程安全操作,效率低
3.在String中使用“+”操作,会默认更改为使用StringBuffer中的append方法
Object类
Object是java默认提供的一个类。java中除了Object类,所有的类都是存在继承关系的。默认会继承Object父类,即:所有类的对象都可以使用Object进行接收。
在开发中,Object类是参数的最高统一类型,但是Object类也存在有定义好的一些方法。如下:
public Object():构造方法,无参构造为子类服务
public String toStrinh():普通方法,取得对象信息
public boolean equals(Object obj):普通方法,对象比较
取得对象信息:
在使用对象直接输出的时候,默认输出的是一个地址编码。如果现在使用的是String类,该类对象直接输出的是内容,主要原因就是toString()方法的问题。
默认Object类提供的toString()方法只能够得到一个对象的地址,(而这是所有对象都共同具备的特征)。如若觉得默认的toString()方法功能不足,就在需要的子类上覆写toString()方法。
toString()的核心目的在于取得对象信息
String作为信息输出的重要数据类型,在java中的所有的数据类型只要遇到了String并且执行了“+”,那么都要求将其变为字符串就默认使用toString()方所有的法。
对象比较:
String类对象的比较使用的是equals()方法,实际上String类的equals()方法就是覆写的Object类中的equals()方法。
接受引用数据类型:Object可以接收任意的对象,因为Object是所有类的父类,但是Object并不局限于此,它可以接收所有的数据类型,包括:类,接口,数组
Object可以接收接口是java中的强制要求,因为接口本身不能继承任何类
Object真正达到了参数的统一,如果一个类希望接收所有的数据类型,就是用Object完成
包装类
包装类的基本原理:包装类就是将基本数据类型封装到类中
范例:自己定义一个包装类
class intdemo{
private int num;
public intdemo(int num){
this.num=num;
}
public int intvalue(){
return this.num;
}
}
这时候的intdemmo实际上就是int数据类型的包装类,利用intvalue就可以实现基本数据类型转变成对象的需求
基本数据类型包装成一个类对象的本质就是使用Object进行接收处理
装箱与拆箱:
在包装类与基本数据类型处理之中存在有两种概念:
装箱:将基本数据类型变为包装类对象,利用每一个包装类提供的构造方法实现装箱处理
拆箱:将包装类中包装的基本数据类型取出,利用Number类中提供的六种方法
字符串与基本数据类型:
String变成int类型(Integer类型) Interger.parseInt(原对象);
String变成double类型(Double类型)Double.parseDouble(原对象);
String变成Boolean类型(Boolean类型)
字符串与boolean转换就不受此影响
基本数据类型变为字符串:
1.任何数据类型使用了“+”连接空白字符串就变为了字符串类型
2.使用String类中提供的valueOf()方法,此方法不产生垃圾
在javaSE中有三个特殊的类,分别是:String、Object、包装类,关于这三个类的知识点总结以及使用方法、注意事项的总结如下:
String类
String类在所有的开发项目中都可以用到
关于String类的实例化方式:a.直接实例化:String str=“abc”;//直接保存在堆中
b.传统实例化:String str=new String(“123”);
字符串相等比较: “==”本身是进行数值比较的,如果现在用于对象比较,那么所比较的应该就是两个对象所保存的内存地址数值比较,而没有比较对象的内容,那么如果想要进行内容比较,则必须采用String类提供的equals方法
在String类中“==”和equals的区别:
1.“==”进行的数值比较,比较的是两个字符串对象的内存地址数值
2.“equals()”可以进行字符串内容的比较
字符串常量是String的匿名对象
String类的两种实例化的区别:直接实例化多个相同内容的对象时,会自动入池,不会产生垃圾空间,但是通过构造方法实例化多个相同内容的对象时,会产生很多的垃圾空间,因此在String类中存在方法入池操作:public String intern();
字符串常量不可更改:所有的语言对于字符串的底层实现,都是字符数组,数组的最大缺陷就是长度固定。在定义字符串常量时,他的内容不可改变。
观察如下代码:String str=“hello”;
str=str+“world”;
str+=“!!!”;
system.out.println(str);
以上字符串的变更是字符串对象的变更而非字符串常量,所以发生了大量的垃圾空间。
原则:字符串使用就采用直接赋值
字符串比较就使用equals()实现
字符串别改变太多
字符与字符串:
public String (char value []) :构造方法,将字符数组中的所有内容变成字符串
public String (char value[],int offset,int count):构造方法,将部分字符数组中的内容变成字符串
public char charAt(int index):普通方法,取得指定索引位置的字符,索引从0
开始
public char() toCharArray() :普通方法,将字符串变成字符数组输出
字符串与字符数组的转换:
public String(byte bytes[]):构造方法,将字节数组变成字符串
public String(byte bytes[],int offset,int length):构造方法,将部分字节数组中的内容变成字符串
public byte[] getBytes(String charsetName)throws UnsupportedEncodingException :普通方法,编码转换处理
字节并不适合处理中文,只有字符适合处理中文,按照程序的概念来讲,一个字符等于两个字节。字节只适合处理二进制数据。
字符串比较:
String类提供的equals()方法本身是可以区分大小写的相等判断,除了这个方法之外,String类还提供有如下的比较操作:
public boolean equals(Object anObject):普通方法,区分大小写的比较
public boolean equalsIgnoreCase(String anotherString):普通方法,不区分大小写的比较
public int compareTo(String anotherString):普通方法,比较两个字符串大小关系
在String类中compareTo()方法是一个非常重要的方法,该方法返回一个整型,该数据会根据大小关系返回三类内容: 1.相等:返回0
2.小于:返回内容小于0
3.大于:返回内容大于0
字符串查找:
一个完整的字符串之中可以判断指定内容是否存在
字符串查找,最好用最方便的方法是contains();
public boolean contains(CharSequence s):普通方法,判断一个子字符串是否存在
使用indexOf()方法,如果内容重复,他只能返回查找到的第一个位置
字符串替换:
使用一个指定的新的字符串替换掉已有的字符串数据,可用的方法如下:
public String replaceALL(String regex,String replacement):普通方法,替换掉所有的指定的内容
public String replaceFirest(String regex,String replacement):普通方法,替换首个内容
字符串拆分:public String[]split(String regex):普通方法,将字符串全部拆分
public String[] split (String regex,int limit):普通方法,将字符串部分拆分,该数组的长度就是limit极限
字符串截取:从一个完整的字符串中截取出部分内容,可用方法如下:
public String substring(int beginIndex):普通方法,从指定索引截取到结尾
public String substring(int beginIndex,int endIndex):截取部分内容
public String trim():普通方法,去掉字符串中的左右空格,保留中间的空格
public String toUpperCase():普通方法,字符串转大写
public String toLowerCase():普通方法,字符串转小写
public native String intern():普通方法,字符串入池操作
public String concat(String str):普通方法,等同于“+”,不入池
public boolean isEmpty():普通方法,判断是否为空字符串,但不是null,而是长度为0
StringBuffer类
任何的字符串常量都是String对象,而且String的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指向而已。
为了方便字符串的修改,提供StringBuffer类,在String中使用“+”来进行字符串连接,但是这个操作在StringBuffer类中需要更改为append()方法:
public synchronized StringBuffer append(各种数据类型 b)
String和StringBuffer最大的区别在于:String的内容无法修改,而StringBuffer的内容可以修改。频繁修改字符串的情况考虑使用StringBuffer
StringBuffer独有的方法:字符串反转public synchronized StringBuffer reverse();
删除指定范围的数据:
public synchronized StringBuffer delete(int start,int end);
插入数据:
public synchronized StringBuffer insert(int offset,各种数据类型 b);
String、StringBuffe、StringBuilder的区别:
1.String的内容不可修改。StringBuffer和StringBuilder的内容可以修改
2.StringBuilder采用异步处理,属于线程不安全操作,效率高
StringBuffer采用同步处理,属于线程安全操作,效率低
3.在String中使用“+”操作,会默认更改为使用StringBuffer中的append方法
Object类
Object是java默认提供的一个类。java中除了Object类,所有的类都是存在继承关系的。默认会继承Object父类,即:所有类的对象都可以使用Object进行接收。
在开发中,Object类是参数的最高统一类型,但是Object类也存在有定义好的一些方法。如下:
public Object():构造方法,无参构造为子类服务
public String toStrinh():普通方法,取得对象信息
public boolean equals(Object obj):普通方法,对象比较
取得对象信息:
在使用对象直接输出的时候,默认输出的是一个地址编码。如果现在使用的是String类,该类对象直接输出的是内容,主要原因就是toString()方法的问题。
默认Object类提供的toString()方法只能够得到一个对象的地址,(而这是所有对象都共同具备的特征)。如若觉得默认的toString()方法功能不足,就在需要的子类上覆写toString()方法。
toString()的核心目的在于取得对象信息
String作为信息输出的重要数据类型,在java中的所有的数据类型只要遇到了String并且执行了“+”,那么都要求将其变为字符串就默认使用toString()方所有的法。
对象比较:
String类对象的比较使用的是equals()方法,实际上String类的equals()方法就是覆写的Object类中的equals()方法。
接受引用数据类型:Object可以接收任意的对象,因为Object是所有类的父类,但是Object并不局限于此,它可以接收所有的数据类型,包括:类,接口,数组
Object可以接收接口是java中的强制要求,因为接口本身不能继承任何类
Object真正达到了参数的统一,如果一个类希望接收所有的数据类型,就是用Object完成
包装类
包装类的基本原理:包装类就是将基本数据类型封装到类中
范例:自己定义一个包装类
class intdemo{
private int num;
public intdemo(int num){
this.num=num;
}
public int intvalue(){
return this.num;
}
}
这时候的intdemmo实际上就是int数据类型的包装类,利用intvalue就可以实现基本数据类型转变成对象的需求
基本数据类型包装成一个类对象的本质就是使用Object进行接收处理
装箱与拆箱:
在包装类与基本数据类型处理之中存在有两种概念:
装箱:将基本数据类型变为包装类对象,利用每一个包装类提供的构造方法实现装箱处理
拆箱:将包装类中包装的基本数据类型取出,利用Number类中提供的六种方法
字符串与基本数据类型:
String变成int类型(Integer类型) Interger.parseInt(原对象);
String变成double类型(Double类型)Double.parseDouble(原对象);
String变成Boolean类型(Boolean类型)
字符串与boolean转换就不受此影响
基本数据类型变为字符串:
1.任何数据类型使用了“+”连接空白字符串就变为了字符串类型
2.使用String类中提供的valueOf()方法,此方法不产生垃圾