String


鍵盤錄入字符串

public class demoscanner {
    public static void main(String[] args) {
        //創建Scanner對象
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入");
        //調用nextLine方法接收字符串
        //ctrl + alt + v :快速生成方法的返回值
        String s = sc.nextLine();
        System.out.println(s);
    }
}
  • sc.nextLine()是接收字符串 結束標志是回車換行符
  • sc.nextInt()是接收數字
  • sc.next()錄入數據時遇到空格 和 tab鍵就不再錄入數據了
  • 建議sc.next()和sc.nextLine()一起使用

String

  • 字符串是常量;它們的值在創建之后不能更改。

String常見構造方法

ou0V1K.png

public class StringConstrutor {
    public static void main(String[] args) {
        //1
        String s1 = new String();
        //2
        char[] chs = {'a','b','c'};
        String s2 = new String(chs);
        //3
        String s3 = new String("1232");
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
    }
}

創建字符串對象的區別對比

  • 以“ ”方式給出的字符串,只要字符序列相同(順序和大小寫) ,無論在程序代碼中出現幾次JVM都只會建立一個String對象 並在字符串常量池中維護
  • 字符串常量池:(在JDK7版本開始,從方法區挪到了堆內存)
    • 當使用雙引號創建字符串對象的時候,系統會檢查該字符是否在字符串常量池中存在
      • 不存在:創建
      • 存在:不會重新創建,而是直接用
  • 雙引號創建的字符串對象,在字符串常量池中存儲 通過構造方法創建的字符串對象 在堆內存中存儲

String字符串的特點

ouDjpt.png

  • 注意變量和字符串拼接 與 字符串之間的拼接

字符串的比較

  • 字符串是對象,它比較內容是否相同,是通過一個方法來實現的,這個方法是equals()
    • public boolean equals(Object anObject): 將此字符串與指定對象進行比較。由於我們比較的是字符串對象。所以參數直接傳遞一個字符串
public class Demo1Equals {
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "ABC";
        System.out.println(s1.equals(s2));
        System.out.println(s1.equalsIgnoreCase(s2));
    }
}

登錄案例

package com.demoli.Login;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        //1
        String username = "admin";
        String psd = "123456";
        Scanner sc = new Scanner(System.in);
        for (int i = 1; i <= 3; i++) {
            System.out.println("請輸入賬號:");
            String scUsername = sc.nextLine();
            System.out.println("請輸入密碼");
            String scPsd = sc.nextLine();

            if(username.equalsIgnoreCase(scUsername) && psd.equals(scPsd)){
                System.out.println("登錄成功");
                break;
            }else {
                if(i==3){
                    System.out.println("明天再來屌毛");
                }else {
                    System.out.println("登錄失敗,還有"+(3-i)+"次機會");
                }

            }
        }

    }

}

遍歷字符串

ousxeS.png

ouy2kQ.png

package com.demoli.StringTest;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入:");
        String s = sc.nextLine();
        for (int i = 0; i < s.length(); i++) {

            char c = s.charAt(i);
            System.out.println(c);
        }
    }
}
package com.demoli.StringTest;

import java.util.Scanner;

public class test2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入:");
        String s = sc.nextLine();

        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);
        }

    }
}
  • char[] chars = s.toCharArray();
  • char c = s.charAt(i);

統計三種類型的字符次數

package com.demoli.StringTest;

import java.util.Scanner;

public class test3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入:");
        String s = sc.nextLine();

        int bigCount = 0;
        int smallCount =0;
        int numCount = 0;

        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            char c = chars[i];
            if(c>='A' && c <= 'Z'){
                bigCount++;
            }else if (c>='a' && c<='z'){
                smallCount++;

            }else if (c>='1' && c<= '9'){
                numCount++;
            }
        }
        System.out.println("大寫字母字符個數為"+bigCount);
        System.out.println("小寫字母字符個數為"+smallCount);
        System.out.println("數字字符個數為"+numCount);
    }
}

手機號屏蔽

//字符串截取

package com.demoli.substring;

public class demo1 {
    public static void main(String[] args) {
        /*
        截取字符串:
            String substring(int beginIndex):
                從傳入的索引位置處  向后截取到末尾,得到新的字符串並返回
            String substring(int beginIndex,int endIndex)
                從beginIndex索引開始位置開始截取  截取到endIndex索引位置 得到新字符串並返回(包含頭 不含尾)
         */
        String s = "limadawdsad";
        String s1 = s.substring(2);
        System.out.println(s1);
        String substring = s.substring(0, 2);
        System.out.println(substring);


    }
}

oug8O0.png

import java.util.Scanner;

public class test {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入手機號:");
        String telString = sc.nextLine();

        String start = telString.substring(0, 3);
        String end = telString.substring(7);
        System.out.println(start+"****"+end);
    }
}
請輸入手機號:
17191199811
171****9811

敏感詞替換

ou2ej1.png

package com.demoli.Test;

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入");
        String s = sc.nextLine();
        String s1 = s.replace("TMD", "***");
        System.out.println(s1);
    }
}

切割字符串

ou27vR.png

package com.demoli.Test;

import com.demoli.domain.Student;

import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入:");
        String s = sc.nextLine();
        String[] stu_arr = s.split(",");
       // String name = stu_arr[0];
       // String age = stu_arr[1];
        Student student = new Student(stu_arr[0], stu_arr[1]);
        String age1 = student.getAge();
        String name1 = student.getName();
        System.out.println(name1+"的年齡是"+age1);
    }
}

ouW36A.png

ouWUk8.png

StringBuilder概述

  • StringBuilder是一個可變的字符串類 我們可以把它看成是一個容器

  • 作用:提高字符串操作效率

  • 是一個可變的字符串類 可以看做是一個容器

  • ou7ise.png

  • ou7AZd.png

  • package com.demoli.stringbuilder;
    
    public class test {
        public static void main(String[] args) {
            StringBuilder sb = new StringBuilder();
            
            sb.append("紅色").append("藍色").append("綠色");
            System.out.println(sb);
            sb.reverse();
            System.out.println(sb);
            System.out.println("sb中字符個數為:"+ sb.length());
    
            String s = sb.toString();
            System.out.println(s);
        }
    }
    

    ouHLNR.png

區別

  • String:內容是不可變的
  • StringBuilder : 內容是可變的

對稱字符串

package com.demoli.stringbuilder;

import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入字符串");
        String s = sc.nextLine();
        StringBuilder sb = new StringBuilder(s);
        StringBuilder reverse_sb = sb.reverse();
        String s1 = reverse_sb.toString();
        if (s.equals(s1)){
            System.out.println("是");
        }else {
            System.out.println("否");
        }
    }
}

String和StringBuilder的互相轉化

ouqdQf.png

拼接字符串

package com.demoli.stringbuilder;

public class Test3 {
    public static void main(String[] args) {
        int[] arr = {1,2,3};
        String s = arrayToString(arr);
        System.out.println(s);
    }
    public static String arrayToString(int[] arr){

        StringBuilder sb = new StringBuilder("[");

        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length-1){
                sb.append(arr[i]).append("]");
            }else {
                sb.append(arr[i]).append(",");
            }
        }
        return sb.toString();
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM