日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

黑马程序员全套Java教程_Java基础教程_API(十四)

發布時間:2023/12/10 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 黑马程序员全套Java教程_Java基础教程_API(十四) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

黑馬程序員全套Java教程_Java基礎教程_API(十四)

  • 1、API
    • 1.1 API概述
    • 1.2 如何使用幫助文檔
  • 2、String
    • 2.1 String概述
    • 2.2 String構造方法
    • 2.3 String對象在內存中的特點
    • 面試題:下列Java代碼中的變量a、b、c分別在內存的()存儲區存放
    • 2.4 字符串的比較
    • 2.5 通過幫助文檔查看String中的方法
    • 面試題:統計字符次數
    • 面試題:數組沒有length()方法?String沒有length()方法?
  • 3、StringBuilder
    • 3.1 StringBulider概述
    • 3.2 StringBuilder構造方法
    • 3.3 StringBuilder的添加和反轉方法
    • 3.4 StringBuilder和String互相轉換
    • 案例:拼接字符串
    • 案例:字符串反轉
    • 3.5 通過幫助文檔查看StringBuilder中的方法

1、API

1.1 API概述

  • API(Application Programming Interface):應用程序編程接口。
  • 比如說,編寫一個機器人程序去控制機器人踢足球,程序需要向機器人發出向前跑、向后跑、射門、搶球等各種命令。機器人廠商一定會提供一些用于控制機器人的接口類,這些類中定義好了操作機器人各種動作的方法。其實,這些接口類就是機器人廠商給應用程序編程的接口,大家把這些類稱為API。
  • Java API:指的就是JDK中提供的各種功能的Java類。這些類將底層的實現封裝了起來,我們不需要關心這些類是如何實現的,只需要學習這些類如何使用,我們可以通過幫助文檔來學習這些API如何使用。

1.2 如何使用幫助文檔

  • 1、在索引的搜索框內輸入想要查找的類。
  • 2、看類在哪個包下。
  • 3、看類的描述。
  • 4、看構造方法
  • 5、看成員方法。

2、String

2.1 String概述

  • String類在java.lang包下,所以使用的時候不需要導包。
  • String類代表字符串Java程序中的所有字符串文字(例如“abc”)都被實現為此類的實例,也就是說,Java程序中所有的雙引號字符串,都是String類的對象。
  • 字符串的特點:
    (1)字符串不可變,它們的值在創建后不能被修改。
    (2)雖然Sting的值是不可變的,但是它們可以被共享。
    (3)字符串效果上相當于字符數組(char[])(JDK8以前是字符數組,JDK9以后是字節數組),但是底層原理是字節數組(byte[])。

2.2 String構造方法

方法名說明
public String()創建一個空白字符串對象,不含有任何內容
public String(char[] chs)根據字符數組的內容,創建字符串對象
public String(byte[] bys)根據字節數組的內容,來創建字符串對象
String s = “abc”;直接賦值的方式創建字符串對象,內容就是abc

推薦使用直接賦值的方式構建字符串對象

2.3 String對象在內存中的特點

  • 1、通過new創建的字符串對象,每一次new都會申請一個內存空間,雖然內容相同,但是地址值不同。
char[] chs = {"a","b","c"}; String s1 = new String(chs); String s2 = new String(chs);

上面代碼中,JVM會先創建一個字符數組,然后每一次new的時候都會有一個新的地址,只不過s1和s2參考的字符串內容是相同的。

  • 2、以""方式給出的字符串,只要字符串序列相同(順序和大小寫),無論在程序代碼中出現幾次,JVM都只會建立一個String對象,并在字符串池中維護。
String s3 = "abc"; String s4 = "abc";

在上面代碼中,針對第一行代碼,JVM會建立一個String對象放在字符串池中,并給s3參考。第二行則讓s4直接參考字符串池中的String對象,也就是說它們本質上是同一個對象。

  • 在內存中的變化:

面試題:下列Java代碼中的變量a、b、c分別在內存的()存儲區存放

class A{private String a = "aa";public boolean methodB(){String b = "bb";final String c = "cc";} }
  • 堆區,棧區,棧區。首先要知道棧內存和堆內存,棧內存存儲局部變量(局部變量是定義在方法中的變量,使用完畢,立即消失);而堆內存存儲new出來的對象,對象初始化時,會為存儲空間添加默認值,每一個new出來的東西都有一個地址值,使用完畢,會在垃圾回收器空閑時被回收(參照筆記十——方法)。a是類中的成員變量,存放在堆區;b、c都是方法中的局部變量,存放在棧區。

2.4 字符串的比較

  • 使用“==”做比較:
    (1)基本類型:比較的是數據值是否相同。
    (2)引用類型:比較的是地址值是否相同。
  • 字符串是對象,它比較內容是否相同,是通過==equals()==方法來實現的:這個方法的聲明為public boolean equals(Object anObject),將字符串與指定對象進行比較。由于我們比較的是字符串對象,所以參數直接傳遞一個字符串。

2.5 通過幫助文檔查看String中的方法

方法名說明
public boolean equals(Object anObject)比較字符串的內容,嚴格區分大小寫(用戶名和密碼)
public char charAt(int index)返回值指定索引
public int length()返回字符串長度

面試題:統計字符次數

  • 鍵盤錄入一個字符串,統計該字符串中大寫字母字符、小寫字母字符、數字字符出現的次數(不考慮其他字符)。
public static void main(String[] args) {/*鍵盤錄入一個字符串,用Scanner實現*/Scanner sc = new Scanner(System.in);System.out.println("請輸入字符串:");String line = sc.nextLine();/*要統計三種字符串的字符個數,需定義三個統計變量,初始值都為0*/int bigCount = 0;int smallCount = 0;int numberCount = 0;/*遍歷字符串,得到每一個字符*/for (int i=0; i<line.length();i++){char ch = line.charAt(i);/*判斷該字符屬于哪種類型,然后對應類型的統計變量+1*/if (ch>='a' && ch<='z'){smallCount++;}else if(ch>='A' && ch<='Z'){bigCount++;}else if(ch>='0' && ch<='9'){numberCount++;}}/*輸出三種類型的字符個數*/System.out.println(smallCount);System.out.println(bigCount);System.out.println(numberCount);}

面試題:數組沒有length()方法?String沒有length()方法?

  • 數組沒有length方法,有length的屬性,String有length()方法。JavaScript中,獲取字符串長度是通過length屬性得到的,這一點容易和Java混淆。

3、StringBuilder

3.1 StringBulider概述


如上圖,如果對字符串進行拼接操作,每次拼接,都會構建一個新的String對象,既耗時,又浪費內存空間,而這種操作還不可避免。那么有沒有一種比較好的方式可以解決這個問題?答案是肯定的,我們可以通過Java提供的StringBuilder類來解決這個問題。

  • StringBuilder是一個可變的字符串類,我們可以把它看成是一個容器。這里的可變指的是StringBuilder對象中內容是可變的。
  • String和StringBuilder的區別:String內容是不可變的,StringBuilder內容是可變的。

3.2 StringBuilder構造方法

方法名說明
public StringBulider()創建一個空白可變字符串對象,不含有任何內容
public StringBulider(str)根據字符串的內容,來創建可變字符串對象

3.3 StringBuilder的添加和反轉方法

方法名說明
public StringBuilder append(任意類型)添加數據,并返回對象本身
public StringBuilder reverse()返回相反的字符序列

3.4 StringBuilder和String互相轉換

  • 1、StringBuilder轉換為String
    public String toString():通過toString()就可以實現把StringBuilder轉換為String。
  • 2、String轉換為StringBuilder
    public StringBuilder(String s):通過構造方法就可以實現把String轉換為StringBuilder。

案例:拼接字符串

  • 需求:定義一個方法,把int數組中的數據按照指定的格式拼接成字符串返回,調用該方法,并在控制臺輸出結果。例如,數組int[] arr = {1,2,3},執行方法后的輸出結果為:[1,2,3]
public static void main(String[] args) {int[] arr = {1,2,3};System.out.println(con2(arr));}private static String con2(int[] arr){StringBuilder str = new StringBuilder();str.append("[");for (int i=0; i<arr.length; i++){str.append(arr[i]);if (i != arr.length-1){str.append(",");}}str.append("]");return str.toString();}

案例:字符串反轉

  • 案例:定義一個方法,實現字符串反轉。鍵盤錄入一個字符串,調用該方法后,在控制臺輸出結果。例如,鍵盤錄入abc,輸出結果cba。
public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("請輸入字符串:");String str = sc.nextLine();System.out.println(myReverse(str));}private static String myReverse(String str){return new StringBuilder(str).reverse().toString();}

3.5 通過幫助文檔查看StringBuilder中的方法

方法名說明
public StringBuilder append(任意類型)添加數據,并返回對象本身
public StringBuilder reverse()返回相反的字符序列
public String toString()通過toString()就可以實現把StringBuilder轉換為String

總結

以上是生活随笔為你收集整理的黑马程序员全套Java教程_Java基础教程_API(十四)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。