JAVA字符串

字符串java

 

1. 字符串正则表达式

1.1 字符串概述和特色数组

java.lang.String类表明字符串。
API当中说:Java 程序中的全部字符串字面值(如 "abc" )都做为此类的实例实现。
其实就是说:程序当中全部的双引号字符串,都是String类的对象。(就算没有new,也照样是。)

字符串的特色:学习

  1.  字符串的内容永不可变。【重点】
  2. 正是由于字符串不可改变,因此字符串是能够共享使用的。
  3. 字符串效果上至关因而char[]字符数组,可是底层原理是byte[]字节数组。

1.2字符串的构造方法和直接建立spa

建立字符串的常见3+1种方式。
三种构造方法:
public String():建立一个空白字符串,不含有任何内容。
public String(char[] array):根据字符数组的内容,来建立对应的字符串。
public String(byte[] array):根据字节数组的内容,来建立对应的字符串。
一种直接建立:
String str = "Hello"; // 右边直接用双引号

注意:直接写上双引号,就是字符串对象。指针

1.2.1 案例代码一code

 1 /*
 2 java.lang.String类表明字符串。  3 API当中说:Java 程序中的全部字符串字面值(如 "abc" )都做为此类的实例实现。  4 其实就是说:程序当中全部的双引号字符串,都是String类的对象。(就算没有new,也照样是。)  5 
 6 字符串的特色:  7 1. 字符串的内容永不可变。【重点】  8 2. 正是由于字符串不可改变,因此字符串是能够共享使用的。  9 3. 字符串效果上至关因而char[]字符数组,可是底层原理是byte[]字节数组。 10 
11 建立字符串的常见3+1种方式。 12 三种构造方法: 13 public String():建立一个空白字符串,不含有任何内容。 14 public String(char[] array):根据字符数组的内容,来建立对应的字符串。 15 public String(byte[] array):根据字节数组的内容,来建立对应的字符串。 16 一种直接建立: 17 String str = "Hello"; // 右边直接用双引号 18 
19 注意:直接写上双引号,就是字符串对象。 20  */
21 public class Demo01String { 22 
23 public static void main(String[] args) { 24 // 使用空参构造
25 String str1 = new String(); // 小括号留空,说明字符串什么内容都没有。
26 System.out.println("第1个字符串:" + str1); 27 
28 // 根据字符数组建立字符串
29 char[] charArray = { 'A', 'B', 'C' }; 30         String str2 = new String(charArray); 31         System.out.println("第2个字符串:" + str2); 32 
33 // 根据字节数组建立字符串
34 byte[] byteArray = { 97, 98, 99 }; 35         String str3 = new String(byteArray); 36         System.out.println("第3个字符串:" + str3); 37 
38 // 直接建立
39 String str4 = "Hello"; 40         System.out.println("第4个字符串:" + str4); 41  } 42 }

 

 1.3字符串常量池对象

字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中。

对于基本类型来讲,==是进行数值的比较。
对于引用类型来讲,==是进行【地址值】的比较。blog

1.3.1案例代码二索引

 1 /*
 2 字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中。  3 
 4 对于基本类型来讲,==是进行数值的比较。  5 对于引用类型来讲,==是进行【地址值】的比较。  6  */
 7 public class Demo02StringPool {  8 
 9 public static void main(String[] args) { 10         String str1 = "abc"; 11         String str2 = "abc"; 12 
13 char[] charArray = {'a', 'b', 'c'}; 14         String str3 = new String(charArray); 15 
16         System.out.println(str1 == str2); // true
17 System.out.println(str1 == str3); // false
18 System.out.println(str2 == str3); // false
19 } 20 }

 

 1.4常见方法

1.4.1字符串的比较相关方法

=是进行对象的地址值比较,若是确实须要字符串的内容比较,可使用两个方法:public boolean equals(Object obj):参数能够是任何对象,只有参数是一个字符串而且内容相同的才会给true;不然返回false。

注意事项:1. 任何对象都能用Object进行接收。

2. equals方法具备对称性,也就是a.equals(b)和b.equals(a)效果同样。
3. 若是比较双方一个常量一个变量,推荐把常量字符串写在前面。
推荐:"abc".equals(str)    不推荐:str.equals("abc")
public boolean equalsIgnoreCase(String str):忽略大小写,进行内容比较。

1.4.1.1案例代码三
 1 /*
 2 ==是进行对象的地址值比较,若是确实须要字符串的内容比较,可使用两个方法:  3 
 4 public boolean equals(Object obj):参数能够是任何对象,只有参数是一个字符串而且内容相同的才会给true;不然返回false。  5 注意事项:  6 1. 任何对象都能用Object进行接收。  7 2. equals方法具备对称性,也就是a.equals(b)和b.equals(a)效果同样。  8 3. 若是比较双方一个常量一个变量,推荐把常量字符串写在前面。  9 推荐:"abc".equals(str) 不推荐:str.equals("abc") 10 
11 public boolean equalsIgnoreCase(String str):忽略大小写,进行内容比较。 12  */
13 public class Demo01StringEquals { 14 
15 public static void main(String[] args) { 16         String str1 = "Hello"; 17         String str2 = "Hello"; 18 char[] charArray = {'H', 'e', 'l', 'l', 'o'}; 19         String str3 = new String(charArray); 20 
21         System.out.println(str1.equals(str2)); // true
22 System.out.println(str2.equals(str3)); // true
23 System.out.println(str3.equals("Hello")); // true
24 System.out.println("Hello".equals(str1)); // true
25 
26 String str4 = "hello"; 27         System.out.println(str1.equals(str4)); // false
28 System.out.println("================="); 29 
30         String str5 = null; 31         System.out.println("abc".equals(str5)); // 推荐:false 32 // System.out.println(str5.equals("abc")); // 不推荐:报错,空指针异常NullPointerException
33 System.out.println("================="); 34 
35         String strA = "Java"; 36         String strB = "java"; 37         System.out.println(strA.equals(strB)); // false,严格区分大小写
38 System.out.println(strA.equalsIgnoreCase(strB)); // true,忽略大小写 39 
40 // 注意,只有英文字母区分大小写,其余都不区分大小写
41 System.out.println("abc一123".equalsIgnoreCase("abc壹123")); // false
42 } 43 }

1.4.2字符串的获取相关方法

String当中与获取相关的经常使用方法有:

public int length()
:获取字符串当中含有的字符个数,拿到字符串长度。
public String concat(String str)
:将当前字符串和参数字符串拼接成为返回值新的字符串。
public char charAt(int index)
:获取指定索引位置的单个字符。(索引从0开始。)
public int indexOf(String str)
:查找参数字符串在本字符串当中首次出现的索引位置,若是没有返回-1值。

1.4.2.1案例代码四
 1 /*
 2 String当中与获取相关的经常使用方法有:  3 
 4 public int length():获取字符串当中含有的字符个数,拿到字符串长度。  5 public String concat(String str):将当前字符串和参数字符串拼接成为返回值新的字符串。  6 public char charAt(int index):获取指定索引位置的单个字符。(索引从0开始。)  7 public int indexOf(String str):查找参数字符串在本字符串当中首次出现的索引位置,若是没有返回-1值。  8  */
 9 public class Demo02StringGet { 10 
11 public static void main(String[] args) { 12 // 获取字符串的长度
13 int length = "asdasfeutrvauevbueyvb".length(); 14         System.out.println("字符串的长度是:" + length); 15 
16 // 拼接字符串
17 String str1 = "Hello"; 18         String str2 = "World"; 19         String str3 = str1.concat(str2); 20         System.out.println(str1); // Hello,原封不动
21 System.out.println(str2); // World,原封不动
22 System.out.println(str3); // HelloWorld,新的字符串
23 System.out.println("=============="); 24 
25 // 获取指定索引位置的单个字符
26 char ch = "Hello".charAt(1); 27         System.out.println("在1号索引位置的字符是:" + ch); 28         System.out.println("=============="); 29 
30 // 查找参数字符串在原本字符串当中出现的第一次索引位置 31 // 若是根本没有,返回-1值
32 String original = "HelloWorldHelloWorld"; 33 int index = original.indexOf("llo"); 34         System.out.println("第一次索引值是:" + index); // 2
35 
36 System.out.println("HelloWorld".indexOf("abc")); // -1
37 
38 System.out.println("=============="); 39         String str = "hello"; 40         str.concat("world"); 41  System.out.println(str); 42  } 43 }

1.4.3   字符串的截取方法

字符串的截取方法:

public String substring(int index):截取从参数位置一直到字符串末尾,返回新字符串。
public String substring(int begin, int end):截取从begin开始,一直到end结束,中间的字符串。
备注:[begin,end),包含左边,不包含右边。

1.4.3.1案例代码五

 1 /*
 2 字符串的截取方法:  3 
 4 public String substring(int index):截取从参数位置一直到字符串末尾,返回新字符串。  5 public String substring(int begin, int end):截取从begin开始,一直到end结束,中间的字符串。  6 备注:[begin,end),包含左边,不包含右边。  7  */
 8 public class Demo03Substring {  9 
10 public static void main(String[] args) { 11         String str1 = "HelloWorld"; 12         String str2 = str1.substring(5); 13         System.out.println(str1); // HelloWorld,原封不动
14 System.out.println(str2); // World,新字符串
15 System.out.println("================"); 16 
17         String str3 = str1.substring(4, 7); 18         System.out.println(str3); // oWo
19 System.out.println("================"); 20 
21 // 下面这种写法,字符串的内容仍然是没有改变的 22 // 下面有两个字符串:"Hello","Java" 23         // strA当中保存的是地址值。 24 // 原本地址值是Hello的0x666, 25 // 后来地址值变成了Java的0x999
26 String strA = "Hello"; 27         System.out.println(strA); // Hello
28 strA = "Java"; 29         System.out.println(strA); // Java
30 } 31 }

1.4.4

1.1.1    字符串的转换相关方法

String当中与转换相关的经常使用方法有:

public char[] toCharArray():将当前字符串拆分红为字符数组做为返回值。
public byte[] getBytes():得到当前字符串底层的字节数组。
public String replace(CharSequence oldString, CharSequence newString)
将全部出现的老字符串替换成为新的字符串,返回替换以后的结果新字符串。
备注:CharSequence意思就是说能够接受字符串类型。

1.4.4.1案例代码六

 1 /*
 2 String当中与转换相关的经常使用方法有:  3 
 4 public char[] toCharArray():将当前字符串拆分红为字符数组做为返回值。  5 public byte[] getBytes():得到当前字符串底层的字节数组。  6 public String replace(CharSequence oldString, CharSequence newString):  7 将全部出现的老字符串替换成为新的字符串,返回替换以后的结果新字符串。  8 备注:CharSequence意思就是说能够接受字符串类型。  9  */
10 public class Demo04StringConvert { 11 
12 public static void main(String[] args) { 13 // 转换成为字符数组
14 char[] chars = "Hello".toCharArray(); 15         System.out.println(chars[0]); // H
16 System.out.println(chars.length); // 5
17 System.out.println("=============="); 18 
19 // 转换成为字节数组
20 byte[] bytes = "abc".getBytes(); 21 for (int i = 0; i < bytes.length; i++) { 22  System.out.println(bytes[i]); 23  } 24         System.out.println("=============="); 25 
26 // 字符串的内容替换
27 String str1 = "How do you do?"; 28         String str2 = str1.replace("o", "*"); 29         System.out.println(str1); // How do you do?
30 System.out.println(str2); // H*w d* y*u d*?
31 System.out.println("=============="); 32 
33         String lang1 = "会不会玩儿呀!你大爷的!你大爷的!你大爷的!!!"; 34         String lang2 = lang1.replace("你大爷的", "****"); 35         System.out.println(lang2); // 会不会玩儿呀!****!****!****!!!
36 } 37 }

1.4.5   字符串的分割方法

分割字符串的方法:
public String[] split(String regex):按照参数的规则,将字符串切分红为若干部分。

注意事项:
split方法的参数实际上是一个“正则表达式”,从此学习。
今天要注意:若是按照英文句点“.”进行切分,必须写"\\."(两个反斜杠)

1.4.5.1案例代码七

 1 /*
 2 分割字符串的方法:  3 public String[] split(String regex):按照参数的规则,将字符串切分红为若干部分。  4 
 5 注意事项:  6 split方法的参数实际上是一个“正则表达式”,从此学习。  7 今天要注意:若是按照英文句点“.”进行切分,必须写"\\."(两个反斜杠)  8  */
 9 public class Demo05StringSplit { 10 
11 public static void main(String[] args) { 12         String str1 = "aaa,bbb,ccc"; 13         String[] array1 = str1.split(","); 14 for (int i = 0; i < array1.length; i++) { 15  System.out.println(array1[i]); 16  } 17         System.out.println("==============="); 18 
19         String str2 = "aaa bbb ccc"; 20         String[] array2 = str2.split(" "); 21 for (int i = 0; i < array2.length; i++) { 22  System.out.println(array2[i]); 23  } 24         System.out.println("==============="); 25 
26         String str3 = "XXX.YYY.ZZZ"; 27         String[] array3 = str3.split("\\."); 28         System.out.println(array3.length); // 0
29 for (int i = 0; i < array3.length; i++) { 30  System.out.println(array3[i]); 31  } 32  } 33 }
相关文章
相关标签/搜索