Java String字符串类的应用

String的构建

  • String类的概述
    String类代表字符串。java中所以字符串的字面值都作为此类的实例实现。
    字符串在JVM中是以常量方式存储,他们的值在创建后不能更改,只能被覆盖 。
    String类是java中非常重要的引用数据类型,几乎所有数据都可以用String进行表示。

  • String类的构造器
    public String():无参构造器,只用于创建一个String对象,是一个空串
    public String(byte[] bytes):以byte型数组为参数,构建一个字符串对象,byte型数组的元素应是字符型,不然会出现垃圾字符
    public String(char[] chars):以char型数组为参数,构建一个字符串对象
    public String(byte[] bytes,int offset,int count):以
    byte型数组为参数,构建一个字符串对象,但具有一定的格式,即以offset为起点,以count为长度,构建一个字符串对象
    public String(char[] chars,int offset,int count):以char型数组为参数,构建一个字符串对象,但具有一定的格式,即以offset为起点,以count为长度,构建一个字符串对象
    publlic String (String str):以字符串str为参数,构建一个字符串对象,将数据类型的str转化为引用类型
    public String(StringBuffer buffer):以StringBuffer对象buffer为参数,构建一个字符串,与一般字符串对象的区别在于以这种构造器构造的字符串可以修改

		String str = new String();//构建无参构造器
	
		/*
		 * 以byte数组为参数
		 */
		byte []bytes = {'1','2','3'};//这里需要注意编码,当bytes为整型数时,由于编码格式的差异会出现垃圾字符
		String str2 = new String(bytes);//第一种
		String str3 = new String(bytes,1,1);//第二种,从索引为1开始,将1个字符存入str3中
		
		/*
		 * 以char数组为参数
		 */
		char []chars = {'I','l','o','v','e','C','h','i','n','a'};
		String str4 = new String(chars);//第一种
		String str5 = new String(chars,1,4);//第二种,从索引为1开始,将4个字符存入str5中
		
		/*
		 * 以字符串为参数
		 */
		String str6 = new String("I am a Chinese");
		
		/*
		 * 以StringBuffer对象为参数
		 */
		StringBuffer str8 = new StringBuffer("I love China");//这里str8可以调用StringBuffer类中的方法,可以更改StringBuffer的对象,达到一个类似的更改字符串的目的
		String str7 = new String(str8);

String类常用方法(一)

  1. public char charAt(int index):根据索引index返回字符串中的某个字符
  2. public int compareTo(String target):根据ASCII码的值与字符串target作比较,从第一个字符开始,相等则往后比,返回调用者与target的差值
  3. public boolean equals(String target):从Object继承并重写的方法,判断是否与字符串target的字符序列相等,并不是判断是否是同一对象(判断是否是同一对象是需要使用全等号==)
  4. public boolean equalsIgnoreCase(String target):与equals方法类似,但这里是指忽略大小写之后进行比较,即A与a相同
  5. public boolean endsWith(String suffix):是否以字符串suffix为后缀
  6. public boolean startsWith(String prefix):是否 以字符串prefix为前缀
		String str = new String("IloveChina");
		
		/*
		 * 根据索引返回目的字符
		 */
		char destination = str.charAt(1);//返回索引为1的字符,输出为l,越界会报错
		
		/*
		 * 字符串比较
		 */
		int res = str.compareTo("iloveChina");//比较I与i,小了32,所以输出值为-32
		int res2 = str.compareTo("ILoveChina");//这里第一位相同,则比较第二位,比较l与L,大了32,所以输出值为32
		int res3 = str.compareTo("IloveChina");//两者完全相同,所以输出值是0
		
		/*
		 * 字符串判断是否相等
		 */
		boolean bool = str.equals("IloveChina");//两者字符序列相同,输出为true
		boolean bool2 = str=="IloveChina";//两者并非同一对象,输出为false
		
		/*
		 * 忽略大小写,字符判断
		 */
		boolean bool3 = str.equalsIgnoreCase("ilovechina");//忽略了大小写形式的差异,输出为true
		
		/*
		 * 判断是否为前缀或后缀
		 */
		boolean bool4 = str.endsWith("ina");//以ina结尾,输出为true
		boolean bool5 = str.startsWith("I");//以 I开头,输出为true

String类常用方法(二)

  1. public String trim():去除字符串前后的空格并返回,这是返回了一个新的字符串,而不是更改了原来的字符串
  2. public int indexOf(int ch):在字符串中查找字符 ch返回索引,找不到则返回-1
  3. public int indexOf(int ch,int fromIndex):在字符串中,从第fromIndex个字符开始查找字符ch,返回索引,找不到则返回-1
  4. public int indexOf(String target):在字符传查找字符串target,返回target第一个字符在调用者中的索引,找不到则返回-1
  5. public int indexOf(String target,int fromIndex):在字符串中,从第fromIndex个字符开始查找字符串target,返回target第一个字符在调用者中的索引,找不到则返回-1
  6. public int length():返回字符串的长度
		String str = new String(" IloveChina   ");
		
		/*
		 * 去除空格
		 */
		String str2 = str.trim();//仅能去除前后的空格,而不是中间的 
		
		/*
		 * 查找字符与字符串
		 */
		int i = str.indexOf('l');//查找字符l,返回值为2
		int i2 = str.indexOf('l', 2);//从第七个字符开始,查找字符l,返回值为2
		int i3 = str.indexOf("lo");//查找字符串lo,返回值为2
		int i4 = str.indexOf("lo",2);//从第二个字符开始,查找字符串lo,返回首字符索引2
		
		/*
		 * 求字符串长度
		 */
		int length = str.length();//返回str长度14

String类常用方法(三)

  1. public String[] split(String regex):将字符串以regex字符串分割为字符数组并返回,作为分割的字符串舍弃
  2. public String substring (int beginIndex):从beginIdex开始提取数组
  3. public String substring(int beginIndex,int endIndex):从beginIndex开始提取数组以endIndex结束,endIndex舍弃
  4. public char[] toCharArray():将字符串转化为字符数组
  5. public String toLowerCase():将字符串所有大写字符转化为小写
  6. public String toUpperCase():将字符串所有小写字符转化为大写
		String str = new String("Java,Python,C,C#,C++,PHP");
		
		/*
		 * 分割字符串
		 */
		String strs[] = str.split(",");//将每个字符串以','分割,存入数组
		
		/*
		 * 提取字符串
		 */
		String str2 = str.substring(5);//从索引为5的字符开始提取字符串
		String str3 = str.substring(5, 11);//从索引为5的字符开始提取字符串到索引为10停止提取,索引为10的字符舍弃不提取
		
		/*
		 * 字符串类型转换
		 */
		char chrs[] = str.toCharArray();//将字符串转化为字符数组
		String str4 = str.toLowerCase();//将字符串转化为小写
		String str5 = str.toUpperCase();//将字符串转化为大写

StringBuilder概述

一个可变的非线程安全的安全序列,它与StringBuffer基本类似,但StringBuffer是线程同步的。在不涉及到多线程的应用中通常使用此类,因为它的执行效率要比StringBuffer更高 。在允许对某字符进行原字符序列进行更改是时应该首选此类,如果涉及到多线程中建议使用StringBuffer。

StringBiuder构造器

  • public StringBuilder():构建一个空的、可修改的字符串序列
  • public StringBuilder(int capacity):构建一个空的、可修改的字符串序列,StringBuilder默认是一个大小为16个字节的字符数组,这里为StringBuider构造了一个缓冲区的大小capacity
  • public StringBuilder(String str):使用一个已知的字符串构建一个StringBuilder对象
  • public StringBuider(CharSequence seq):使用一个CharSequence对象seq构建一个StringBuilder对象
		/*构建一个StringBuilder对象*/
		StringBuilder builder = new StringBuilder();
		
		/*构建一个StringBuilder对象并设置了缓冲区大小*/
		StringBuilder builder2 = new StringBuilder(1);
		
		/*以字符串为参数构建一个StringBuilder*/
		StringBuilder builder3 = new StringBuilder("IamaChinese");

StringBuilder类的常用方法

  1. public StringBuilder append(Object obj):追加数据,将任意类型作为参数,链接到末尾
  2. public StringBuilder delete(int start,int end):删除字符序列,以索引start开始,end索引结束,end保留
  3. public StringBuilder deleteCharAt(int index):删除索引index所指向的一个字符
  4. public StringBuilder insert(int offset,Object obj):插入字符序列,将任意类型作为参数,从索引offset插入字符序列
  5. public StringBuilder replace(int start,int end,String str):替换字符序列,以索引start开始,索引end结束,end保留,将字符串str替换该段字符序列
  6. public StringBuilder reverse():翻转字符序列
  7. public void setLength(int newLength):改变长度,将newLength长度的字符序列保留,其余舍弃
  8. public void setCharAt(int index,char ch):替换某一个字符,在索引index出将ch字符替换原有字符
		/*追加数据*/
		builder.append("hijklmn");//在builder后追加hijklmn,追加后builder变为abcdefghijklmn
		
		/*删除数据*/
		builder.delete(7, 14);//删除索引7-13的字符序列,删除后builder变为abcdefg
		
		builder.deleteCharAt(0);//删除索引为0的字符,删除后builder变为bcdefg
		
		/*插入数据*/
		builder.insert(1, "hijklmn");//将hijklmn从索引为1的位置插入builder,插入后builder变为bhijklmncdefg
		
		/*替换数据*/
		builder.replace(1, 8, "abcdefg");//从索引为1开始,索引为8结束将abcdefg替换原有 字符,替换后builder变为babcdefgcdefg
		builder.setCharAt(0, 'a');//将索引为0的字符替换为a,替换后builder变为aabcdefgcdefg
		
		/*翻转数据*/
		builder.reverse();//将字符序列前后翻转,翻转后builder变为gfedcgfedcbaa
		
		/*改变长度*/
		builder.setLength(3);//改变序列长度为3,即仅保留三个字符,其余舍弃,改后builder变为gfe
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值