Java基礎(chǔ)之String類(lèi)使用與字符串比較
一、String類(lèi)概述
String類(lèi)代表字符串,java程序中的所有字符串文字(例如"abc")都被實(shí)現(xiàn)為此類(lèi)的實(shí)例。也就是說(shuō),java程序中所有的雙引號(hào)字符串,都是String類(lèi)的對(duì)象。
String類(lèi)在java.lang包下,所有使用的時(shí)候不需要導(dǎo)包!
二、String類(lèi)的特點(diǎn)
字符串不可變,它們的值在創(chuàng)建后不能被更改 雖然String的
這里是引用值是不可變的,但是它們可以被共享
字符串效果上相當(dāng)于字符數(shù)組(char[]),但是底層原理是字節(jié)數(shù)組(byte[])
三、String類(lèi)的構(gòu)造方法
| 方法名 | 說(shuō)明 |
| public String() | 創(chuàng)建一個(gè)空白字符串對(duì)象,不含有任何內(nèi)容 |
| public String(char[] chs) | 根據(jù)字符數(shù)組的內(nèi)容,來(lái)創(chuàng)建字符串對(duì)象 |
| public String(byte[] bys) | 根據(jù)字節(jié)數(shù)組的內(nèi)容,來(lái)創(chuàng)建字符串對(duì)象 |
| String s = "abc"; | 直接賦值的方式創(chuàng)建字符串對(duì)象,內(nèi)容就是abc |
示例代碼:
public class StringDemo01 {
public static void main(String[] args) {
//public String():創(chuàng)建一個(gè)空白字符串對(duì)象,不含有任何內(nèi)容
String s1 = new String();
System.out.println("s1:" + s1);
//public String(char[] chs):根據(jù)字符數(shù)組的內(nèi)容,來(lái)創(chuàng)建字符串對(duì)象
char[] chs = {'a', 'b', 'c'};
String s2 = new String(chs);
System.out.println("s2:" + s2);
//public String(byte[] bys):根據(jù)字節(jié)數(shù)組的內(nèi)容,來(lái)創(chuàng)建字符串對(duì)象
byte[] bys = {97, 98, 99};
String s3 = new String(bys);
System.out.println("s3:" + s3);
//String s = “abc”; 直接賦值的方式創(chuàng)建字符串對(duì)象,內(nèi)容就是abc
String s4 = "abc";
System.out.println("s4:" + s4);
}
}
四、創(chuàng)建字符串對(duì)象兩種方式的區(qū)別
通過(guò)構(gòu)造方法創(chuàng)建
通過(guò) new 創(chuàng)建的字符串對(duì)象,每一次 new 都會(huì)申請(qǐng)一個(gè)內(nèi)存空間,雖然內(nèi)容相同,但是地址值不同
直接賦值方式創(chuàng)建
以“”方式給出的字符串,只要字符序列相同(順序和大小寫(xiě)),無(wú)論在程序代碼中出現(xiàn)幾次,JVM 都只會(huì)建立一個(gè) String 對(duì)象,并在字符串池中維護(hù)
五、字符串的比較
==號(hào)的作用
比較基本數(shù)據(jù)類(lèi)型:比較的是具體的值
比較引用數(shù)據(jù)類(lèi)型:比較的是對(duì)象的地址
equals方法的作用
方法介紹
public boolean equals(String s) 比較兩個(gè)字符串內(nèi)容是否相同、區(qū)分大小寫(xiě)
示例代碼:
public class StringDemo02 {
public static void main(String[] args) {
//構(gòu)造方法的方式得到對(duì)象
char[] chs = {'a', 'b', 'c'};
String s1 = new String(chs);
String s2 = new String(chs);
//直接賦值的方式得到對(duì)象
String s3 = "abc";
String s4 = "abc";
//比較字符串對(duì)象地址是否相同
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s3 == s4);
System.out.println("--------");
//比較字符串內(nèi)容是否相同
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s3.equals(s4));
}
}
六、用戶登錄案例
需求:已知用戶名和密碼,請(qǐng)用程序?qū)崿F(xiàn)模擬用戶登錄,總共給三次機(jī)會(huì),登錄之后,給出相應(yīng)的提示
思路:
1、已知用戶名和密碼,定義兩個(gè)字符串表示即可
2、鍵盤(pán)錄入要登錄的用戶名和密碼,用 Scanner 實(shí)現(xiàn)
3、拿鍵盤(pán)錄入的用戶名、密碼和已知的用戶名、密碼進(jìn)行比較,給出相應(yīng)的提示。字符串的內(nèi)容比較,用equals() 方法實(shí)現(xiàn)
4、用循環(huán)實(shí)現(xiàn)多次機(jī)會(huì),這里的次數(shù)明確,采用for循環(huán)實(shí)現(xiàn),并在登錄成功的時(shí)候,使用break結(jié)束循環(huán)
示例代碼:
public class StringTest01 {
public static void main(String[] args) {
//已知用戶名和密碼,定義兩個(gè)字符串表示即可
String usernam = "xiazhi121";
String passwor = "12345";
//用循環(huán)實(shí)現(xiàn)多次機(jī)會(huì),這里的次數(shù)明確,采用for循環(huán)實(shí)現(xiàn),并在登錄成功的時(shí)候,使用break結(jié)束循環(huán)
for(int i=0; i<3; i++) {
//鍵盤(pán)錄入要登錄的用戶名和密碼,用 Scanner 實(shí)現(xiàn)
Scanner sc = new Scanner(System.in);
System.out.println("請(qǐng)輸入用戶名:");
String name = sc.nextLine();
System.out.println("請(qǐng)輸入密碼:");
String pwd = sc.nextLine();
//拿鍵盤(pán)錄入的用戶名、密碼和已知的用戶名、密碼進(jìn)行比較,給出相應(yīng)的提示。字符串的內(nèi)容比較,用equals() 方法實(shí)現(xiàn)
if (name.equals(usernam) && pwd.equals(passwor)) {
System.out.println("登錄成功");
break;
} else {
if(2-i == 0) {
System.out.println("你的賬戶被鎖定,請(qǐng)與管理員聯(lián)系");
} else {
//2,1,0
//i,0,1,2
System.out.println("登錄失敗,你還有" + (2 - i) + "次機(jī)會(huì)");
}
}
}
}
}到此這篇關(guān)于Java基礎(chǔ)之String類(lèi)使用與字符串比較的文章就介紹到這了,更多相關(guān)Java String類(lèi)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java中String類(lèi)的常用方法總結(jié)
- Java?String類(lèi)的理解及字符串常量池介紹
- Java中String類(lèi)常用方法總結(jié)詳解
- Java中String類(lèi)常用方法使用詳解
- 帶你一文深入認(rèn)識(shí)Java?String類(lèi)
- Java String類(lèi)常用方法梳理總結(jié)
- Java深入淺出講解String類(lèi)常見(jiàn)方法
- Java詳細(xì)分析String類(lèi)與StringBuffer和StringBuilder的使用方法
- Java?String類(lèi)和StringBuffer類(lèi)的區(qū)別介紹
- Java全面解析string類(lèi)型的xml字符串
- Java中String類(lèi)常用類(lèi)型實(shí)例總結(jié)
- 深入剖析Java中String類(lèi)的concat方法
- 詳解Java中String類(lèi)的各種用法
- 一文帶你初識(shí)java中的String類(lèi)
- Java String類(lèi)的性質(zhì)與比較
- 關(guān)于Java中String類(lèi)字符串的解析
- Java String類(lèi)字符串的理解與認(rèn)知
- Java-String類(lèi)最全匯總(上篇)
相關(guān)文章
初學(xué)者易上手的SSH-struts2 01環(huán)境搭建(圖文教程)
下面小編就為大家?guī)?lái)一篇初學(xué)者易上手的SSH-struts2 01環(huán)境搭建(圖文教程)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
LoggingEventAsyncDisruptorAppender類(lèi)執(zhí)行流程源碼解讀
這篇文章主要介紹了LoggingEventAsyncDisruptorAppender類(lèi)執(zhí)行流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
java 讀寫(xiě)Parquet格式的數(shù)據(jù)的示例代碼
本篇文章主要介紹了java 讀寫(xiě)Parquet格式的數(shù)據(jù)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
JSON Web Token(JWT)原理入門(mén)教程詳解
這篇文章主要為大家介紹了JSON Web Token(JWT)原理入門(mén)教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
Mybatis一對(duì)多關(guān)聯(lián)關(guān)系映射實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Mybatis一對(duì)多關(guān)聯(lián)關(guān)系映射實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
Java中數(shù)組的使用與注意事項(xiàng)詳解(推薦)
數(shù)組是一組地址連續(xù)、長(zhǎng)度固定的具有相同類(lèi)型的數(shù)據(jù)的集合,通過(guò)數(shù)組下標(biāo)我們可以指定數(shù)字中的每一個(gè)元素,下面這篇文章主要給大家介紹了關(guān)于Java中數(shù)組的使用與注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下2021-08-08

