字符串 String 类的使用


目录

字符串的创建

 字符串的比较方法

比较相等

 比较大小

 字符串常量池

 字符串的常见操作

 字符串查找

字符串替换

字符串拆分

 字符串截取

 其他会用到的字符串操作

  • 字符串的创建

 创建一个字符串有很多种方式,以下是用的比较多的方式

Strint s="str";//  第一种

String s1=new String("str");//   第二种

char[] arr ={'s','t','r'};
String s2 =new String(arr);//    第三种
 
StringBuffer buffer =new StringBuffer();
String s3 =new String(buffer);   //第四种

第一种方式是直接引用一个字面值字符常量,s存的是字符串"str"的地址,可以修改指向,但不能修改"str"这个字符串,这也是平常说的字符串不可变性;

第二种方式是通过创建一个字符串对象,对象指向字符串,然后s引用这个字符串对象,在内存上的分布大致如下

 为什么我写成字符数组的形式呢,因为在String对象中,String也是基于char[]实现的,所以说才会有第三种创建方式;

第三种创建方式也是类似的,先将char[]数组放入常量池,然后String对象指向,s2再引用这个对象;

第四种创建,一般要从StringBuffer 变成String 直接用toString方法就好了;

  •  字符串的比较方法

 字符串比较有两种,一种是比较相不相等,一种是比较大小关系

  • 比较相等

比较相不相等的方法就用equals方法,如下,返回值是boolean类型,true代表相等,反之不相等,

运行结果如下

 可以看出除了第三个是false其余都是true,为什么呢?原因是因为String 是引用类型,如果直接用== 号来进行比较的话是直接比较地址的,因为在运行的时候,==会调用Object类里面的equals方法,所以不相等

 所以说String对象的比较要用equals方法,因为String类重写了Object类的equals方法,String的equals是直接比较内容的,源码如下

 

  •  比较大小

String对象的比较大小和比较相等一样,不能直接用>或者<,这样比较的只是地址,而是要用String的方法compareTo方法,返回值是一个int类型,这个方法是根据字典序一个个比较的

 

 

可以很明显的看出,如果当前对象判断的字符大于比较对象判断的字符,那就返回个1,反之返回-1,相等返回0;

 

  •  字符串常量池

       字符串常量池,顾名思义,就是个存储池子,你想要的时候先从里面找,找不到再自己创建放到池子里,为什么要这样做呢?给大家比个形象比喻,有一个女神,很多人想要追到她,但是女神又不知到谁比较优秀,就只能每一个都培养一些感情,然后放入备胎池~,这样子当女神找到中意的后就直接捞起来当男朋友了,因为之前已经培养过感情,所以不需要重新培养,省去了很多功夫,如果女神每找一个男朋友都相处一段时间,那效率就很低了,不如放在池子里,需要时候就捞起来,哈哈哈

String s ="str";

这个是创建一个字符串时的过程

 先从常量池里找一遍有没有str这个字符串,有的话,就让对象直接引用,没有就创建在常量池中再引用

  •  字符串的常见操作

  •  字符串查找


public boolean contains(String  s);  //判断是否存在字串s

public int indexOf(String s);   //判断字串第一次出现的位置

这两个是平常刷题用的比较多的

  • 字符串替换

public String replaceAll(String s,String str) //将所有的字符串s替换成str;

public String replaceFirst(String s,String str); //首个出现的s替换成str;

由于字符串本身的不可变性,所以替换不是在字符串本身替换,只是重新创建了一个字符串并返回

  • 字符串拆分

public String[] split(String s); //按照字符串s来拆分比如说:

String str = "abc abc";
String[] array=str.split(" ");  //那么就会以" "空格的形式拆分,得到两个abc;
   
String str1="abcde";
String[] array1=str1.split("");  //按照空字符串拆分,得到的是所有元素"a","b","c","d","e";
  •  字符串截取

public String subString(int index);  //从index位置截取后面的字符串出来
  •  其他会用到的字符串操作

public String toUpperCase();  //将当前字符串对象所有的小写字母都转为大写

public String toLowerCase();  //将当前字符串对象所有的大写字母都转为小写
  
public static String format(String format,Object... args);  //按照一定的格式返回字符串,这个方法在要求保留精度时有用比如说保留两位小数 那参数就是format("%.2f",Object... args);

public static String valueOf(基本类型 s); //可以将基本类型int long,float,double 等转为字符串
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值