Java三大类(String、Object、包装类)常用方法小结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43869553/article/details/88697507

String类(final class String)
1·实例化方式

直接赋值String str="hello world";
通过构造方法赋值String str1=new String("hello string");

2·字符串的相等比较“==”
操作符用于比较两个变量的值是否相等,对于基本类型而言,比较的就是数值大小;对于引用类型而言,比较实际上是保存地址是否相等而不会比较内容所以在字符串比较时,需要使用String类提供的equals()方法。

区分大小写比较:str1.equals;
不区分大小写比较:equalsIngoreCase();

3·String类的匿名对象(没起名字的对象)
所有字符串常量“”都是String类的匿名对象
在比较两个字符串是否等于特定字符串时,将字符串常量写在equals前,通过字符串常量来比较

`"hello world".equals(str1)`;

在进行接收用户输入数据时应该考虑到用户是否输入。未输入时会产生NullPointerException问题

4·两种实例化区别
直接赋值与构造赋值

直接赋值:在JVM内部会维护一个字符串常量池(对象数组)。若采用直接赋值的方式进行String类的实例化操作,那么该对象会自动保存到对象池中。若下一次继续使用直接赋值的方法实例化String对象,先在对象池中寻找是否有指定内容对象,若有,直接引用。否则创建新空间,将新对象入池以提供下次使用。

构造赋值:当使用构造方法实例化字符串时,实际上会开辟两次空间,其中一块空间成为垃圾空间,实例化后的对象并不会保存到对象池中,可以使用.intern()方法来手工入池

5·字符串常量不可变更:
堆中常量的值无法修改,但是栈中的指向可以更改字符串不要改变太多次,慎用“+”

6·char<->String

a· char[ ]->String

public String (char[ ] value);将字符数组全部转为字符串
public String (char[ ] value,int offset,int len);将字符数组部分转为字符串

b·String->char

public char charAt(int index);取得字符串指定引索的字符,从0开始

c·String->char[ ]

 public char[] toCharArray();将字符串转为字符数组

7·byte<->String
字节用二进制流与网络传输中

byte[ ]->Stringpublic String (byte [] vaule);

将字节数组全部转为字符串

public String (byte [] vaule,int offset,int len);
String->byte[ ]public byte[] getBytes();将字符串转为字节数组
public byte[] getBytes(String charSet);将字符串按照指定编码格式转为字节数组,linux默认编码为UTF-8,在windouws默认为GBK编码:将字符串按照怎样的算法转为字节
8

·字符串比较方法

比较相等equalsequalsIngoreCase
比较大小public int compareTo(String anotherString);//比较两个字符串大小关系
//(int即代表一个String.)

负数:小于
0:相等
正数:大于
按照ASCII码比较,只要发现不相等的内容算出差值直接返回,不会继续向下查找
9·字符串查找算法1,6,7,8

containsindexOf:intstartsWithendsWith

10·字符串替换(敏感词过滤*****)

public String replaceAll(String regex,String replacement);将字符串中所有指定内容替换为新内容
public String replaceFirst(String regex,String replacement);替换首个内容

11·字符串拆分

public String[] split (Spring regex);按照指定格式将字符串全部拆分
public String[] split (Spring regex,int limit);将字符串部分拆分,数组长度为限定limit(个数)长度(Spring[]为str.))

12·字符串的截取

public String substring (int beginIndex);从指定索引开始截取到字符串结尾(闭合)
public String substring (int beginIndex,int endIndex);从指定索引开始到指定结束位置(左闭右开)

13·其他操作方法1,2,3,6,7
trim();去掉字符串的左右两边空格,中间保留toUpperCase();
将字符串转大写操作toLowerCase();
转小写操作isEmpty();判断是否是空字符,不包含null

14·两SB:为了方便进行字符串的修改StringBuffer字符串拼接使用append()方法
String<->StringBuffer
String->StringBuffera·

通过StingBuffer的构造方法public StringBuffer (String str)

b·通过append(String str):StringBuffer
StringBuffer->String
调用StringBuffer的toString()
独有方法:字符串反转:reserve删除指定位置字符串:delete(int start,int end)在指定位置插入任意元素:insert (int offest,任意元素 b)
StringBulider
面试题:
请解释String与StringBuffer,StringBulider的区别
1·String常量内容不可修改,而其它两个可以修改
2·StringBuffer使用同步处理,线程安全,性能较低StringBulider使用异步处理,线程不安全,性能较高在普遍场景下推荐使用StringBulider获取叫高性能,当String对象用“+”进行字符拼接时,javac编译器会将String对象变为StringBulider而后调用append()来修饰字符串内容,减少无用空间的开辟

Object类(所有类的父类,所有类默认继承Objiect类)
toString()
取得对象信息System.out.println()系统输出输出对象时,默认会调用该对象的toString()若自定义类需要进行内容的输出,需要覆写toString()
equals():
比较两个对象内容Objiec类提供的equals默认比较两个对象的地址是否相同

    public boolens equals(Object obj) {//判断地址是否相等
    if (obj==this){return ture;
    }//判断传进来的对象不是Person对象
    if(!(obj instenceof Person)){
    return flase;
    }//此时需要比较两个Person对象的内容//

需要向下转型转回Person对象后

比较两者的属性内容

Person per=(Person)obj;
return this.age ==per.age&&this.name.equals(per.name);
}

Object 类可以接收所有引用类型,包括接口与数组Object类是参数的最高统一类型
包装类-将基本类型封装到类中数值型(Number的子类):Byte,Short,Integer(int),Long,Float,Double对象类(Object的子类):Boolean,Character(char)
装箱与开箱装箱:将基本数据类型变为包装类对象,通过每个包装类的构造方法实现装箱处理拆箱:将包装类中包装的基本数据类型取出,利用包装类提供的xxValue()方法Interger提供intValue();
自动拆装箱-JDK1.5使用包装类与使用基本类型在用法上基本一致

关于基本数据类型与包装数据类型的使用标准如下(用基本类型还是包装类): 1) 【强制】所有的 POJO(简单java类,类中只有getter/setter,构造方法) 类属性必须使用包装数据类型。
2) 【强制】RPC 方法的返回值和参数必须使用包装数据类型。
3) 【推荐】所有的局部变量使用基本数据类型
包装类进行数值比较使用equals方法
对于Integer var = ? 在-128 至 127 范围内的赋值,Integer对象是在IntegerCache.cache (缓存池)产生,会复用已有对象,这个区间内的Integer值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,推荐使用equals方法进行判断。

String<->基本类型
String->基本类型
使用各个包装类提供的parseXX(),Intger.parseInt(str)当字符串中包含非数字,在运行时会抛出NumberFormatException
基本类型->String
1·“+”
2·通过String的构造方法
3·推荐:使用String.valueOf(所有基本类型)

猜你喜欢

转载自blog.csdn.net/weixin_43869553/article/details/88697507
今日推荐