Java学习笔记——String类型的常用方法

学习目标:

学习Java String类型的常用方法
掌握其中重要的频率高的方法应用


学习内容:

重点掌握要点:

掌握String数组类型的增删改查功能


1、equals():比较两个字符串是否相等

它具有如下的一般形式:boolean equals(Object str) str是一个用来与调用字符串(String)对象做比较的字符串(String)对象。如果两个字符串具有相同的字符和长度,它返回true,否则返回false。这种比较是区分大小写的。

代码示例

String str=new String();
	str="ab";
	System.out.println(str.equals("ab"));
	
输出:true

2、equalsIgnoreCase( ):忽略大小写的两个字符串是否相等比较

当比较两个字符串时,它会认为A-Z和a-z是一样的。 其一般形式如下:boolean equalsIgnoreCase(String str) str是一个用来与调用字符串(String)对象做比较的字符串(String)对象。如果两个字符串具有相同的字符和长度,它也返回true,否则返回false。

当比较两个字符串时,它会认为A-Z和a-z是一样的。 其一般形式如下:boolean equalsIgnoreCase(String str) str是一个用来与调用字符串(String)对象做比较的字符串(String)对象。如果两个字符串具有相同的字符和长度,它也返回true,否则返回false。

代码示例

	String str=new String();
	str="ab";
	System.out.println(str.equalsIgnoreCase("Ab"));

输出:true

3、toString():转换成String类型

Object object = getObject(); System.out.println(object.toString()); 注意:必须保证object不是null值,否则将抛出NullPointerException异常。 采用这种方法时,通常派生类会覆盖Object里的toString()方法。

代码示例

Integer a=new Integer(55);
		System.out.println(a.toString());
		
输出:55

4、String.valueOf():转换成String类型(不用担心object是否为null值这一问题)

注意:当object为null 时,String.valueOf(object)的值是字符串”null”,而不是null。

代码示例

Double str=new Double(123.12);
		System.out.println(str.valueOf(str));
输出:123.12

## 5、split():分隔符

1、如果用“.”作为分隔的话,必须是如下写法,String.split("\(注:这里是双下划线,格式原因显示不出来).")
2、如果用“|”作为分隔的话,必须是如下写法,String.split("\(注:同上)|") “.”、“|”、"" 和"+“都是转义字符,必须得加”";
3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如,“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split(“and|or”);

代码示例

String str=new String("ab.cde.f");
		String str1[]=str.split("\\.");
		System.out.println(Arrays.toString(str1));
		
输出:[ab, cde, f]
String str=new String("acount=? and uu =? or n=?");
		String str1[]=str.split("and|or");
		System.out.println(Arrays.toString(str1));
输出:[acount=? ,  uu =? ,  n=?]

6、subString():截取字符串中的一段字符串String str;

(1)str=str.substring(int beginIndex);
截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str;
(2)str=str.substring(int beginIndex,int endIndex);
截取str中从beginIndex开始至endIndex结束时的字符串,并将其赋值给str;

String str=new String("abcdefg");
		String str1=str.substring(3);
		System.out.println(str1);
		
输出:defg
String str=new String("abcdefg");
		String str1=str.substring(3,5);//这里截取时遵循含左不含右
		System.out.println(str1);
		
输出:de

7、charAt():返回指定索引处char值

public char charAt(int index) char s = str.charAt(1);

代码示例

String str=new String("abcdefg");
		System.out.println(str.charAt(4));

输出:e

8、toLowerCase():将所有在此字符串中的字符转化为小写(使用默认语言环境的规则)

public String toLowerCase() String newStr = str.toLowerCase();

代码示例

String str=new String("ABCDEFG");
		System.out.println(str.toLowerCase());

输出:abcdefg

9、indexOf():指出 String 对象内子字符串的开始位置

1、int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引。
2、int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。
3、int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引。
4、int lastIndexOf(String str, int startIndex) :从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。

注意:如果没有找到子字符串,则返回-1。
如果 startindex 是负数,则 startindex 被当作零。如果它比最大的字符位置索引还大,则它被当作最大的可能索引。

代码示例

String str=new String("ABCBDCB");
		System.out.println(str.indexOf("B"));
		System.out.println(str.indexOf("C", 4));
		System.out.println(str.lastIndexOf("B"));
		System.out.println(str.lastIndexOf("B", 5));

输出:1 5 6 3

10、replace和replaceAll

(1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);
(2)replaceAll的参数是regex,即基于规则表达式的替换,比如:可以通过replaceAll("\d", “*”)把一个字符串所有的数字字符都换成星号;
(3)如果只想替换第一次出现的,可以使用replaceFirst(),这个方法也是基于规则表达式的替换,但与replaceAll()不同的是,只替换第一次出现的字符串。

代码示例

String str=new String("AB8BD8B");
		System.out.println(str.replace("B", "N"));
		System.out.println(str.replaceAll("\\d", "*"));
		System.out.println(str.replaceFirst("AB8", "TT"));
		
输出:
AN8ND8N
AB*BD*B
TTBD8B

11、getBytes():得到一个系统默认的编码格式的字节数组

都是将一个string类型的字符串转换成byte类型并且存入一个byte数组中。
在java中的所有数据底层都是字节,字节数据可以存入到byte数组。 UTF-8每个汉字转成3bytes,而GBK转成2bytes,所以要说明编码方式,否则用缺省编码。
String.getBytes(String decode) byte[] b_gbk = “中”.getBytes(“GBK”); byte[] b_utf8 = “中”.getBytes(“UTF-8”); byte[] b_iso88591 = “中”.getBytes(“ISO8859-1”); 将分别返回"中"这个汉字在GBK、UTF-8和ISO8859-1编码下的byte数组表示,此时 b_gbk的长度为2, b_utf8的长度为3, b_iso88591的长度为1。 new String(byte[], decode)实际是使用指定的编码decode来将byte[]解析成字符串. String s_gbk = new String(b_gbk,“GBK”); String s_utf8 = new String(b_utf8,“UTF-8”); String s_iso88591 = new String(b_iso88591,“ISO8859-1”); 通过输出s_gbk、s_utf8和s_iso88591,会发现s_gbk和s_utf8都是"中",而只有s_iso88591是一个不被识别的字符(可以理解为乱码),为什么使用ISO8859-1编码再组合之后,无法还原"中"字?原因很简单,因为ISO8859-1编码的编码表根本就不包含汉字字符,当然也就无法通过"中".getBytes(“ISO8859-1”);来得到正确的"中"字在ISO8859-1中的编码值了,所以,再通过new String()来还原就更是无从谈起。
因此,通过String.getBytes(String decode)方法来得到byte[]时,一定要确定decode的编码表中确实存在String表示的码值,这样得到的byte[]数组才能正确被还原。

代码示例

String str=new String("ABCD");
		System.out.println(str.getBytes());

输出:[B@1db9742

12、StringBuffer的append方法

StringBuffer buf=new StringBuffer(“Hard “); String aString = “Waxworks”; buf.append(aString,3,4);
原文说明:这个操作将aString的从索引位置3开始的由四个字符组成的子串追加到StringBuffer对象buf中。然后buf对象就会包含字符 串"Hard work”。 请注意,这个代码的实际运行结果是: buf对象包含的字符串为"Hard w”。 具体原因引用源代码: public synchronized StringBuffer append(CharSequence s, int start, int end) { super.append(s, start, end); return this; } 根据运行结果分析,StringBuffer对象的append()方法的参数,如果是String类型,那么,后面取子串的操作实际是从索引3开始,取值到索引4之前的串。如果append的语句改成 buf.append(aString,3,3); ,那么没有添加aString的子串,即 buf包含的字符实际还是"Hard “。如果此语句再改成 buf.append(aString3,2); ,那么系统会抛出"IndexOutOfBoundsException"的异常! 但是,如果append()的参数是字符数组(char[]),那么结果就如原文所述,buf将包含串"Hard work”.

代码示例

StringBuffer buf = new StringBuffer("Hard ");
		char[] text = { 'W', 'a', 'x', 'w', 'o', 'r', 'k', 's' };
		buf.append(text, 3, 4);
		System.out.println(buf);

输出:Hard work

注:JAVA 中 Stringbuffer 有append()方法 Stringbuffer其实是动态字符串数组 append()是往动态字符串数组添加,跟“xxxx”+“yyyy”相当那个‘+’号 跟String不同的是Stringbuffer是放一起的 String1+String2 和Stringbuffer1.append(“yyyy”)虽然打印效果一样,但在内存中表示却不一样 String1+String2 存在于不同的两个地址内存 Stringbuffer1.append(Stringbuffer2)放再一起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值