zoukankan      html  css  js  c++  java
  • JAVA字符串

    字符串

     

    1. 字符串

    1.1 字符串概述和特点

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

    字符串的特点:

    1.  字符串的内容永不可变。【重点】
    2. 正是因为字符串不可改变,所以字符串是可以共享使用的。
    3. 字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组。

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

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

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

    1.2.1 案例代码一

     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字符串常量池

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

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

    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 }

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    JavaScript和DOM
    CSS补充以及后台页面布局
    HTML标签和CSS基础
    基于SQLAlchemy实现的堡垒机
    PymySQL
    SQLAlchemy
    负数取模
    list
    算法(3)
    python初识(3)
  • 原文地址:https://www.cnblogs.com/battlecry/p/9390023.html
Copyright © 2011-2022 走看看