常見API整理【Scanner類、匿名對象、Random類以及ArrayList集合】

(一)、Scanner類

1.1 引用類型使用步驟

導包
使用import關鍵字導包,在類的所有代碼之前導包,引入要使用的類型,java.lang包下的所有類無需導入。

import 包名.類名;

1.2 創建對象

使用該類的構造方法,創建一個該類的對象。 格式:

數據類型 變量名 = new 數據類型(參數列表);

1.3 調用方法

調用該類的成員方法,完成指定功能。 格式:

變量名.方法名();

1.4 Scanner使用步驟

  • 查看類
    java.util.Scanner:該類需要import導入後使用。
  • 查看構造方法
    public Scanner(InputStream source): 構造一個新的Scanner,它生成的值是從指定的輸入流掃描的。
  • 查看成員方法
    public int nextInt():將輸入信息的下一個標記掃描爲一個int值。
  • 使用Scanner類,完成接收鍵盤錄入數據的操作,代碼如下:
//1. 導包
import java.util.Scanner;
public class Demo01_Scanner {
	public static void main(String[] args) {
		//2. 創建鍵盤錄入數據的對象
		Scanner sc = new Scanner(System.in);
		//3. 接收數據
		System.out.println("請錄入一個整數:");
		int i = sc.nextInt();
		//4. 輸出數據
		System.out.println("i:"+i);
	}
}

(二)、匿名對象【瞭解】

2.1 概念

  • 創建對象時,只有創建對象的語句,卻沒有把對象地址值賦值給某個變量。雖然是創建對象的簡化寫法,但是應用場景非常有限。
  • 匿名對象 :沒有變量名的對象。
    格式:
new 類名(參數列表);

舉例:

new Scanner(System.in);

2.2 應用場景

  1. 創建匿名對象直接調用方法,沒有變量名。
new Scanner(System.in).nextInt();
  1. 一旦調用兩次方法,就是創建了兩個對象,造成浪費,請看如下代碼。注意:一個匿名對象,只能使用一次。
new Scanner(System.in).nextInt();
new Scanner(System.in).nextInt();
  1. 匿名對象可以作爲方法的參數和返回值
  • 作爲參數:
class Test {
	public static void main(String[] args) {
		// 普通方式
		Scanner sc = new Scanner(System.in);
		input(sc);
		//匿名對象作爲方法接收的參數
		input(new Scanner(System.in));
	}
	public static void input(Scanner sc){
		System.out.println(sc);
	}
}
  • 作爲返回值
class Test2 {
	public static void main(String[] args) {
		// 普通方式
		Scanner sc = getScanner();
	}
	public static Scanner getScanner(){
		//普通方式
		//Scanner sc = new Scanner(System.in);
		//return sc;
		//匿名對象作爲方法返回值
		return new Scanner(System.in);
	}
}

(三)、Random使用步驟

  • 查看類
    java.util.Random:該類需要 import導入使後使用。
  • 查看構造方法
    public Random():創建一個新的隨機數生成器。
  • 查看成員方法
    public int nextInt(int n):返回一個僞隨機數,範圍在0(包括)和 指定值 n(不包括)之間的
    int值。
    獲取一個隨機的int數字(範圍是int所有範圍,有正負兩種);int num = r.nextInt()
    獲取一個隨機的int數字(參數代表了範圍,左閉右開區間);int num = r.nextInt()
    使用Random類,完成生成3個10以內的隨機整數的操作,代碼如下:
//1. 導包
import java.util.Random;
public class Demo01_Random {
	public static void main(String[] args) {
		//2. 創建鍵盤錄入數據的對象
		Random r = new Random();
		 
		for(int i = 0; i < 3; i++){
			//3. 隨機生成一個數據
			int number = r.nextInt(10);
			//4. 輸出數據
			System.out.println("number:"+ number);
		}
	}
}

備註:創建一個 Random 對象,每次調用 nextInt() 方法,都會生成一個隨機數

(四)、ArrayList集合

  • 數組的長度不可以發生改變。但是ArrayList集合的長度是可以隨意發生變化的。
  • 對於ArrayLIst來說,有一個尖括號< E >代表泛型。
  • 泛型:也就是在集合當中的所有元素,全都是統一的什麼類型。
  • 注意:泛型只能是引用類型,不能是基本類型。
import java.util.ArrayList;

public class Demo02Anonymous {
	public static void main(String[] args) {
	//創建了一個ArrayList集合,集合的名稱是list,裏面裝的都是String字符串類型的數據
	//備註:從JDK1.7+ 開始,右側的尖括號可以不寫內容,但是<> 本身還是要寫的。
		ArrayList<String> List = new ArrayList<String>();
		System.out.println(List); // []
	}		
}
  • 注意事項:對於ArrayList集合來說,直接打印得到的不是地址值,而是內容。如果內容爲空,得到的是空的中括號:[ ]

4.1 add:將指定的元素添加到此集合的尾部。

public boolean add(E e) :向集合當中添加元素,參數的類型和泛型一致。【返回值代表添加是否成功。】

//添加元素
list.add("hello");
list.add("world");
list.add("java");
boolean success = list.add("流言");
System.out.println(list); // [流言]
System.out.println("添加的動作是否成功:" + success); // true

注意:對於ArrayList集合來說,add添加動作一定是成功的,所以返回值可用可不用。
但是對於其他集合來說,add添加動作不一定成功。

4.2 get(int index):返回此集合中指定位置上的元素。返回獲取的元素。

public E get(int index):從集合當中獲取元素,參數是索引編號,返回值就是對應位置的元素。

//從集合中獲取元素:get。 索引值從0開始。
String name = list.get(2);
System.out.println("第二號索引位置:"+name);

4.3 remove(int index):移除此集合中指定位置上的元素。返回被刪除的元素。

public E remove(int index):從集合當中刪除元素,參數是索引編號,返回值就是被刪除掉的元素。

//從集合中刪除元素:remove索引值從0開始。
String whoRemoved = list.remove(3);
System.out.println("被刪除的是:"+whoRemoved);
System.out.println(list);

4.4 size():返回此集合中的元素數。遍歷集合時,可以控制索引範圍,防止越界。

public int size():獲取集合的尺寸長度,返回值是集合中包含的元素個數。

//獲取集合的長度尺寸,也就是其中的元素個數
int size = list.size();
System.out.println("集合的長度是:" + size);
  • 遍歷集合
import java.util.ArrayList;
public class Demo02Anonymous {
	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<String>();
		list.add("迪麗熱巴");
		list.add("古力娜扎");
		list.add("馬爾扎哈");
		
		//遍歷集合
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}
	}		
}

4.5 ArrayList集合存儲基本數據類型

如果希望向集合ArrayList當中存儲基本類型數據,必須使用基本類型對應的" 包裝類 "。
在這裏插入圖片描述

public class Demo02ArrayListMethod {
	public static void main(String[] args) {
		ArrayList<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(2);
		list.add(3);
		list.add(4);
		System.out.println(list);
	}
}
  • 從JDK 1.5+ 開始,支持自動裝箱、自動插箱。
  • 自動裝箱:基本類型------> 包裝類型。
  • 自動插箱:包裝類型------> 基本類型。

(五)、String類

  • java.lang.String類代表字符串。API當中說:Java程序中的所有字符串字面值(如 “ abc ”)都作爲此類的實體實現。
  • 其實就是說:程序中所有的雙引號字符串,都是String類的對象。(就算沒有new,也照樣是。)
  • 字符串的特點:①、字符串的內容不可變。②、正是因爲字符串不可改變,所以字符串是可以共享使用的。③、字符串效果上相當於是char[ ]字符數組,但是底層原理是byte [ ] 字節數組。

1、字符串常用方法

5.1.1 public String():創建一個空白字符串,不含有任何內容。

//使用空參構造
String str1 = new String();
//小括號留空,說明字符串什麼內容都沒有。
System.out.println(str1);

5.1.2 public String(char[ ] array):根據字符數組的內容,來創建對應的字符串。

//根據字符數組創建字符串
char[] charArray = {'A','B','C'};
String str2 = new String(charArray);
System.out.println(str2);//  ---->  ABC

5.1.3 public String(byte[ ] array):根據字節數組的內容,來創建對應的字符串。

//根據字節數組創建字符串
byte[] byteArray = {97,98,99};
String str3 = new String(byteArray);
System.out.println(str3);//----> abc

2、字符串的常量池

  • 字符串常量池:程序當中直接寫上的雙引號字符串,就在字符串常量池中。
    對於基本類型來說,==是進行數值的比較。對於引用類型來說,==是進行【地址值】的比較。
    在這裏插入圖片描述
    雙引號直接寫的字符串在常量池當中,new的不在常量池當中。

3、字符串的比較方法

  • 如果確實需要字符串的內容比較,可以使用兩個方法:
  • ①、public boolean equals(Object obj):參數可以是任何對象,只有參數是一個字符串並且內容相同的纔會給true;否則返回false。
  • 【注意:Ⅰ、任何對象都能用Object進行接受。Ⅱ、equals方法具有對稱性,也就是a.equals(b)和b.equals(a)效果一樣。Ⅲ、如果比較雙方一個常量一個變量,推薦把常量字符串寫在前面。】
String str5 = null;
System.out.println("abc".equals(str5));//推薦,false
System.out.println(str5.equals("abc"));//不推薦,報錯,空指針異常NullPorinterException
  • ②、public boolean equalsIgnoreCase(String str):忽略大小寫,進行內容比較。
String strA = "Java";
String strB = "java";
System.out.println(strA.equals(strB));//false,忽略大小寫
System.out.println(strA.equalsIgnoreCase(strB));//true,忽略大小寫

4、字符串的獲取相關方法

  • 5.4.1 public int length():獲取字符串當中含有的字符個數,拿到字符串長度。
//獲取字符串的長度
int length = "hello".length();
System.out.println(length);//5
  • 5.4.2 public String concat(String str):將當前字符串和參數字符串拼接成爲返回值新的字符串。
//拼接字符串
String str1 = "Hello";
String str2 = "World";
String str3 = str1.concat(str2);
System.out.println(str1);//Hello,原封不動
System.out.println(str2);//World,原封不動
System.out.println(str3);//HelloWorld,新的字符串
  • 5.4.3 public char charAt(int index):獲取指定索引位置的單個字符串(從0開始)。
//獲取指定索引位置的單個字符
char ch = "Hello".charAt(1);
System.out.println(ch);//e
  • 5.4.4 public int indexOf(String str):查找參數字符串在本字符串當中首次出現的索引位置,如果沒有,返回-1值。
//查找參數字符串在本來字符串當中出現的第一次索引位置
//如果根本沒有。返回-1值。
String original = "HelloWorldHelloWorld";
int index = original.indexOf("llo");
System.out.println(index);//2
System.out.println("HelloWorld".indexOf("abc"));//-1

5、字符串的截取方法

  • public String substring(int index):截取從參數位置一直到字符串末尾,返回新字符串。
  • public String substring(int begin,int end):截取從begin開始,一直到end結束,中間的字符串。【注意:[ begin,end ) :包含左邊,不包含右邊】
String str1 = "HelloWorld";
String str2 = str1.substring(5);
System.out.println(str1);//HelloWorld,原封不動
System.out.println(str2);//World,新字符串
		
String str3 = str1.substring(4,7);
System.out.println(str3);
		
//下面這種寫法,字符串的內容仍然是沒有改變的
//下面有兩個字符串,"Hello","Java"
//strA當中保存的是地址值。
//本來地址值是Hello的0x666
//後來地址值變成了Java的0x999
String strA = "Hello";
System.out.println(strA);
strA = "Java";
System.out.println(strA);

6、字符串的轉換方法

  • 5.6.1 public char[ ] toCharArray():將當前字符串拆分成字符數組作爲返回值。
//轉換成爲字符串數組
char[] chars = "Hello".toCharArray();
System.out.println(chars[0]);//H
System.out.println(chars.length);//5
  • 5.6.2 public byte[ ] getBytes():獲得當前字符串底層的字節數組。
//轉換爲字節數組
byte[] bytes =  "abc".getBytes();
for (int i = 0; i < bytes.length; i++) {
	System.out.println(bytes[i]);
}
  • 5.6.3 public String replace(CharSequence oldString,CharSequence newString):將所有出現的老字符串替換成新的字符串,返回替換之後的結果新字符串。
  • 【注意:CharSequence意思就是說可以接受字符串類型】
String str1 = "How do you do?";
String str2 = str1.replace("o","*");
System.out.println(str1);//How do you do?
System.out.println(str2);//H*w d* y*u d*?

7、字符串的分割方法

  • public String[ ] split(String regex):按照參數的規則,將字符串切分成若干部分。
String str1 = "aaa,bbb,ccc";
String[] array1 = str1.split(",");
for (int i = 0; i < array1.length; i++) {
	System.out.println(array1[i]);
}//按照","分割--->aaa bbb ccc
  • 【注意事項:split方法的參數其實是一個“正則表達式”,如果按照英文句點" . " 進行分割,必須寫" \. " (兩個反斜槓)】
String str3 ="XXX.YYY.ZZZ";
String[] array3 = str3.split("\\.");
System.out.println(array3.length);
for (int i = 0; i < array3.length; i++) {
	System.out.println(array3[i]);
}//按照"."分割--->XXX YYY ZZZ
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章