字符串的相关操作(定义、拼接、比较、判断字符串是否为空串或null串、查看码点或代码单元、遍历字符串等)

本文详细介绍了Java中字符串的操作,包括substring方法截取子串、使用+进行拼接、通过equals和equalsIgnoreCase比较字符串、判断空串与null串,以及码点和代码单元的概念。示例代码展示了字符串的常见用法,如提取子串、使用join方法拼接字符串、修改字符串以及遍历码点。同时,文章还讲解了如何检查字符串是否为空或为null,以及如何获取字符串的实际长度和码点数量。
摘要由CSDN通过智能技术生成

本文为原创文章,转载请注明出处!!

https://blog.csdn.net/featureA/article/details/123476271

--------------------------------------------------------------------------------------------------------------------------------

字符串:Java未提供字符串类型,提供一个string类作为预定义类,,string类实例用“”括起来。

1)、子串:

string类的substring方法可从字符串中提取出一个子串,共两个参数,第一个参数值表示开始截取的位置,第二个参数值表示截取结束的位置,但不包含所处的字符(即不包括参数所在位置的字符),用此方法可易得子串的长度。

2)、拼接:

可使用“+”拼接两个字符串,若拼接的两者类型不同(一者为字符串,一者不为字符串的类型,二者均不是字符串类型则不可拼接,需要进行强制类型转换后再拼接),编译器会自动转换后再进行拼接。若需将多个字符串放在一起,可使用定界符分隔,再使用使用join静态方法把他们组合起来。

3)、字符串修改:

String类没有修改字符串的方法,可对所需修改的字符串先进行提取,然后再拼接。

4)、判断字符串是否相等:

使用equals()方法,该方法返回true或false值,其中括号内的参数可以为字符串变量或字符串;若只检测字符串是否相等而不区分大小写,可以使用equalsIgnoreCase方法,不能使用==判断字符串是否相等,若用此判断,当字符串放在同一位置上时,则相等,否则不会输出true,即位置不同时,即使字符串相同亦不会判断为相等。

5)、空串与null串:

空串是长度为零的字符串,他是一个java对象有自己的长度和内容,长度为零,内容为空。

null串表示该变量既没有内容也没有长度,即没有任和对象与该变量相关联。

检查字符串既不为null也不为空串

(if(str!=null&&str.length()!=0));

6)、码点和代码单元

Java字符串由char值序列组成,char数据类型是一个采用UTF-16编码表示Unicode码点的代码单元,大多数常用Unicode字符使用一个代码单元就可表示,而辅助字符需要用一对代码单元表示。代码单元即为代码的最小存储单元,用十六位来表示,而码点是某个字符对应的代码值。

可用length方法返回字符串长度,若需要得到实际长度,即码点数量,则可调用codePointCount(参数1,参数2)方法,第一个参数表示所需字符串长度的起始位置,第二个参数表示所需字符串长度的结束位置。

调用charAt(n)方法返回位置为n的代码单元,参数n应在字符串长度内,否则会产生异常。

获取第i个位置的码点,则调用offsetByCodePoints(0,i)方法和codePointAt()方法,前者的作用是确定当前位置至所需提取码点的距离,后者的作用为在字符串中获得该码点。如

string str=”hello”;

int index=str.offsetByCode(0,i);

int cp=str.codePointAt(index);)

用codePoints()方法生成一个int值的流,各int值对应一个码点,将其转换为一个数组之后再对字符串进行遍历,可提高字符串遍历效率。

int [] codePoints=str.codePoints().toArray();

把一个码点数组转换为一个字符串:

(string str= new String(str,0,str.length);

示例代码如下: 


package corejava.inputtest.code;
/**
 * 字符串的相关操作
 * @author featureA
 *
 */
public class StringAssociate {

	public static void main(String[] args) {
		String str1="hello";
		String str2="word";//定义字符串
		System.out.println(str1+str2);//字符串拼接
		System.out.println(str1+str2+"!!!!!!");
		String str3=str1.substring(0,3);//提取字符串,提取从0-3的字符串
		System.out.println(str3);
//使用静态join方法,把多个字符串放在一起
		String str4=String.join("/","S","M","L");
		System.out.println(str4);
//		str2=str2.substring(0,3)+"!";此段代码是下两行代码的整合
		//修改字符串,先提取字符串,然后再对字符串进行拼接
		str2=str2.substring(0,3);
		str2=str2+"!";
		System.out.println(str2);
		//字符串比较,调用equals方法,不能使用==运算符。
		System.out.println(str2.equals(str3));
		System.out.println("hello".equals(str1));
		//equalsIgnoreCase方法检测字符串是否相等而忽略大小写
		System.out.println("Hello".equalsIgnoreCase(str1));
		//空串和null串的判断
		str3="";
		//判断空串
			System.out.println(str3.length()==0);
			System.out.println(str3.equals(""));
			//判断null串
			System.out.println(str3==null);
			//查看字符串长度
			System.out.println(str2.length());
			//查看字符串的实际长度,即码点数量
			System.out.println(str1.codePointCount(0, str1.length()));
			//查看位置为3的代码单元
			System.out.println(str1.charAt(3));
			System.out.println();
			//获得第i个码点;外部方法获得给定位置的码点,
//内部方法获得从零开始位移1后的码点索引
			System.out.println(str1.codePointAt(str1.offsetByCodePoints(0, 1)));
			//遍历字符串,并且依次查看每一个码点
			int i=0;
			int cp=str1.codePointAt(i);
			if(Character.isSupplementaryCodePoint(cp)) {
				i+=2;
			}else {
				i++;
			}
			
			//在遍历过程中实现回退操作
			i--;
			System.out.println(str1.codePointAt(i));
			if(Character.isSurrogate(str1.charAt(i))) {
				i--;
			}
			System.out.println(str1.codePointAt(i));
			//使用codePoints方法,生成int值的流,每个int值的对应一个码点,
//将它转换为一个数组后再对数组遍历。
			int [] codePoints=str1.codePoints().toArray();
			for(int c:codePoints) {
				System.out.println(codePoints);
			}
			//将一个码点数组转换为一个字符串
			String str5=new String(codePoints,0,codePoints.length);
			System.out.println(str5);
			String str="e";
			System.out.println(str);
			//按照字典顺序,如果字符串位于e之前,返回负数,位于之后返回一个正数,相等返回零。
			System.out.println(str1.compareTo(str));
	}

}

参考文献:

(美)凯S.霍斯特曼著;周立新等译、《Java核心技术 卷一》北京:机械工业出版社 2016年9月第一版(原书第十版)45-50页

---------------------------------------------------------------------------------------------------------------------------------

本文为原创文章,转载请注明出处!!

https://blog.csdn.net/featureA/article/details/123476271icon-default.png?t=M276https://blog.csdn.net/featureA/article/details/123476271

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

featureA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值