1.Scanner
- 說明:Scanner類接受鍵盤錄入的字符串
- 代碼
package com.itheima_01;
import java.util.Scanner;
/*
* Scanner:用于獲取鍵盤錄入的數(shù)據(jù)奉瘤。(基本數(shù)據(jù)類型煮落,字符串?dāng)?shù)據(jù))
* public String nextLine():獲取鍵盤錄入的字符串?dāng)?shù)據(jù)
*/
public class ScannerDemo {
public static void main(String[] args) {
//創(chuàng)建鍵盤錄入對(duì)象
Scanner sc = new Scanner(System.in);
//接收數(shù)據(jù)
System.out.println("請(qǐng)輸入一個(gè)字符串?dāng)?shù)據(jù):");
String s = sc.nextLine();
//輸出結(jié)果
System.out.println("s:"+s);
}
}
2.String
- 說明:
A:"abc"是String類的一個(gè)實(shí)例,或者成為String類的一個(gè)對(duì)象
B:字符串字面值"abc"也可以看成是一個(gè)字符串對(duì)象
C:字符串是常量贾铝,一旦被賦值,就不能被改變
D:字符串本質(zhì)是一個(gè)字符數(shù)組 - 代碼
1.構(gòu)造方法:
package com.itheima_02;
/*
* String:字符串類
* 由多個(gè)字符組成的一串?dāng)?shù)據(jù)
* 字符串其本質(zhì)是一個(gè)字符數(shù)組
*
* 構(gòu)造方法:
* String(String original):把字符串?dāng)?shù)據(jù)封裝成字符串對(duì)象
* String(char[] value):把字符數(shù)組的數(shù)據(jù)封裝成字符串對(duì)象
* String(char[] value, int index, int count):把字符數(shù)組中的一部分?jǐn)?shù)據(jù)封裝成字符串對(duì)象
*
* 注意:字符串是一種比較特殊的引用數(shù)據(jù)類型,直接輸出字符串對(duì)象輸出的是該對(duì)象中的數(shù)據(jù)刻恭。
*/
public class StringDemo {
public static void main(String[] args) {
//方式1
//String(String original):把字符串?dāng)?shù)據(jù)封裝成字符串對(duì)象
String s1 = new String("hello");
System.out.println("s1:"+s1);
System.out.println("---------");
//方式2
//String(char[] value):把字符數(shù)組的數(shù)據(jù)封裝成字符串對(duì)象
char[] chs = {'h','e','l','l','o'};
String s2 = new String(chs);
System.out.println("s2:"+s2);
System.out.println("---------");
//方式3
//String(char[] value, int index, int count):把字符數(shù)組中的一部分?jǐn)?shù)據(jù)封裝成字符串對(duì)象
//String s3 = new String(chs,0,chs.length);
String s3 = new String(chs,1,3);
System.out.println("s3:"+s3);
System.out.println("---------");
//方式4
String s4 = "hello";
System.out.println("s4:"+s4);
}
}
創(chuàng)建字符串對(duì)象兩種方式的區(qū)別:
package com.itheima_02;
/*
* 通過構(gòu)造方法創(chuàng)建的字符串對(duì)象和直接賦值方式創(chuàng)建的字符串對(duì)象有什么區(qū)別呢?
* 通過構(gòu)造方法創(chuàng)建字符串對(duì)象是在堆內(nèi)存翠订。
* 直接賦值方式創(chuàng)建對(duì)象是在方法區(qū)的常量池。
*
* ==:
* 基本數(shù)據(jù)類型:比較的是基本數(shù)據(jù)類型的值是否相同
* 引用數(shù)據(jù)類型:比較的是引用數(shù)據(jù)類型的地址值是否相同
*/
public class StringDemo2 {
public static void main(String[] args) {
String s1 = new String("hello");
String s2 = "hello";
System.out.println("s1:"+s1);
System.out.println("s2:"+s2);
System.out.println("s1==s2:"+(s1==s2)); //false
String s3 = "hello";
System.out.println("s1==s3:"+(s1==s3)); //false
System.out.println("s2==s3:"+(s2==s3)); //true
}
}
2.String類的判斷功能
package com.itheima_03;
/*
* Object:是類層次結(jié)構(gòu)中的根類激才,所有的類都直接或者間接的繼承自該類拓型。
* 如果一個(gè)方法的形式參數(shù)是Object,那么這里我們就可以傳遞它的任意的子類對(duì)象瘸恼。
*
* String類的判斷功能:
* boolean equals(Object obj):比較字符串的內(nèi)容是否相同
* boolean equalsIgnoreCase(String str):比較字符串的內(nèi)容是否相同,忽略大小寫
* boolean startsWith(String str):判斷字符串對(duì)象是否以指定的str開頭
* boolean endsWith(String str):判斷字符串對(duì)象是否以指定的str結(jié)尾
*/
public class StringDemo {
public static void main(String[] args) {
//創(chuàng)建字符串對(duì)象
String s1 = "hello";
String s2 = "hello";
String s3 = "Hello";
//boolean equals(Object obj):比較字符串的內(nèi)容是否相同
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println("-----------");
//boolean equalsIgnoreCase(String str):比較字符串的內(nèi)容是否相同,忽略大小寫
System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.equalsIgnoreCase(s3));
System.out.println("-----------");
//boolean startsWith(String str):判斷字符串對(duì)象是否以指定的str開頭
System.out.println(s1.startsWith("he"));
System.out.println(s1.startsWith("ll"));
}
}
3.String類的獲取功能
package com.itheima_04;
/*
* String類的獲取功能:
* int length():獲取字符串的長(zhǎng)度劣挫,其實(shí)也就是字符個(gè)數(shù)
* char charAt(int index):獲取指定索引處的字符
* int indexOf(String str):獲取str在字符串對(duì)象中第一次出現(xiàn)的索引
* String substring(int start):從start開始截取字符串
* String substring(int start,int end):從start開始,到end結(jié)束截取字符串东帅。包括start压固,不包括end
*/
public class StringDemo {
public static void main(String[] args) {
//創(chuàng)建字符串對(duì)象
String s = "helloworld";
//int length():獲取字符串的長(zhǎng)度,其實(shí)也就是字符個(gè)數(shù)
System.out.println(s.length());
System.out.println("--------");
//char charAt(int index):獲取指定索引處的字符
System.out.println(s.charAt(0));
System.out.println(s.charAt(1));
System.out.println("--------");
//int indexOf(String str):獲取str在字符串對(duì)象中第一次出現(xiàn)的索引
System.out.println(s.indexOf("l"));
System.out.println(s.indexOf("owo"));
System.out.println(s.indexOf("ak"));
System.out.println("--------");
//String substring(int start):從start開始截取字符串
System.out.println(s.substring(0));
System.out.println(s.substring(5));
System.out.println("--------");
//String substring(int start,int end):從start開始靠闭,到end結(jié)束截取字符串
System.out.println(s.substring(0, s.length()));
System.out.println(s.substring(3,8));
}
}
4.String類的轉(zhuǎn)換功能
package com.itheima_05;
/*
* String類的轉(zhuǎn)換功能:
* char[] toCharArray():把字符串轉(zhuǎn)換為字符數(shù)組
* String toLowerCase():把字符串轉(zhuǎn)換為小寫字符串
* String toUpperCase():把字符串轉(zhuǎn)換為大寫字符串
*
* 字符串的遍歷:
* A:length()加上charAt()
* B:把字符串轉(zhuǎn)換為字符數(shù)組帐我,然后遍歷數(shù)組
*/
public class StringDemo {
public static void main(String[] args) {
//創(chuàng)建字符串對(duì)象
String s = "abcde";
//char[] toCharArray():把字符串轉(zhuǎn)換為字符數(shù)組
char[] chs = s.toCharArray();
for(int x=0; x<chs.length; x++) {
System.out.println(chs[x]);
}
System.out.println("-----------");
//String toLowerCase():把字符串轉(zhuǎn)換為小寫字符串
System.out.println("HelloWorld".toLowerCase());
//String toUpperCase():把字符串轉(zhuǎn)換為大寫字符串
System.out.println("HelloWorld".toUpperCase());
}
}
5.String類的其它功能
package com.itheima_06;
/*
* 去除字符串兩端空格
* String trim()
* 按照指定符號(hào)分割字符串
* String[] split(String str)
*/
public class StringDemo {
public static void main(String[] args) {
//創(chuàng)建字符串對(duì)象
String s1 = "helloworld";
String s2 = " helloworld ";
String s3 = " hello world ";
System.out.println("---"+s1+"---");
System.out.println("---"+s1.trim()+"---");
System.out.println("---"+s2+"---");
System.out.println("---"+s2.trim()+"---");
System.out.println("---"+s3+"---");
System.out.println("---"+s3.trim()+"---");
System.out.println("-------------------");
//String[] split(String str)
//創(chuàng)建字符串對(duì)象
String s4 = "aa,bb,cc";
String[] strArray = s4.split(",");
for(int x=0; x<strArray.length; x++) {
System.out.println(strArray[x]);
}
}
}
3. StringBuilder
- 說明
StringBuilder:是一個(gè)可變的字符串,字符串緩沖區(qū)類愧膀。
String和StringBuilder的區(qū)別:
String的內(nèi)容是固定的
StringBuilder的內(nèi)容是可變的
+=拼接字符串耗費(fèi)內(nèi)存原因:
每次拼接都會(huì)產(chǎn)生新的字符串對(duì)象,而利用StringBuilder來拼接字符串自始至終用的都是同一個(gè)StringBuilder容器拦键。 - 代碼
1.構(gòu)造方法
package com.itheima_01;
/*
* StringBuilder:是一個(gè)可變的字符串。字符串緩沖區(qū)類檩淋。
*
* String和StringBuilder的區(qū)別:
* String的內(nèi)容是固定的芬为。
* StringBuilder的內(nèi)容是可變的。
*
* 構(gòu)造方法:
* StringBuilder()
*
* 成員方法:
* public int capacity():返回當(dāng)前容量
* public int length():返回長(zhǎng)度(字符數(shù))
*
* 容量:理論值
* 長(zhǎng)度:實(shí)際值
*/
public class StringBuilderDemo {
public static void main(String[] args) {
//創(chuàng)建對(duì)象
StringBuilder sb = new StringBuilder();
System.out.println("sb:"+sb);
System.out.println("sb.capacity():"+sb.capacity());
System.out.println("sb.length():"+sb.length());
}
}
2.添加功能,反轉(zhuǎn)功能
package com.itheima_02;
/*
* 添加功能
* public StringBuilder append(任意類型):添加數(shù)據(jù)蟀悦,并返回自身對(duì)象
* 反轉(zhuǎn)功能
* public StringBuilder reverse()
*/
public class StringBuilderDemo {
public static void main(String[] args) {
//創(chuàng)建對(duì)象
StringBuilder sb = new StringBuilder();
//public StringBuilder append(任意類型)
//StringBuilder sb2 = sb.append("hello");
/*
System.out.println("sb:"+sb);
System.out.println("sb2:"+sb2);
System.out.println(sb == sb2); //true
*/
/*
sb.append("hello");
sb.append("world");
sb.append(true);
sb.append(100);
*/
//鏈?zhǔn)骄幊? sb.append("hello").append("world").append(true).append(100);
System.out.println("sb:"+sb);
//public StringBuilder reverse()
sb.reverse();
System.out.println("sb:"+sb);
}
}
3.StringBuilder和String通過方法完成相互轉(zhuǎn)換
package com.itheima_03;
/*
* StringBuilder和String的相互轉(zhuǎn)換
*
* StringBuilder -- String
* public String toString():通過toString()就可以實(shí)現(xiàn)把StringBuilder轉(zhuǎn)成String
*
* String -- StringBuilder
* StringBuilder(String str):通過構(gòu)造方法就可以實(shí)現(xiàn)把String轉(zhuǎn)成StringBuilder
*/
public class StringBuilderTest {
public static void main(String[] args) {
//StringBuilder -- String
/*
StringBuilder sb = new StringBuilder();
sb.append("hello").append("world");
String s = sb.toString();
System.out.println(s);
*/
//String -- StringBuilder
String s = "helloworld";
StringBuilder sb = new StringBuilder(s);
System.out.println(sb);
}
}