三大特殊类之String类

String 类:
final class String

  1. 实例化方式:
    直接赋值:
    String str="hello";
    通过构造方法:String str=new String("hello world");

  2. 字符串的相等比较:

    	“==”操作符用于比较两个变量的值是否相等,对于基本数据类型而言,比较的是数值的大小,对于引用类型而言,比较的实际是保存的地址是否相等而不会比较内容。
    所以在字符串内容比较时,需要使用String类提供的equals()方法,区分大小写。如:str1.equals(str2);
    	equalsIgnoreCase():不区分大小写
    
  3. String类的匿名对象(没起名字的对象)
    所有字符串常量都是 String类的匿名对象;
    在比较字符串是否相等于特定字符串时,将字符串常量写在equals前,通过字符串常量来比较;如:"hello world"equals(str);

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

直接赋值:
	在JVM内部会维护一个字符串常量池(对象数组)。若采用直接赋值的方式进行String类的实例化操作,那么该对象会自动保存到对象池之中。若下一次继续使用直接赋值的方式实例化String对象,先在对象池中寻找是否有指定内容对象,若有,则直接引用;否则创建新空间,将新对象入池以供下次使用。
构造方法:
	当使用构造方法实例化字符串时,实际上会开辟两次空间(字符串常量;new);实例化后的对象并不会保存到对象池之中。可以使用intern()方法入池。
  1. 字符串常量不可变更:
    表示堆中常量的值无法修改(更改的是引用),但是栈中的指向是可以改变;
    字符串不要改变太多次,慎用“+”

  2. 字符与字符串的相互转换:
    字符数组转化为字符串(char[] -> String):

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

将字符串转换为单个字符(String->char):

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

将字符串转换为字符数组(String -> char[]):

public char[] toCharArray():将字符串转换为字符数组;
  1. 字节转换为字符串(byte ->String):
    字节数组转换为字符串(byte[] -> String)
    字节用在二进制流与网络传输
public String(byte[] value):将字节数组全部转换为字符串;
public String(byte[] value,int offset,int len):将字节数组的部分内容转为字符串;
	字符串转为字节数组(String -> byte[])
public byte[] getBytes():将字符串转为字节数组;
public byte[] getBytes(String charSet):将字符串按照指定编码格式转为字节数组;
Linux默认编码为UTF-8,Windows默认编码为GBK
  1. 字符串比较方法:
    比较相等:
    equals
    equalsIngoreCase
    比较大小:
    public int compareTo(String anotherString):比较两个字符串的大小关系;
    负数:小于 0:相等 整数:大于
    compareTo()方法:按照ASCII码比较,只要发现不相等的内容算出差值直接返回,不会继续向下查找;

  2. 字符串查找:
    contains():判断一个子字符串是否存在;
    indexOf():查找指定字符串的位置;
    startsWith():判断是否以指定字符串开头;
    endsWith():判断是否以指定字符串结尾;

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

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

  5. 字符串截取:【左闭右开原则】
    public String substring(int beginIndex):从指定索引开始截取到字符串结尾;
    public String substring(int beginIndex,int endIndex):从指定索引开始到指定结束位置;

  6. 其他方法:
    trim():去掉字符串的左右两边空格,中间保留;
    toUpperCase():将字符串转大写处理;
    toLowerCase():将字符串转小写处理;
    length():返回字符串长度;
    isEmpty():判断是否为空字符串,不包含null;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值