內(nèi)容概述
- Scanner類
- Random類
- ArrayList類
一胸完、什么叫做API
API:Application Programming Interface 應(yīng)用程序編程接口书释,就是JDK提供的一些基本的
類,開發(fā)人員可以直接調(diào)用這些類的功能從而實現(xiàn)自己的業(yè)務(wù)邏輯赊窥,不需要重復(fù)造輪子爆惧。
注意:java程序默認會導(dǎo)入java.lang包下面的類;不需要手動導(dǎo)入
二锨能、Scanner類
-
1. Scanner類的位置:
java.util.Scanner;
需要這樣導(dǎo)入import java.util.Scanner;
-
2. 構(gòu)造方法:
public Scanner(InputStream source)
,構(gòu)造函數(shù)需要指定輸入掃描流如果需要鍵盤輸入扯再,Scanner input = new Scanner(System.in)
; -
3. Scanner類的常用API
-
public int nextInt()
: 輸入一個整數(shù) -
public double nextDouble()
: 輸入一個浮點數(shù) -
public String next()
: 輸入一行字符串- 一定要讀取到有效字符后才可以結(jié)束輸入。
- 對輸入有效字符之前遇到的空白址遇,next()方法會自動將其去掉熄阻。
- 只有輸入有效字符后才將其后面輸入的空白作為分隔符或者結(jié)束符。
- next()不能得到帶有空格的字符串倔约。如果第一個有效字符串后面有空格秃殉,會全部抹掉
-
public String nextLine()
:- 以Enter為結(jié)束符,也就是說nextLine()方法返回的是輸入回車之前的所有字符。
- 可以獲得空白。
-
public void close()
: 手動釋放系統(tǒng)資源复濒;(了解)
-
可以在輸入之前進行檢測輸入的類型 hasNextXXX()脖卖;返回的是布爾值
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int s;
if(input.hasNextInt()) {
s = input.nextInt();
System.out.println(s);
}
else
System.out.println("輸入的不是一個int數(shù)字");
}
}
補充:匿名對象: 不指定對象名,像這樣操作:int num = new Scanner(System.in).nextInt();
- 注意事項:匿名對象只能使用唯一的一次巧颈,下次再用不得不再創(chuàng)建一個新對象畦木。
- 使用建議:如果確定有一個對象只需要使用唯一的一次,就可以用匿名對象。
三、Random類
Random用于生成隨機數(shù)
使用方法:
import java.util.Random;
Random random = new Random();
- 得到一個[0,100]隨機int數(shù)
nextInt(n) s是不包含n的
Random random = new Random();
int i = random.nextInt(); // 所有int所有范圍
int j = random.nextInt(100) + 1; // 1-100之間的隨機數(shù)
- 獲取[0, 1)之間的浮點數(shù)外盯;最常用
nextDouble() 不能傳參俄占,默認生成[0,1)之間的浮點數(shù)雏搂,不包含1.0
Ranodm random = new Random();
double n = random.nextDouble();
- 獲取[0,int最大值的一個隨機數(shù))
int s = random.nextInt(Integer.MAX_VALUE);
- 帶有基數(shù)seed的Random
其實Random生成隨機數(shù)是有一個基數(shù)的,Random類中無參數(shù)構(gòu)造函數(shù)是這樣寫的
public Random() {
this(seedUniquifier() ^ System.nanoTime());
}
這個構(gòu)造函數(shù)表示調(diào)用了Random類中的一個有參構(gòu)造函數(shù),傳入一個參數(shù),這個參數(shù)是得到一個啥啥數(shù)然后以納秒級別系統(tǒng)時間(1s = 1000000000 nanos)進行異或操作(二進制對應(yīng)的位數(shù)围俘,如果不相等就取1,否則取0)琢融;以這個為參數(shù)為seed生成一個隨機數(shù)界牡;
當然,我們可以自己在創(chuàng)建這個Random類的時候自己傳入一個基數(shù)(必須是整型)如下演示
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random random1 = new Random(2018);
Random random2 = new Random(2018);
double d1_1 = random1.nextInt();
double d1_2 = random1.nextInt();
double d2_1 = random2.nextInt();
double d2_2 = random2.nextInt();
System.out.println("random1 -d1_1: " + d1_1);
System.out.println("random2 -d2_1: " + d2_1);
System.out.println("random1 -d1_2: " + d1_2);
System.out.println("random2 -d2_2: " + d2_2);
}
}
程序運行的結(jié)果如下:
random1 -d1_1: -1.634881706E9
random2 -d2_1: -1.634881706E9
random1 -d1_2: 1.95782086E8
random2 -d2_2: 1.95782086E8
從上面的結(jié)果漾抬,我們可以發(fā)現(xiàn)一些規(guī)律:
①.當以相同的基數(shù)創(chuàng)建兩個不同的對象宿亡,第一次生成的數(shù)一模一樣,第二次的也是一模一樣
②.對于同一個對象纳令,第一次和第二次生成的結(jié)果不同
③.每次重新運行程序挽荠,運行結(jié)果與上次運行結(jié)果一模一樣!
- Math.random()
random() 方法用于返回一個隨機數(shù)平绩,隨機數(shù)范圍為 0.0 =< Math.random < 1.0圈匆。
四、ArrayList類
引子
用一個數(shù)組保存學(xué)生對象
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public Student() {}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public static void main(String[] args) {
Student[] studentArray = new Student[3];
for (int i = 0; i < studentArray.length; i++) {
studentArray[i] = new Student("" + i , i + 15);
}
}
}
1.泛型不能使用基本數(shù)據(jù)類型捏雌,必須對基本數(shù)據(jù)類型進行裝箱操作(本文下面會介紹)
2.ArrayList 類繼承了AbstractList抽象類跃赚,
3.ArrayList 實現(xiàn)了List<E>, RandomAccess, Cloneable, java.io.Serializable這一堆接口
4.ArrayList 的底層實現(xiàn)有點高級,但是對于開發(fā)者來說腹忽,我們只關(guān)注與這個類拋出的接口如何去使用它們就OK了
對于上面的問題,可以用ArrayList進行保存砚作,如下
import java.util.ArrayList;
...
ArrayList<Student> studentList = new ArrayList<>();
ArrayList常用API
-
public boolean add(E e)
:將指定元素添加到此集合的尾部窘奏;
-
-
public E remove(int index)
:一處此集合指定位置上的元素,返回被刪除的元素葫录;
-
-
public E get(int index)
:返回此集合指定位置上的元素着裹,返回獲得的元素。
-
-
public int size()
: 返回此集合中的元素數(shù)米同。比那里集合時骇扇,可以控制搜索范圍摔竿,防止越界;
-
ArrayList<泛型>如何儲存基本數(shù)據(jù)類型
ArrayList對象不能存儲基本類型少孝,只能存儲引用類型的數(shù)據(jù)继低。類似 <int> 不能寫,但是存儲基本數(shù)據(jù)類型對應(yīng)的包裝類型是可以的稍走。所以袁翁,想要存儲基本類型數(shù)據(jù), <> 中的數(shù)據(jù)類型婿脸,必須轉(zhuǎn)換后才能編寫粱胜,對于一些特定的場景,對于基本數(shù)據(jù)類型狐树,可能要用到基本類型包裝類焙压,也可能用到基本數(shù)據(jù)類型,JVM會根據(jù)場景進行自動拆箱抑钟、自動裝箱涯曲。
轉(zhuǎn)換寫法如下:
基本類型 | 基本類型包裝類 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |