总结String、Object、包装类的常用方法以及注意点

 总结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()方法,此方法不产生垃圾

猜你喜欢

转载自blog.csdn.net/sd116460/article/details/80941947