摘要:和的區(qū)別是字符串常量,同時也是一個類的對象,既然是對象當然可以調用類中的方法是空常量,不能調用任何方法,否則會出現(xiàn)空指針異常,常量可以給任意的引用數據類型賦值。
1_Scanner的概述和方法介紹*
A:Scanner的概述
B:Scanner的構造方法原理
Scanner(InputStream source)
System類下有一個靜態(tài)的字段:
public static final InputStream in; 標準的輸入流,對應著鍵盤錄入。
C:一般方法
hasNextXxx() 判斷是否還有下一個輸入項,其中Xxx可以是Int,Double等。如果需要判斷是否包含下一個字符串,則可以省略Xxx
nextXxx() 獲取下一個輸入項。Xxx的含義和上個方法中的Xxx相同,默認情況下,Scanner使用空格,回車等作為分隔符
import java.util.Scanner; public class Scanner_1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //鍵盤錄入 System.out.println("請輸入一個整數:"); // int i = sc.nextInt(); //存儲在I中 // System.out.println(i); if(sc.hasNextInt()) { int i =sc.nextInt(); System.out.println(sc); } else { System.out.println("您輸入的類型有誤"); } } }2_Scanner獲取數據出現(xiàn)的小問題及解決方案*
A:兩個常用的方法:
public int nextInt():獲取一個int類型的值
public String nextLine():獲取一個String類型的值
B:案例演示
a:先演示獲取多個int值,多個String值的情況
b:再演示先獲取int值,然后獲取String值出現(xiàn)問題
c:問題解決方案
nextInt接收一個整數:當我輸入10時,回車后:其實在鍵盤上錄入的是10和rn,nextInt()方法獲取10后就結束了
nextLine()是鍵盤錄入字符串的方法,可以接收任意類型,但它憑什么能獲取一行呢?
第一種:先獲取一個數值后,在創(chuàng)建一個新的鍵盤錄入對象獲取字符串。
第二種:把所有的數據都先按照字符串獲取,然后要什么,你就對應的轉換為什么。(后面講)
public class Scanner_2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); /* System.out.println("請輸入一個整數:"); int i1 = sc.nextInt(); System.out.println("請輸入第二個整數:"); int i2 = sc.nextInt(); System.out.println("i1 = " + i1 + ",i2 = " + i2); */ /* System.out.println("請輸入第一個字符串"); String line1 = sc.nextLine(); System.out.println("請輸入第二個字符串"); String line2 = sc.nextLine(); System.out.println("line1 = " + line1 + ",line2 = " + line2); */ System.out.println("請輸入一個整數:"); int i1 = sc.nextInt(); Scanner sc2 = new Scanner(System.in); System.out.println("請輸入第二個字符串"); String line = sc2.nextLine(); System.out.println("i1 = " + i1 + ",line = " + line); } }3_String類的概述*
A:String類的概述
通過JDK提供的API,查看String類的說明
可以看到這樣的兩句話。
a:字符串字面值"abc"也可以看成是一個字符串對象。
b:字符串是常量,一旦被賦值,就不能被改變。
public class string_1 {
public static void main(String[] args) { //Person p = new Person(); String str= "abc"; //"abc"可以看成是一個字符串對象。 str= "edf"; //當把"def"賦值給str,原來的"abc"就變成了垃圾 System.out.println(str); //String類重寫了toString方法返回的是該對象的本身 }
}
4_String類的構造方法*
A:常見構造方法
public String():空構造
public String(byte[] bytes):把字節(jié)數組轉成字符串
public String(byte[] bytes,int index,int length):把字節(jié)數組的一部分轉成字符串
public String(char[] value):把字符數組轉成字符串
public String(char[] value,int index,int count):把字符數組的一部分轉成字符串
public String(String original):把字符串常量值轉成字符串
B:案例演示
演示String類的常見構造方法
5_String類的常見面試題*
1.判斷定義為String類型的s1和s2是否相等
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2); //true 兩個常量指向同一個地址值
System.out.println(s1.equals(s2)); //true
2.下面這句話在內存中創(chuàng)建了幾個對象?
String s1 = new String("abc");//兩個對象地址值,常量池一個,堆內存一個
3.判斷定義為String類型的s1和s2是否相等
String s1 = new String("abc");
String s2 = "abc";
System.out.println(s1 == s2); //false
System.out.println(s1.equals(s2));//true
4.判斷定義為String類型的s1和s2是否相等
String s1 = "a" + "b" + "c";在編譯時把abc賦值給s1
String s2 = "abc";
System.out.println(s1 == s2); //true java中有常量優(yōu)化機制
System.out.println(s1.equals(s2));//true
5.判斷定義為String類型的s1和s2是否相等
String s1 = "ab";
String s2 = "abc";
String s3 = s1 + "c";
System.out.println(s3 == s2); //false
System.out.println(s3.equals(s2)); //true
6_String類的判斷功能*
A:String類的判斷功能
boolean equals(Object obj):比較字符串的內容是否相同,區(qū)分大小寫
boolean equalsIgnoreCase(String str):比較字符串的內容是否相同,忽略大小寫
boolean contains(String str):判斷大字符串中是否包含小字符串
boolean startsWith(String str):判斷字符串是否以某個指定的字符串開頭
boolean endsWith(String str):判斷字符串是否以某個指定的字符串結尾
boolean isEmpty():判斷字符串是否為空。
""和null的區(qū)別
""是字符串常量,同時也是一個String類的對象,既然是對象當然可以調用string類中的方法
null是空常量,不能調用任何方法,否則會出現(xiàn)空指針異常,null常量可以給任意的引用數據類型賦值。
package net.allidea.string; public class String_4 { public static void main(String[] args) { // demo1(); // demo2(); String s1 = "zheng"; String s2 = ""; String s3 = null; System.out.println(s1.isEmpty()); System.out.println(s2.isEmpty()); System.out.println(s3.isEmpty()); //java.lang.NullPointerException } private static void demo2() { String s1 = "歡樂啦啦啦,嘿嘿"; String s2 = "啦"; String s3 = "哈哈"; String s4 = "歡樂"; String s5 = "嘿嘿"; System.out.println(s1.contains(s2)); //判斷是否包含傳入的字符串 System.out.println(s1.contains(s3)); System.out.println("--------------------------------"); System.out.println(s1.startsWith(s4)); System.out.println(s1.endsWith(s5)); } private static void demo1() { String s1 = "allidea"; String s2 = "allidea"; String s3 = "Allidea"; System.out.println(s1.equals(s2)); System.out.println(s2.equals(s3)); System.out.println("----------------------"); System.out.println(s1.equalsIgnoreCase(s2)); System.out.println(s1.equalsIgnoreCase(s3)); //不區(qū)分大小寫 }7_模擬用戶登錄*
A:案例演示
需求:模擬登錄,給三次機會,并提示還有幾次。
用戶名和密碼都是admin
分析
1.模擬登陸,需要鍵盤錄入,scanner
2.給三次機會,需要循環(huán),用for
3.并提示有幾次,需要判斷,if
public class String_test_1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); for (int i = 0; i < 3; i ++) { System.out.println("請輸入用戶名:"); String userName = sc.nextLine(); System.out.println("請輸入密碼"); String password = sc.nextLine(); //如果是字符串常量和字符串變量比較,都是字符串常量調用方法,將變量當作參數傳遞,防止空指針異常 if ("admin".equals(userName) && "123456".equals(password)) { System.out.println("歡迎" + userName + "登錄"); break; //跳出循環(huán) } else { if (i == 2) { System.out.println("您的次數已到,請明天再來吧"); } System.out.println("輸入錯誤,您還有" + (2 - i) + "次機會,請重新輸入。"); } } } }8_String類的獲取功能*
A:String類的獲取功能
int length():獲取字符串的長度。
char charAt(int index):獲取指定索引位置的字符
int indexOf(int ch):返回指定字符在此字符串中第一次出現(xiàn)處的索引。
int indexOf(String str):返回指定字符串在此字符串中第一次出現(xiàn)處的索引。
int indexOf(int ch,int fromIndex):返回指定字符在此字符串中從指定位置后第一次出現(xiàn)處的索引。
int indexOf(String str,int fromIndex):返回指定字符串在此字符串中從指定位置后第一次出現(xiàn)處的索引。
lastIndexOf
String substring(int start):從指定位置開始截取字符串,默認到末尾。
String substring(int start,int end):從指定位置開始到指定位置結束截取字符串。
public class String_test_2 { public static void main(String[] args) { // demo1(); // demo2(); // demo3(); String s1 = "allidea"; String s2 = s1.substring(3); System.out.println(s2); String s3 = s1.substring(0, 2); //包含頭,不包含尾,左閉右開 System.out.println(s3); } private static void demo3() { String s1 = "allidea.net"; int index1 = s1.indexOf("i",2); //從指定位置向后找 System.out.println(index1); int index2 = s1.indexOf("i"); //從后向前找,第一次出現(xiàn)的字符 System.out.println(index2); int index3 = s1.lastIndexOf("a",7); System.out.println(index3); } private static void demo2() { String s1 = "allidea"; int index = s1.indexOf("a"); //參數接收的是int類型的,傳遞char類型會自動提升。 System.out.println(index); int index2 = s1.indexOf("f"); //如果不存在返回的是-1 System.out.println(index2); int index3 = s1.indexOf("ll"); //獲取字符串中第一個字符出現(xiàn)的位置 System.out.println(index3); int index4 = s1.indexOf("lf"); //如果不存在返回的是-1 System.out.println(index4); } private static void demo1() { // int[] arr = {11,22,33}; // System.out.println(arr.length); //數組中的length是屬性 String s1 = "allidea"; System.out.println(s1.length()); //length()是一個方法,獲取的是每一個字符的個數。 String s2 = "你吃了嗎?"; System.out.println(s2.length()); char c = s2.charAt(3); //根據索引獲取對應位置的字符 System.out.println(c); char c2 = s2.charAt(8); System.out.println(c2); //StringIndexOutOfBoundsException字符串索引越界異常 } }9_字符串的遍歷*
A:案例演示
需求:遍歷字符串
public class String_test_2 { public static void main(String[] args) { String s = "allidea"; for (int i = 0; i < s.length(); i++) { //通過for循環(huán)獲得自字符串的索引 // char c = s.charAt(i); // System.out.print(c);s System.out.print(s.charAt(i)); //通過索引獲取每一個字符 } } }10_統(tǒng)計不同類型字符個數*
A:案例演示
需求:統(tǒng)計一個字符串中大寫字母字符,小寫字母字符,數字字符出現(xiàn)的次數,其他字符出現(xiàn)的次數。
ABCDEabcd123456!@#$%^
public class String_test_3 { // 分析:字符串都是由字符組成的,而字符的值都是有范圍的,通過范圍來判斷是否包括該字符 // 如果包含就讓計數器變量自增 public static void main(String[] args) { String s = "ABCDEabcd123456!@#$%^*/"; int big = 0; int small = 0; int num = 0; int other = 0; //1.獲取每一個字符,for循環(huán)遍歷 for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); //通過索引獲取每一個字符 //2.判斷字符是否在這個范圍內 if (c >= "A" && c <= "Z") { big++; //如果滿足大寫字母,就讓其對應的變量自增 } else if (c >= "a" && c <= "z") { small++; //如果滿足小寫字母,就讓其對應的變量自增 } else if (c >= "0" && c <= "9") { num++; //如果滿足數字,就讓其對應的變量自增 } else { other++; //如果滿足大寫字母,就讓其對應的變量自增 } } //打印每一個計數器的結果 System.out.println(s + "中的大寫字母有:" + big + "個,小寫字母有:" + small + "個,數字有:" + num + "個,特殊符號有:" + other + "個。"); } }11_String類的轉換功能*
A:String的轉換功能:
byte[] getBytes():把字符串轉換為字節(jié)數組。
char[] toCharArray():把字符串轉換為字符數組。
static String valueOf(char[] chs):把字符數組轉成字符串。
static String valueOf(int i):把int類型的數據轉成字符串。
注意:String類的valueOf方法可以把任意類型的數據轉成字符串
String toLowerCase():把字符串轉成小寫。(了解)
String toUpperCase():把字符串轉成大寫。
String concat(String str):把字符串拼接。
import net.allidea.bean.Person; public class String_6 { public static void main(String[] args) { // demo1(); // demo2(); // demo3(); String s1 = "ALLIDEA"; String s2 = "chengxuyuan"; String s3 = s1.toLowerCase(); String s4 = s2.toUpperCase(); System.out.println(s3); System.out.println(s4); System.out.println(s3 + s4);//用+拼接字符串更強大,可以用字符串與任意類型相加 System.out.println(s3.concat(s4)); } private static void demo3() { char[] arr = {"a","b","c"}; String s = String.valueOf(arr);//底層是由String類的構造方法完成的,把字符數組轉成字符串 System.out.println(s); String s2 = String.valueOf(100);//將100轉換為字符串 System.out.println(s2); Person p1 = new Person("張三",23); System.out.println(p1); String s3 = String.valueOf(p1); //調用的是對象的toString方法 System.out.println(s3); } private static void demo2() { String s = "allidea"; char[] arr = s.toCharArray(); //將字符串轉換為字符數組 for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } private static void demo1() { String s1 = "abc"; byte[] arr = s1.getBytes(); for (int i = 0; i < arr.length; i++) { // System.out.print(arr[i] + ""); } String s2 = "你好你好"; byte[] arr2 = s2.getBytes(); //通過gbk碼表將字符串轉換成字節(jié)數組,一個中文代表兩個字節(jié) for (int i = 0; i < arr2.length; i++) {//gbk碼表特點,中文的第一個字節(jié)肯定是負數 // System.out.print(arr2[i] + ""); } String s3 = "琲"; byte[] arr3 = s3.getBytes(); for (int i = 0; i < arr3.length; i++) { System.out.print(arr3[i] + ""); } } }12_按要求轉換字符(鏈式編程掌握)
A:案例演示
需求:把一個字符串的首字母轉成大寫,其余為小寫。(只考慮英文大小寫字母字符)
鏈式編程:只要保證每次調用完方法返回的是對象,就可以繼續(xù)調用。
public class String_test_4 { public static void main(String[] args) { String s = "allidea"; String s2 = s.substring(0, 1 ).toUpperCase().concat(s.substring(1).toLowerCase()); System.out.println(s2); } }13_把數組轉成字符串
A:案例演示
需求:把數組中的數據按照指定個格式拼接成一個字符串
舉例:
int[] arr = {1,2,3};
輸出結果:
"[1, 2, 3]"
public class String_test_5 { /* * 分析: * 1.需要定義一個字符串 * 2.遍歷數組獲取每一個元素 * 3.用字符串與數組中的元素進行拼接 * */ public static void main(String[] args) { int[] arr = {1,2,3}; String s = "["; for (int i = 0; i < arr.length; i++) { if (i == arr.length - 1) { s = s + arr[i] + "]"; } else { s = s + arr[i] + ", "; } } System.out.println(s); } }14_String類的其他功能
A:String的替換功能及案例演示
String replace(char old,char new)
String replace(String old,String new)
B:String的去除字符串兩空格及案例演示
String trim()
C:String的按字典順序比較兩個字符串及案例演示
int compareTo(String str)(暫時不用掌握)
int compareToIgnoreCase(String str)(了解)
public class String_test_6 { public static void main(String[] args) { // demo1(); // demo2(); String s1 = "abc"; String s2 = "de"; int num = s1.compareTo(s2); //按照碼表值比較 System.out.println(num); String s3 = "鄭"; String s4 = "成"; int num2 = s3.compareTo(s4); System.out.println("鄭" + 0); //查找的是Unicode碼表值 System.out.println("成" + 0); System.out.println(num2); String s5 = "nihao"; String s6 = "NIHAO"; int num3 = s5.compareTo(s6); System.out.println(num3); int num4 = s5.compareToIgnoreCase(s6); System.out.println(num4); } private static void demo2() { String s = " all ide a "; String s2 = s.trim(); System.out.println(s2); } private static void demo1() { String s = "allidea"; String s2 = s.replace("i", "I");//I替換i,若不存在,則不變 System.out.println(s2); String s3 = s.replace("id", "ID"); System.out.println(s3); } }15_字符串反轉
A:案例演示
需求:把字符串反轉
舉例:鍵盤錄入"abc"
輸出結果:"cba"
B:分析
1.通過鍵盤錄入字符串scanner
2.將字符串轉換成字符數組
3.倒著遍歷字符數組,并再次拼接成字符串
4.打印
import java.util.Scanner; public class String_test_7 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("請輸入一個字符串:"); String line = sc.nextLine(); //將鍵盤錄入的字符串存儲在line中 char[] arr = line.toCharArray(); //將字符串轉換成數組 String s = ""; for (int i = arr.length - 1; i >= 0; i--) { //倒著遍歷數組 s = s + arr[i]; //拼接成字符串 } System.out.println(s); } }16_在大串中查找小串出現(xiàn)的次數
A:思路圖解
需求:統(tǒng)計大串中小串出現(xiàn)的次數
這里的大串和小串可以自己根據情況給出
B:代碼實現(xiàn)-案例演示
統(tǒng)計大串中小串出現(xiàn)的次數
public class String_test_8 { /* 分析 1.定義計數器變量,變量為0 2.通過indexOf方法在大串中找小串 如果沒有返回-1程序結束 如果有則返回索引值 3.根據獲取的索引值,加上小串的長度,截取大串,將截取后的結果賦值給大串。 4.回到第二部,繼續(xù) 5.返回-1,程序結束。 */ public static void main(String[] args) { String max = "nizhidaoma,wozhingshiyaochengweiyidaijavadashendenanren,zhidaoma,zhi.";//定義大串 String min = "zhi"; //定義小串 int count = 0; //定義計數器變量 int index = 0; //定義索引 while ((index = max.indexOf(min)) != -1) { //定義循環(huán),判斷小串是否在大串中出現(xiàn) count++; //計數器自增 max = max.substring(index + min.length()); } System.out.println(count); } }17_編碼題
驗證鍵盤輸入的用戶名不能為空,長度大于6,不能有數字(提示:使用字符串String類的相關方法完成)。
import java.util.Scanner; public class Other_11_test { public static void main(String[] args) { login(); } private static void login() { Scanner sc = new Scanner(System.in); System.out.println("請輸入用戶名:"); for (int i = 0; i < 6; i++) { String s = sc.nextLine(); if (checkNum(s)) { System.out.println("驗證成功!"); break; } else { if (i == 5) { System.out.println("您的次數已到,請明天再來吧"); break; } System.out.println("您還有" + (5 - i) + "次機會,請重新輸入。"); } } } public static boolean checkNum(String str) { String msg = ""; boolean flag = true; if (str.isEmpty()) { msg += "不能為空,"; flag = false; } if (str.length() <= 6) { msg += "長度不能少于6,"; flag = false; } if (getNum(str) && str.length() <= 6) { msg += "且"; flag = false; } if (getNum(str)) { msg += "不能含有數字,"; flag = false; } if (flag == false) { System.out.print(msg); } return flag; } private static boolean getNum(String s) { final String number = "0123456789"; for (int j = 0; j < s.length(); j++) { if (number.indexOf(s.charAt(j)) != -1) { return true; } } return false; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/77116.html
摘要:如何去掉默認注釋選擇你不想要的內容,通過右邊編輯。有什么用用別人寫好的東西打包選中項目右鍵自己指定一個路徑和一個名稱導入包復制到項目路徑下并添加至構建路徑。 1.常見開發(fā)工具了解 A:操作系統(tǒng)自帶的記事本軟件 B:高級記事本軟件 C:集成開發(fā)環(huán)境 IDE (Integrated Development Environment) D:Eclipse和MyEclipse的區(qū)別 a...
摘要:提供了排序,查找等功能。常用操作常用的操作之一用于基本數據類型與字符串之間的轉換。 1_StringBuffer類的概述 A:StringBuffer類概述 通過JDK提供的API,查看StringBuffer類的說明 線程安全的可變字符序列 (一個類似于 String 的字符串緩沖區(qū),但不能修改 : 不能像String那樣用 + 連接來修改String) B:String...
摘要:的構造器經過重載可以接受多種輸出目的地,不過最常用的還是和。組號為表示整個表達式,組號表示被第一對括號括起的組,依此類推。有多個重載的構造器,可以接受和對象。 點擊進入我的博客 字符串操作是計算機程序設計中最常見的行為 13.1 不可變String String底層是由char[]實現(xiàn)的,是不可變的??雌饋頃淖僑tring的方法,實際上都是創(chuàng)建了一個新的String對象,任何指向它...
摘要:外部存儲器可用于長期保存大量程序和數據,其成本低容量大,但速度較慢。 1_計算機概述(了解) A:什么是計算機?計算機在生活中的應用舉例 計算機(Computer)全稱:電子計算機,俗稱電腦。是一種能夠按照程序運行,自動、高速處理海量數據的現(xiàn)代化智能電子設備。由硬件和軟件所組成,沒有安裝任何軟件的計算機稱為裸機。常見的形式有臺式計算機、筆記本計算機、大型計算機等。 應用舉例 ...
摘要:外部類要訪問內部類的成員,必須創(chuàng)建對象。前提存在一個類或者接口這里的類可以是具體類也可以是抽象類。 1.package關鍵字的概述及作用(了解) A:為什么要有包 將字節(jié)碼(.class)進行分類存放 包其實就是文件夾 B:包的概述 舉例: 學生:增加,刪除,修改,查詢 老師:增加,刪除,修改,查詢 ... 方案1:按照功能分 com.heima.add ...
閱讀 2440·2019-08-30 15:56
閱讀 1099·2019-08-30 15:55
閱讀 3271·2019-08-30 15:44
閱讀 1006·2019-08-30 10:53
閱讀 1949·2019-08-29 16:33
閱讀 2643·2019-08-29 16:13
閱讀 774·2019-08-29 12:41
閱讀 942·2019-08-26 13:56