鍵盤錄入字符串
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常見構造方法
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字符串的特點
- 注意變量和字符串拼接 與 字符串之間的拼接
字符串的比較
- 字符串是對象,它比較內容是否相同,是通過一個方法來實現的,這個方法是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)+"次機會");
}
}
}
}
}
遍歷字符串
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);
}
}
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
敏感詞替換
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);
}
}
切割字符串
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);
}
}
StringBuilder概述
-
StringBuilder是一個可變的字符串類 我們可以把它看成是一個容器
-
作用:提高字符串操作效率
-
是一個可變的字符串類 可以看做是一個容器
-
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); } }
區別
- 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的互相轉化
拼接字符串
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();
}
}













