1. 程式人生 > >字串與集合解釋String類的用法

字串與集合解釋String類的用法

1.Java當中的資料型別只有兩種:基本資料型別  引用資料型別;

基本型別就是八個關鍵字  ,只要不是這八者之一,那麼剩下的就全是 引用資料型別,所以字串就是一種引用型別;

例子:Scanner  sc=new Scanner(System.in)

            陣列;    直接使用的字串常量也是一個字串物件;

只要是字串就是一個物件

字串就是Java,lang,String的物件,裡面也包含三個部分

  • 成員變數
  • 成員方法
  • 構造方法 


2.字串物件與其他物件的區別

既然說字串是一個物件,那麼就兩個問題需要解釋;

a)物件肯定有一個類與之對應,那麼字串對應的類是?String

為什麼String這個類不需要導包就可以直接使用?  

所有的類都需要導包才能使用;除了兩種情況;

A,需要使用的目標類和當前類位於同一個包下

B,要使用的目標類,位於Java.lang這個包下;但是不包含子包內容

b)既然字串是物件為什麼直接打印出來就是內容呢?

列印println方法邏輯;

1.如果是字串內容,那麼直接顯示內容;

2.如果是字串型別,那麼就想辦法內部轉換成字串,然後顯示;

一般的物件都是使用“型別資訊[email protected]+地址值”作為字串內容;

 如何使用String這個類?(什麼是文件註釋,什麼是使用說明書)

API(目標,索引,搜尋)、使用方法;導包,建立,使用;

已過時,歷史遺留下 不要用;String 不用new 直接雙引號;結合API文件學習String 怎麼使用;

這之前說過String是一個類,字串是一個物件;

字串常用的2+1中方式(兩種構造,一種直接賦值)
常用的兩個構造方法
1.public String(char[] array);引數是一個字元陣列;
根據字元陣列的內容來建立一個字串
2.public String(char[] array ,int offset,int count):根據字元陣列的一部分來建立字串

offset 代表起始索引,count 代表取用到多少個個數;


3.直接定義字串


字串池的設計

字串是最常用的物件,所以在程式當中往往會出現多個重複的字串

為了節省記憶體,所以引入了字串池的設計,可以重複利用字串;

關於字串池的幾點描述

  1. 字串池是位於堆記憶體中的一小塊空間,用來儲存若干個字串的地址值;只要是雙引號的就放入
  2. 字串池中的絕對不會出現重複的字串對應的地址,保證字串不重複;
  3. 凡是直接雙引號的字串預設都在池中,而new出來的字串預設不在池中;
對於基本型別來說     ,==是進行資料內容相同的比較;但是對於引用型別來說,  ==是進行地址值的相同比較;
如果是兩個物件,那麼地址值必然不同,如果地址值相同,必然是同一個物件。

直接雙引號賦值;在池中


new了之後 ,產生新的物件,地址值不同;

  1. 字串物件一旦在記憶體中被建立,那麼內容不可被改變;
  2. 字串當中的內容不會發生改變,每當你覺得好像發生了改變的時候,一定是建立了新的字串;


改變的是str這個變數對應的地制值,不是字串,如下


3.字串的比較方法;

如果進行字串內容的比較?
  • 如果==進行比較,那麼進行的是地址值得相同判斷;
  • 如果希望進行字串內容的比較     則需要使用String 當中的成員方法;
  • public boolean equals(Object obj);進行字串內容的比較,嚴格區分大小寫;引數obj就是另一個物件(跟誰比);
  • Object 也是一種型別 ,他可以接受任何型別的資料;
  • public booiean equalsIgnoreCase(String str):進行字串的內容比較,但是忽略大小寫;

注意:

  1. 要想進行字串的內容比較,一定要用equals方法,不要使用==
  2. equals方法具有對稱性,a.equals(b)和b.equals(a) 效果一樣;
  3. 小技巧:如果 equals方法 需要比較的是兩個字串當中有一個是常量,那麼儘量將常量寫在前面;呼叫方法的時候,物件名當中如果存在null值,那麼將會發生“空指標異常”NullPointerException;
  4. 直接寫上雙引號就是字串物件,所以雙引號直接點也能呼叫;



使用String的 equals 和equalsIgnoreCase兩個方法,來模擬一個簡單的登入場景;

  1. 登入需要使用者名稱密碼兩個資訊,也就是兩個字串
  2. 使用者名稱密碼應該從鍵盤輸入,獲取兩個字元 Scanner
  3. 怎樣才算登入成功?肯定再註冊時候提前寫好正確的登入名,密碼
  4. 判斷輸入的使用者名稱密碼與正確的使用者名稱密碼是否一致;
  • 使用者名稱必須正確
  • 密碼必須正確

上述兩個條件是並且的關係 缺一不可   用到的邏輯運算子 &&

  1. 判斷是否登入成功
  2. 如果登入成功,顯示歡迎您,失敗則退出系統;


1.如果希望將字串當中的指定部分進行替換操作,需要使用:

public Static replace (CharSequence oldStr,CharSequence newStr):將字串當中出現的的所有oldStr部分,替換成newStr部分;

引數oldStr代表需要被替換的老字串部分

引數newStr代表的是需要替換成為的新字串

引數型別CharSquence 現階段可以簡單的認為就是字串String;

2.如果希望將字串按照指定的標記切分為若干段,那麼可以使用的方法

public String[] split(String regex): 將regex作為標記進行切刀,返回切分之後的若干段字串(字串陣列)

注意事項:

現階段強烈推薦不要使用英文句點作為分割標記

因為英文句點在正則表示式中有特殊含義(涉及雙重轉義)

而引數regex其是就是一個正則表示式(今後更新)

如果一定要使用英文句點,切割的標記應該使用“\\.”(現階段的固定寫法);

..............

相關推薦

字串集合解釋String用法

1.Java當中的資料型別只有兩種:基本資料型別  引用資料型別;基本型別就是八個關鍵字  ,只要不是這八者之一,那麼剩下的就全是 引用資料型別,所以字串就是一種引用型別;例子:Scanner  sc=new Scanner(System.in)            陣列;

C++string用法

last emp 進行 iii str2 line rep har ddd 1.string類的輸入操作(string類重載運算符operator>>用於輸入,同樣重載運算符operator<<用於輸出操作)operator是C++的關鍵字,它和運算

再談怎樣以最簡單的方法將泛型為String型的集合String型的數組轉化為逗號間隔字符串形式

集合 ret 類型 author sta rgs bsp lan ont 今天review代碼,看見某些大爺在將泛型為String類型的集合或String類型的數組轉化為逗號間隔字符串形式時仍然僅僅顧結果不註重過程,“大爺”咱能負點責任嗎?

清華大學《C++語言程式設計基礎》線上課程筆記05---vector物件,物件的複製移動,string

vector 物件 C++標準庫中的一個類模板 封裝任何型別的動態陣列,自動建立和刪除。 陣列下標越界檢查。 將動態陣列封裝成類的知識點中封裝的ArrayOfPoints也提供了類似功能,但只適用於一種型別的陣列。 vector<元素型別> 陣列物件名(陣列長度

java字串集合轉換工具使用

java字串與集合轉換工具使用 我們知道在Java 中有幾種集合類,比如 List,Set,還有 Map,List集合一般是存放的元素是有序可重複的,Set 存放的元素則是無序不可重複的,而 Map 集合存放的是鍵值對。 /** * 將字串轉換為集合 * @param string

string 用法

相信使用過MFC程式設計的朋友對CString這個類的印象應該非常深刻吧?的確,MFC中的CString類使用起來真的非常的方便好用。但是如果離開了MFC框架,還有沒有這樣使用起來非常方便的類呢?答案是肯定的。也許有人會說,即使不用MFC框架,也可以想辦法使用MFC中的API,具體的操作方法在本文最

stl之string用法詳細總結

標準c++中String類非常強大,合理使用,能極大提高程式設計效率,下面就對string類的用法進行總結。 標頭檔案 #include<string> String類的建構函式如下: 1)    string s; //生成一個空字串s 2)    str

Java 字串常用操作(String

字串查詢 indexOf(String s) 該方法用於返回引數字串s在指定字串中首次出現的索引位置,當呼叫字串的indexOf()方法時,會從當前字串的開始位置搜尋s的位置;如果沒有檢索到字串s,該方法返回-1 String str ="

JAVA——特殊(1)——String(2)——字元字串(方法)

(一)字元與字串 字元與字串 字串就是一個字元陣列。 所以在String類裡面支援有字元陣列轉換為字串以及字串變為字元的操作方法。 將字元陣列中的所有內容轉化為字串——返回值為一串字串 public String(char value[ ])

c++中stringstream 用法字串數字之間轉化

iostream標準庫支援對於記憶體的輸入輸出,只要將流與儲存在程式記憶體中的string物件捆綁在一起,就可以使用通用的輸入輸出操作符來讀寫string物件!標準庫中定義了三種類型的字串流:istringstream,由istream派生出來的,用於讀一個string的物

C++ 字串 15-- 18.41.結構體string string的呼叫 引數通過引用的方式呼叫

#include <iostream> #include <string> using namespace std; /*--------------------------------- 18.41.結構體與string string類的呼叫 引數通

String的常用方法,實現首字母大寫(重要),轉換大小寫,判斷字串是否由數字組成,字串字元陣列的轉換

(1)String類的常用方法:示例:觀察Public char charAt(int index)public class Test {public static void main(String[] args) {// TODO Auto-generated method

Bzoj3884 上帝集合的正確用法

bzoj3884 歐拉 printf sea 歐拉定理 space ostream 種類數 efi Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 1656 Solved: 761 Description 根據一些書上

【BZOJ3884】上帝集合的正確用法 歐拉定理

可能 答案 接下來 div 整數 共創 beta pan urn 【BZOJ3884】上帝與集合的正確用法 Description 根據一些書上的記載,上帝的一次失敗的創世經歷是這樣的: 第一天, 上帝創造了一個世界的基本元素,稱做“元”。

MySQL數據型--------枚舉集合型實戰

mysql dba 數據類型 1. 背景  * MySQL數據庫提供針對字符串存儲的兩種特殊數據類型:枚舉類型ENUM和集合類型SET,集合類型數據類型可以給予我們更多提高性能、降低存儲容量和降低程序代碼理解的技巧。2. 枚舉與集合類型所屬空間與最大成員數量類型占用字節最大成員數量ENUM1 or 2

全面解釋java中StringBuilder、StringBuffer、String之間的關系

() 大於等於 修飾 軟件 進行 lan lin 字符 str StringBuilder、StringBuffer、String類之間的關系   java中String、StringBuffer、StringBuilder是編程中經常使用的字符串類,在上一篇博文中我們已

歐拉函數 BZOJ3884 上帝集合的正確用法

esc con pac 用法 pow 四種 tails 會有 sea 3884: 上帝與集合的正確用法 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 1843 Solved: 862[Submit][Status][Dis

UnicodeASCiI之間有什麽區別?java當中的轉義字符 Character的使用 String的使用

charat and pac sca sdi change con 輸入 ack ASCII碼 稱為 美國標準信息交換碼 (American standard code of Information Interchange) 其中一共有多少個碼?2的7次冪 128個 Un

[技術分享] 20171211_後端開發_使用@DateTimeFormat註解解決前臺string後臺date型的轉換,使用@JsonFormat註解解決後臺date前臺string型的轉換

ret datetime 網上 date() 直接 date void time 位置 說明: 有的時候由前臺jsp頁面填寫一個日期,提交到後臺spring mvc的時候,我們希望直接轉換成一個Date類型,而不是由一個string 類型接收,然後再通過simpleDate

StringBuilderstring的區別

right .net 隨著 標簽 oba uil att 新的 class string本身是不可改變的,它只能賦值一次,每一次內容發生改變,都會生成一個新的對象,然後原有的對象引用新的對象,而每一次生成新對象都會對系統性能產生影響,這會降低.NET編譯器的工作效率。s