#学习笔记#11_字符串

字符串

1、概述

#学习笔记#11_字符串_第1张图片

字符串的特点

  • 字符串的内容永不可变
  • 字符串时可以共享使用的,可以达到节省内存的作用,前提是字符串内容不可变
  • 字符串效果上相当于是char[]字符串数组,但是底层原理是byte[]字节数组
  • 每个双引号包含的字符串都是字符串对象
2、创建字符串常见3+1种方式

分别三种构造方法,一种直接创建方法
相关代码:

public class a17_字符串构造方法 {
    public static void main(String[] args) {
//        使用空参构造
        String str01 = new String();
        System.out.println("第一个构造的字符串:" + str01);

//        根据字符数组创建字符串
        char[] arr01 = {'A','b','c'};
        String str02 = new String(arr01);
        System.out.println("用字符数组创建字符串:" + str02);

//        根据字节数组创建字符串
        byte[] arr02 = {97,98,99};
        String str03 = new String(arr02);
        System.out.println("用字节数组创建字符串:" + str03);

//        直接创建
        String str04 = "abc";
        System.out.println("直接创建字符串:" + str04);
    }

}

在这里插入图片描述

3、字符串的常量池

#学习笔记#11_字符串_第2张图片

  • 程序当中直接写上的双引号字符串,就在字符串常量池中
  • 对于基本类型来说,==时进行数值的比较
  • 对于引用类型来说,==时进行地址值的比较
  • 双引号直接写的字符串在常量池当中,new的不再池当中

相关代码:

public class a18_字符串的常量池 {
    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "abc";

        char[] charArray = {'a','b','c'};
        String str3 = new String(charArray);

        System.out.println(str1 == str2);
        System.out.println(str1 == str3);
        System.out.println(str2 == str3);
    }
}

在这里插入图片描述

4、字符串的比较相关方法
equals方法
  • equals方法是比较字符串内容是否相等(不忽略大小写)
  • 任何对象都能用object进行接收
  • equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样
  • 如果比较双方一个常量一个变量,推荐把常量字符串写在前面

相关代码:

public class a19_字符串的比较相关方法 {
    public static void main(String[] args) {
       String str01 = "abc";
       String str02 = "abc";

       char[] charArray01 = {'a','b','c'};
       String str03 = new String(charArray01);

//       比较内容
       System.out.println(str01.equals(str02));
       System.out.println(str01.equals(str03));
       System.out.println(str03.equals("abc"));
       System.out.println("abc".equals(str03));
       System.out.println("Abc".equals(str03));

    }
}

在这里插入图片描述

equalsIgnoreCase方法(不区分大小写)

相关代码:public class a19_字符串的比较相关方法 {

public static void main(String[] args) {
       
        String str04 = "abc";
        String str05 = "Abc";

        char[] charArray02 = {'a','B','c'};
        String str06 = new String(charArray02);

        System.out.println(str04.equals(str05));
        System.out.println(str04.equalsIgnoreCase(str05));
        System.out.println(str05.equalsIgnoreCase(str06));

    }
}

在这里插入图片描述

5、String字符串获取相关的常用方法
  • public int length(); 获取字符串长度
  • public String concat(String str); 拼接字符串
  • public char charAt(int index); 获取字符串索引位置
  • public int indexOf(String str); 获取参数字符串在本字符串中第一次索引位置

相关代码:

public class a20_字符串的获取相关方法 {
    public static void main(String[] args) {
//        获取字符串长度
        String str01 = "abcd1234";
        System.out.println("字符串的长度是:" + str01.length());

//        拼接字符串
        String str02 = "abc";
        String str03 = "d12";
        String str04 = "34";
        String str05 = str02.concat(str03.concat(str04));
        System.out.println("拼接之后的字符串为:" + str05);
        System.out.println("---------");

//        获取指定索引位置的单个字符
        String str06 = "abcd1234";
        System.out.print("以单个字符的形式获取: ");
        for (int i = 0; i < str06.length(); i++){
            char str07 = str06.charAt(i);
            System.out.print(str07 + " | ");
        }
        System.out.println();
        System.out.println("---------");

//        查找参数字符串在本来字符串当中出现的第一次索引位置
//        如果根本没有,返回-1值
        String str08 = "abcd1234abc";
        System.out.println("abc的第一次索引值是:" + str08.indexOf("abc"));
        System.out.println("abd的第一次索引值是:" + str08.indexOf("abc3"));

    }
}

#学习笔记#11_字符串_第3张图片

6、字符串的截取方法
  • public String substring(int index); 截取从参数位置一直到字符串末尾,返回新字符串
  • public String substring(int begin, int end); 截取从begin开始,一直到end结束的字符串,包含begin,不包含end

相关代码:

public class a21_字符串的截取方法 {
    public static void main(String[] args) {
        String str01 = "abc 1234abc";

        System.out.println("从索引值4开始截取字符串:" + str01.substring(4));
        System.out.println("截取索引值4到6的字符串:" + str01.substring(4,6));
    }
}

在这里插入图片描述

7、字符串转换相关的方法
  • public char[] toCharArray(); 将当前字符串拆分成为字符数组作为返回值
  • public byte[] getBytes(); 获得当前字符串底层的字节数组
  • public String replace(CharSequence oldString, CharSequence newString); 将所有出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串

相关代码:

public class a22_字符串转换的相关方法 {
    public static void main(String[] args) {
        String str01 = "abc1234abc";
        char[] str02 = str01.toCharArray();
        byte[] str03 = str01.getBytes();
        String str04 = str01.replace("a", "b");

        System.out.println("源字符串:" + str01);

        System.out.print("字符数组形式:");
        for (int i = 0; i < str02.length; i++) {
            if (i == str02.length-1){
                System.out.println(str02[i]);
                break;
            }
            System.out.print(str02[i] + " | ");
        }

        System.out.print("字节数组形式:");
        for (int i = 0; i < str03.length; i++) {
            if (i == str03.length-1){
                System.out.println(str03[i]);
                break;
            }
            System.out.print(str03[i] + " | ");
        }

        System.out.println("转换后的字符串:" + str04);

    }
}

在这里插入图片描述

8、字符串的分割方法
  • public String[] split(String regex); 根据参数规则,将字符串切分成为若干部分
  • split方法的参数其实就是一个正则表达式

相关代码:

public class a23_字符串的切割方法 {
    public static void main(String[] args) {
        String str01 = "a-bc-123-4de-f";
        String[] arr02 = str01.split("-");

        System.out.print("切割后的数组为:");
        for (int i = 0; i < arr02.length; i++) {
            System.out.print(arr02[i] + " ");
        }


    }
}

在这里插入图片描述

9、相关练习

按指定格式拼接字符串

public class a24_练习按指定格式拼接字符 {
    public static void main(String[] args) {
        String[] arr01 = {"1","2","3"};
        String text01 = "[";


        for (int i = 0; i < arr01.length; i++) {
            if (i == arr01.length - 1){
                text01 = text01.concat("word".concat(arr01[i].concat("]")));
                System.out.println("添加完成:" + text01);
                break;
            }

            text01 = text01.concat("word".concat(arr01[i].concat("#")));

        }

    }
}

在这里插入图片描述

统计输入的字符串字符类型数量
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

import java.util.Scanner;

public class a25_练习统计输入字符串 {
    public static void main(String[] args) {
        String in = new Scanner(System.in).next();
        char[] arr01 = in.toCharArray();
        
        int big = 0;
        int small = 0;
        int number = 0;
        int other = 0;

        for (int i = 0; i < arr01.length; i++) {
            char ch01 = arr01[i];
            if ('A' <= ch01 && ch01 <= 'Z'){
                big += 1;
            }else
            if ('a' <= ch01 && ch01 <= 'z'){
                small += 1;
            }else
            if ('0' <= ch01 && ch01 <= '9'){
                number += 1;
            }else
            other += 1;
        }
        System.out.println("大写字母:" + big);
        System.out.println("小写字母:" + small);
        System.out.println("数字:" + number);
        System.out.println("其他字符:" + other);
    }
}

#学习笔记#11_字符串_第4张图片

你可能感兴趣的:(java,字符串,正则表达式,编程语言)