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

 

 

1.String类在所有的开发项目中都可以用到关于String类的实例化方式:

                                         A. 直接实例化:String str=“abc”;//直接保存在堆中

                                         B.传统实例化:String str=new String(“123”);

2.字符串相等比较:

 “==”本身是进行数值比较的,如果现在用于对象比较,那么所比较的应该就是两个对象所保存的内存地址数值比较,而没有比较对象的内容,那么如果想要进行内容比较,则必须采用String类提供的equals方法

2.1在String类中“==”和equals的区别:

                                       A.“==”进行的数值比较,比较的是两个字符串对象的内存地址数值

                                       B“equals()”可以进行字符串内容的比较

3.字符串常量是String的匿名对象String类的两种实例化的区别:

3.1直接实例化多个相同内容的对象时,会自动入池,不会产生垃圾空间,

3.2但是通过构造方法实例化多个相同内容的对象时,会产生很多的垃圾空间

因此在String类中存在方法入池操作:

public String intern();

  1. 字符串常量不可更改:所有的语言对于字符串的底层实现,都是字符数组,数组的最大缺陷就是长度固定。在定义字符串常量时,他的内容不可改变。

Eg:观察如下代码:

                    String str=“hello”;

                     str=str+“world”;

                    str+=“!!!”;

                system.out.println(str);

以上字符串的变更是字符串对象的变更而非字符串常量,所以发生了大量的垃圾空间。

原则:a.字符串使用就采用直接赋值

      b.字符串比较就使用equals()实现

    c.字符串别改变太多字符与字符串

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 :普通方法,编码转换处理字节并不适合处理中文,只有字符适合处理中文,按照程序的概念来讲,一个字符等于两个字节。字节只适合处理二进制数据。

  1. 字符串比较: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字符串查找:一个完整的字符串之中可以判断指定内容是否6.存在字符串查找,最好用最方便的方法是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

*********************************************************************************************************************************

  1. StringBuffer类任何的字符串常量都是String对象,而且String的常量一旦声明不可改变,

如果改变对象内容,改变的是其引用的指向而已。

为了方便字符串的修改,提供StringBuffer类,在String中使用“+”来进行字符串连接,

但是这个操作在StringBuffer类中需要更改为append()

6.1方法:public synchronized StringBuffer append(各种数据类型 b)

注意:String和StringBuffer最大的区别在于:

String的内容无法修改,而StringBuffer的内容可以修改。

频繁修改字符串的情况考虑使用StringBufferStringBuffer独有的方法:

字符串反转public synchronized StringBuffer reverse();

删除指定范围的数据:public synchronized StringBuffer delete(int start,int end);

插入数据:public synchronized StringBuffer insert(int offset,各种数据类型 b);

 

 

 

***************************************************************************************************************************

 

 

  1. 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/qq_41832361/article/details/88871886