那些年做的java基礎筆記

# 基本語法

## java基本數據類型

1. 數值型

* 整數類型:byte(8)、short(16)、int(32)、long(64)

* 浮點類型:float、double <strong>(double,雙精度數值,表示的數據類型是float類型的雙倍)</strong>

2. 字符型:char ('a')

3. 布爾型:boolean (true,false)

注意:

1. JAVA默認正數類型是int類型,如果需要聲明正數是long類型,必須在數字末尾添加字母“L”

long lon = -1245L;

2. float類型數值要以F作為后綴,沒有后綴,默認為double類型;

## 數據類型轉換

1. <strong>自動類型轉換:低精度向高精度類型轉換,適合于整數類型和浮點類型</strong>

byte類型-short類型-int類型-long類型-float類型-double類型

2. <strong>強制類型轉換:高精度向低精度類型轉換</strong>

注意:boolean不能被強制轉換為其他數據類型,反之亦然

## 賦值運算符

自增自減運算符:

++X:先將變量X的值+1,然后再引用該變量的值參與運算

X++:先將引用的變量參與表達式的運算,然后再將其做+1處理

```java

public calss Operation{

? ? public static void main(String[] args){

? ? ? ? ? ? int m=5;

? ? ? ? ? ? int b=m++;

? ? ? ? ? ? System.out.println("變量b的值為:"+b);? // 5

? ? ? ? ? ? System.out.println("變量m的值為:"+m);? //6

? ? }

}

```

## 變量與常量

變量:type 標識符? int age;

常量:final type 變量名稱[=值]? final float PI=3.1415926f;

## 變量的有效范圍

1. 成員變量(全局變量):定義在類體中,有效范圍是整個類的代碼段。在類體中的任何位置都可使用該變量。

? ? * 靜態(tài)變量:

? ? ? ? 1. 有效范圍是整個類,被類的所有實例共享。

? ? ? ? 2. 使用static定義,調用變量,通過“類名.變量名”方式訪問。


? ? ? ? ```java

? ? ? ? public calss Variable{

? ? ? ? ? ? static int age=5;

? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? ? int m=5;

? ? ? ? ? ? ? ? int b=m++;

? ? ? ? ? ? ? ? System.out.println("靜態(tài)變量值為:"+Variable.age);? // 5

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? ```

? ? * 實例變量:

? ? ? ? 1. 與類的實例對應,有效范圍為整個實例。


? ? ? ? ```java

? ? ? ? public calss Student{

? ? ? ? ? ? public static int amount=50;

? ? ? ? ? ? public int average=18;

? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? ? Student stu = new Student();

? ? ? ? ? ? ? ? System.out.println("班級人數為:"+Student.amount);? // 50

? ? ? ? ? ? ? ? System.out.println("平均年齡為:"+stu.average);? // 18

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? ```


2. 局部變量:

? ? * 局部變量只在當前代碼塊才有效,不能用于其他類的方法中。

? ? * 局部變量可與全局變量的變量名稱相同,此時全局變量將被隱藏,可以使用“this”關鍵字訪問局部變量。



? ? ```java

? ? ? ? public calss Student{

? ? ? ? ? ? static String words = "全局變量";

? ? ? ? ? ? public void getStu(){

? ? ? ? ? ? ? ? String words ="局部變量";

? ? ? ? ? ? ? ? System.out.println("words變量現(xiàn)在是:" + words);? // 局部變量

? ? ? ? ? ? ? ? System.out.println("訪問全局變量:" + this.words);? // 全局變量

? ? ? ? ? ? }

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? ? Student stu = new Student();

? ? ? ? ? ? ? ? stu.getStu();

? ? ? ? ? ? }

? ? ? ? }

? ? ```


# 流程控制語句

## if條件判斷語句

1. 簡單的if條件語句


? ? ```java

? ? ? ? if(關系表達式){

? ? ? ? ? ? 復合語句

? ? ? ? }

? ? ```

? ? ```java

? ? ? ? public calss IfExercise{

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? ? float price=60.89f;

? ? ? ? ? ? ? ? if(price<100){

? ? ? ? ? ? ? ? System.out.println("價格可以接受");?

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? System.out.println("over");

? ? ? ? ? ? }

? ? ? ? }

? ? ```

2. if...else語句


? ? ```java

? ? ? ? if(條件表達式){

? ? ? ? ? ? 復合語句1

? ? ? ? }

? ? ? ? else{

? ? ? ? ? ? 復合語句2

? ? ? ? }

? ? ```

? ? ```java

? ? ? ? public calss IfElseExercise{

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? ? float price=60.89f;

? ? ? ? ? ? ? ? if(price<100){

? ? ? ? ? ? ? ? System.out.println("價格可以接受");?

? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? System.out.println("太貴了,拒絕購買");?

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? System.out.println("over");

? ? ? ? ? ? }

? ? ? ? }

? ? ```

? ? <strong>注意:if...else語句可使用三元運算符代替,if(price<100)?"價格可接受":"太貴了,拒絕購買"</strong>?

3. if...else if多分支語句


? ? ```java

? ? ? ? if(條件表達式1){

? ? ? ? ? ? 復合語句1

? ? ? ? }

? ? ? ? else if(條件表達式2){

? ? ? ? ? ? 復合語句2

? ? ? ? }

? ? ? ? ...

? ? ? ? else if(條件表達式n){

? ? ? ? ? ? 復合語句n

? ? ? ? }

? ? ```


? ? ```java

? ? ? ? public calss Verdict{

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? ? int number=14;

? ? ? ? ? ? ? ? if(number>20){

? ? ? ? ? ? ? ? System.out.println("變量number大于20");?

? ? ? ? ? ? ? ? }else if(number>10){

? ? ? ? ? ? ? ? System.out.println("變量number大于10小于20");?

? ? ? ? ? ? ? ? }else if(number>0){

? ? ? ? ? ? ? ? System.out.println("變量number大于0小于10");?

? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? System.out.println("變量number小于等于0");

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ```?

## switch語句

? ? ```java

? ? ? ? switch(條件表達式){

? ? ? ? ? ? case 常量表達式1:

? ? ? ? ? ? ? ? 語句塊1

? ? ? ? ? ? ? ? [break;]

? ? ? ? ? ? ...

? ? ? ? ? ? case 常量表達式n:

? ? ? ? ? ? ? ? 語句塊n

? ? ? ? ? ? ? ? [break;]

? ? ? ? ? ? default;

? ? ? ? ? ? ? ? 語句塊n+1;

? ? ? ? ? ? ? ? [break;]

? ? ? ? }

? ? ```?


? ? 1. 條件表達式為必要參數;

? ? 2. 常量表達式必須與條件表達式類型相兼容的值;

? ? 3. 語句塊:可選參數,一條或多條語句,不需要大括號。當表達式的值域常量表達式的值匹配時執(zhí)行,否則繼續(xù)判斷其他值,直到常量表達式n;

? ? 4. break:可選參數,用于跳出switch語句;

? ? 5. default:可選參數,如果沒有該語句,switch語句不與任何case語句常量值相同時,不做任何處理。


? ? ```java

? ? ? ? public calss SwitchExercise{

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? ? int week=3;

? ? ? ? ? ? ? ? switch(week){

? ? ? ? ? ? ? ? case 1:

? ? ? ? ? ? ? ? ? ? System.out.println("周一");

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case 2:

? ? ? ? ? ? ? ? ? ? System.out.println("周二");

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? case 3:

? ? ? ? ? ? ? ? ? ? System.out.println("周三");

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? default:

? ? ? ? ? ? ? ? ? ? System.out.println("I dont't know");

? ? ? ? ? ? ? ? }

? ? ? ? }

? ? ```?

注意:如果不加break,則匹配之后,會繼續(xù)判斷并執(zhí)行其他case。比如,上述例子中,去除break之后,則會打印“周三”和"I dont't know"。

## 循環(huán)語句

1. for循環(huán)語句

? ? ```java

? ? ? ? for(初始化語句;循環(huán)語句;迭代語句){

? ? ? ? ? ? 語句序列

? ? ? ? }

? ? ```

? ? ```java

? ? ? ? public calss CountSum{

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? ? int sum=0;

? ? ? ? ? ? ? ? for(int i=1;i<=100;i++){

? ? ? ? ? ? ? ? sum+=i;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? System.out.println("1~100的和為:"+sum);

? ? ? ? ? ? }

? ? ? ? }

? ? ```?

2. while循環(huán)語句:先進行條件判斷,再執(zhí)行循環(huán)體中的內容。

? ? ```java

? ? ? ? while(條件表達式){

? ? ? ? ? ? 循環(huán)體

? ? ? ? }

? ? ```

? ? ```java

? ? ? ? public calss GetSum{

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? ? int x=1;

? ? ? ? ? ? ? ? int sum=0;

? ? ? ? ? ? ? ? while(x<=10){

? ? ? ? ? ? ? ? sum+=x;

? ? ? ? ? ? ? ? x++;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? System.out.println("1~10的和為:"+sum);

? ? ? ? ? ? }

? ? ? ? }

? ? ```

3. do...while循環(huán)語句:先執(zhí)行循環(huán)體中的內容,再進行條件判斷,如果條件不滿足,則不執(zhí)行循環(huán)體中內容,即循環(huán)體中內容至少執(zhí)行一次。

? ? ```java

? ? ? ? do{

? ? ? ? ? ? 語句序列? ? ? ?

? ? ? ? }while(條件表達式);

? ? ```

? ? ```java

? ? ? ? public calss Cycle{

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? ? int number=100;

? ? ? ? ? ? ? ? while(number==60){

? ? ? ? ? ? ? ? ? ? System.out.println("使用while循環(huán)");

? ? ? ? ? ? ? ? ? ? number--;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? do{

? ? ? ? ? ? ? ? ? ? System.out.println("使用do...while循環(huán)");

? ? ? ? ? ? ? ? ? ? number--;

? ? ? ? ? ? ? ? }while(number==60);

? ? ? ? ? ? }

? ? ? ? }

? ? ```


? ? ## 結束本次循環(huán)的continue語句

? ? 1. continue語句用于終止當前循環(huán),返回到循環(huán)開始處,接著開始新的循環(huán);

? ? 2. continue語句只能出現(xiàn)在循環(huán)語句:while、for、do...while語句中;


? ? ```java

? ? ? ? public calss Continue{

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? ? System.out.println("可以被10整除的數有:");

? ? ? ? ? ? ? ? for(int i=1;i<=100;i++){

? ? ? ? ? ? ? ? ? ? if(i%10!=0){

? ? ? ? ? ? ? ? ? ? continue;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? System.out.println(i+"、");

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }? ? ? ?

? ? ? ? }

? ? ```


? ? ## 強行退出循環(huán)的break語句

? ? 1. 中途中斷循環(huán)執(zhí)行,可使用break強迫跳出循環(huán);

? ? 2. continue語句可出現(xiàn)在循環(huán)語句:while、for、do...while語句中;


? ? ```java

? ? ? ? public calss BreakPractice{

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? ? int sum=0;

? ? ? ? ? ? ? ? int control=0;

? ? ? ? ? ? ? ? while(true){

? ? ? ? ? ? ? ? ? ? control++;

? ? ? ? ? ? ? ? ? ? if(control>100){

? ? ? ? ? ? ? ? ? ? ? ? System.out.println("1~100所有整數的和是:"+sum);

? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? sum+=control;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ```


? ? ## 循環(huán)中使用標簽

? ? 1. 指定程序跳轉至哪一行。

? ? 2. 使用break只能退出當前循環(huán),如果想通過break語句退出嵌套的循環(huán)時,需要使用帶標簽的break語句實現(xiàn)。

? ? 3. break和continue都可以配合標簽使用。


? ? ```java

? ? ? ? 標簽名稱:? //標簽名稱的命名規(guī)則與變量的命名規(guī)則一致,可添加到程序的任意位置

? ? ```


? ? ```java

? ? ? ? public calss Multiplication{

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? ? loop:

? ? ? ? ? ? ? ? for(int i=1;i<=9;i++){

? ? ? ? ? ? ? ? ? ? for(int j=1;j<=i;j++){

? ? ? ? ? ? ? ? ? ? ? ? System.out.println(i+"*"+j+"="+i*j+" ");

? ? ? ? ? ? ? ? ? ? ? ? if(j==5){

? ? ? ? ? ? ? ? ? ? ? ? ? ? break loop;

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? System.out.println();

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ```


? ? 注意:


? ? 1. for循環(huán)主要針對有限循環(huán)而言,也就是說,循環(huán)有上限的時候,一般使用for循環(huán);

? ? 2. while循環(huán)則針對無限循環(huán)的代碼而言,當程序沒有明確的上限,則一般使用while循環(huán)。

# 數組

## 一維數組

1. 創(chuàng)建數組的語法格式


? ? ```java

? ? ? ? 數組類型 數組名[];

? ? ? ? 或

? ? ? ? 數組類型[] 數組名;

? ? ```


? ? ```java

? ? ? ? // 如:

? ? ? ? int arr[];

? ? ? ? char arr[];

? ? ```


? ? ```java

? ? ? ? // 為數組分配內存空間的格式如下:

? ? ? ? 數組名字 = new 數組類型[數組長度];


? ? ? ? // 如:

? ? ? ? int[] arr = new int[5];

? ? ```

2. 數組初始化


? ? ```java

? ? ? ? // 第一種初始化方式

? ? ? ? int arr[] = new int[] {1,3,5,7};


? ? ? ? // 第二種初始化方式

? ? ? ? int arr[] = {1,3,5,7};

? ? ```


? ? ```java

? ? ? ? int arr[] = new int[4];

? ? ? ? int arr[0]=1;

? ? ? ? int arr[1]=3;

? ? ? ? int arr[2]=5;

? ? ? ? int arr[3]=7;

? ? ```

3. 遍歷一維數組


? ? ```java

? ? ? ? public calss SearchArray{

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? int day[]=new int[]{31,28,31,30,31};

? ? ? ? ? ? ? for(int i=0;i<5;i++){

? ? ? ? ? ? ? ? ? ? System.out.println((i+1)+"月有"+day[i]+"天");

? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ```

? ? ```java

? ? // length表示數組長度

? ? ? ? public calss SearchArray{

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? int day[]=new int[]{31,28,31,30,31};

? ? ? ? ? ? ? for(int i=0;i<day.length;i++){

? ? ? ? ? ? ? ? ? ? System.out.println((i+1)+"月有"+day[i]+"天");

? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ```


##二維數組? ?

1. 聲明數組對象的語法格式


? ? ```java

? ? ? ? 數組類型 數組名[][];

? ? ? ? 或

? ? ? ? 數組類型[][] 數組名;

? ? ```


? ? ```java

? ? ? ? // 如:

? ? ? ? int arr[][];

? ? ? ? char arr[][];

? ? ```


? ? ```java

? ? ? ? // 為數組分配內存空間的格式如下:

? ? ? ? 數組名字 = new 數組類型[數組長度][數組長度];


? ? ? ? // 如:

? ? ? ? int arr[][] = new int[5][5];

? ? ```


2. 二維數組初始化


? ? ```java

? ? ? ? 數組類型 變量名稱 [][]={

? ? ? ? ? ? {value1,value2,value3...valuen},

? ? ? ? ? ? {value1,value2,value3...valuen}

? ? ? ? ? ? ...

? ? ? ? }

? ? ? ? // 如:

? ? ? ? int arr[][]={{23,12,2},{12,45}} ;


? ? ? ? // arr[1]的第一個元素賦值為12:

? ? ? ? arr[1][0]=12;

? ? ```

3. 使用嵌套的for循環(huán)語句遍歷二維數組


? ? ```java

? ? ? ? public calss CountMark{

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? int grades[][]={

? ? ? ? ? ? ? {77,68,86,73},

? ? ? ? ? ? ? {96,87,89,81},

? ? ? ? ? ? ? {70,90,86,81}

? ? ? ? ? ? ? } ;

? ? ? ? ? ? ? int lowGrade =? grades[0][0];

? ? ? ? ? ? ? for(int i=0;i<grades.length;i++){

? ? ? ? ? ? ? ? ? ? for(int column=0;column<grades[i].length;column++){

? ? ? ? ? ? ? ? ? ? ? ? if(grades[i][column]<lowGrade)

? ? ? ? ? ? ? ? ? ? ? ? ? ? lowGrade=grades[i][column];

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? }?

? ? ? ? ? ? ? int highGrade =? grades[0][0];

? ? ? ? ? ? ? for(int j=0;j<grades.length;j++){

? ? ? ? ? ? ? ? ? ? for(int column=0;column<grades[j].length;column++){

? ? ? ? ? ? ? ? ? ? ? ? if(grades[j][column]>highGrade)

? ? ? ? ? ? ? ? ? ? ? ? ? ? highGrade=grades[j][column];

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? }?

? ? ? ? ? ? ? System.out.println("最低分數為:"+lowGrade);

? ? ? ? ? ? ? System.out.println("最高分數為:"+highGrade);?

? ? ? ? ? ? }? ?

? ? ? ? }

? ? ```


4. 使用嵌套的for循環(huán)語句遍歷二維數組


? ? ```java

? ? ? ? public calss CountMark{

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? int grades[][]={

? ? ? ? ? ? ? {77,68,86,73},

? ? ? ? ? ? ? {96,87,89,81},

? ? ? ? ? ? ? {70,90,86,81}

? ? ? ? ? ? ? } ;

? ? ? ? ? ? ? int lowGrade =? grades[0][0];

? ? ? ? ? ? ? for(int i=0;i<grades.length;i++){

? ? ? ? ? ? ? ? ? ? for(int column=0;column<grades[i].length;column++){

? ? ? ? ? ? ? ? ? ? ? ? if(grades[i][column]<lowGrade)

? ? ? ? ? ? ? ? ? ? ? ? ? ? lowGrade=grades[i][column];

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? }?

? ? ? ? ? ? ? int highGrade =? grades[0][0];

? ? ? ? ? ? ? for(int j=0;j<grades.length;j++){

? ? ? ? ? ? ? ? ? ? for(int column=0;column<grades[j].length;column++){

? ? ? ? ? ? ? ? ? ? ? ? if(grades[j][column]>highGrade)

? ? ? ? ? ? ? ? ? ? ? ? ? ? highGrade=grades[j][column];

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? }?

? ? ? ? ? ? ? System.out.println("最低分數為:"+lowGrade);

? ? ? ? ? ? ? System.out.println("最高分數為:"+highGrade);?

? ? ? ? ? ? }? ?

? ? ? ? }

? ? ```


5. 使用foreach遍歷二維數組

? ? ```java

? ? ? ? for(元素變量:遍歷對象){

? ? ? ? ? ? 循環(huán)體

? ? ? ? }

? ? ```


? ? ```java

? ? ? ? // 一維數組遍歷

? ? ? ? int[] array={12,34,43,22,13,58};

? ? ? ? for(int i :array){

? ? ? ? ? ? System.out.println(i);

? ? ? ? }

? ? ```


? ? ```java

? ? ? ? // 使用嵌套foreach循環(huán)語句遍歷二維數組

? ? ? ? public calss ArrayForEach{

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? ? ? ? int array[][]={{1,2,3},{7,8,9},{13,14,15}};

? ? ? ? ? ? ? ? ? ? for(int[] is:array){

? ? ? ? ? ? ? ? ? ? ? ? for(int is2:is){

? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println(is2+"\t");

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? System.out.println();

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }? ?

? ? ? ? }

? ? ```


## 使用sort() 方法實現(xiàn)數組排序?

1. 語法:

? ```java

? ? Arrays.sort(array)

? ```


2. example:

? ```java

? ? public static void main(String[] args){

? ? ? ? int arr[]=new int[]{61,30,52,40,12,21};

? ? ? ? System.out.println("聲明的數組原有內容如下:");

? ? ? ? for (int i = 0; i < arr.length; i++){

? ? ? ? ? ? System.out.println(arr[i]+"\t");

? ? ? ? }

? ? ? ? System.out.println("\n排序后的數組內容如下:");

? ? ? ? Arrays.sort(arr);

? ? ? ? for (int i = 0; i < arr.length; i++){

? ? ? ? ? ? System.out.println(arr[i]+"\t");

? ? ? ? }

? ? }

? ```


##復制數組

1. Arrarys類的copyOf()方法:

? ```java

? ? // 語法

? ? copyOf(arr,int newlength)

? ? 注意:

? ? 如果新數組的長度,大于數組arr的長度,則用0填充。

? ? 根據復制數組的類型來決定填充的值,整型數組用0填充,char型數組則會使用null填充。

? ? 如果復制后的數組長度小于數組arr的長度,會從數組arr的第一個元素開始,截取至滿足新數組長度為止。

? ```

? ```java

? ? public static void main(String[] args){

? ? ? ? int arr[]=new int[]{61,30,52};

? ? ? ? int newarr[]=Arrays.copyOf(arr,6);

? ? ? ? System.out.println("復制后新數組的元素為:");

? ? ? ? for (int i = 0; i < newarr.length; i++){

? ? ? ? ? ? System.out.println(newarr[i]+"");

? ? ? ? }

? ? }

? ```


2. Arrarys類的copyOfRange()方法:

? ```java

? ? // 語法

? ? copyOfRange(arr,int formIndex,int toIndex)

? ? 注意:

? ? formIndex:開始復制數組的索引位置,formIndex必須在0與整個數組的長度之間。新數組包括索引是formIndex的元素。

? ? toIndex:復制范圍的最后索引位置,可以大于數組arr的長度,新數組不包括索引是toIndex的元素。

? ```

? ```java

? ? public static void main(String[] args){

? ? ? ? int arr[]=new int[]{61,30,52,23,47};

? ? ? ? System.out.println("原數組的元素為:");

? ? ? ? for (int i = 0; i < arr.length; i++){

? ? ? ? ? ? System.out.println(arr[i]+"");

? ? ? ? }

? ? ? ? int newarr[]=Arrays.copyOfRange(arr,0,4);

? ? ? ? System.out.println("復制后的元素為:");

? ? ? ? for (int i = 0; i < newarr.length; i++){

? ? ? ? ? ? System.out.println(newarr[i]+"");

? ? ? ? }

? ? }

? ```


# 類與對象

## 類的定義

1. 聲明類的具體語法格式:

? ? ``` java

? ? class className{

? ? ? ? 成員變量

? ? ? ? ...

? ? ? ? 成員方法

? ? ? ? ...

? ? }

? ? ```

? ? ``` java

? ? public class Person{

? ? ? ? int age;

? ? ? ? public void say(){

? ? ? ? System.out.println("在類體中定義的方法");

? ? ? ? }

? ? }

? ? ```

## Java中的類包

1. 如何定義包:

? ? ```java

? ? package 包名;

? ? ```


? ? 將類Person定義在包com.cdd.util中:


? ? ```java

? ? package com.cdd.util;

? ? public class Person{

? ? ? ? int age;

? ? ? ? ... // 省略類體中的其他代碼

? ? }

? ? ```


2. 實現(xiàn)在類中導入包:

在每個類名之前添加完整的包名:

? ? ```java

? ? java.util.Date date=new java.util.Date();

? ? ```

import語句引入包中的類:

? ? ```java

? ? import com.wgh.Circ;

? ? ```

? ? ```java

? ? import com.wgh.*;

? ? ```


## Java中的類

1. 成員方法

成員方法定義了Java類的行為,類的成員方法由方法的聲明和方法體兩部分組成。

? ? ```java

? ? [修飾符]<方法返回值的類型><方法名>([參數列表]){

? ? ? ? [方法體]

? ? ? ? }

? ? ```


? ? ```java

? ? public class Person{

? ? ? ? public void print(){? ? ? ? //在類中定義成員方法

? ? ? ? ? ? System.out.println("類的成員方法??!");

? ? ? ? }

? ? }

? ? ```


2. 靜態(tài)方法

在使用成員變量和成員方法時,必須通過對象才能訪問。靜態(tài)方法則不同,直接通過類名就能調用,或者通過類的實例來調用,還可以在類的非靜態(tài)方法中像訪問其他非靜態(tài)方法一樣去訪問靜態(tài)成員方法。

? ? ```java

? ? [修飾符]<方法返回值的類型><方法名>([參數列表]){

? ? ? ? [方法體]

? ? }

? ? ```

? ? ```java

? ? public class Chinese {

? ? ? ? public static void say() {? ? ? //創(chuàng)建靜態(tài)方法

? ? ? ? ? ? System.out.println("JavaClass類中的靜態(tài)方法!");

? ? ? ? }

? ? ? ? public void sing(){

? ? ? ? ? ? System.out.println("JavaClass類中的非靜態(tài)方法!");

? ? ? ? }

? ? }

? ? ```

? ? ```java

? ? public class TestChinese {

? ? ? ? public static void main(String[] args){

? ? ? ? ? ? Chinese.say();? ? ? //調用Chinese類的靜態(tài)方法

? ? ? ? ? ? Chinese javaClass =new Chinese();? //創(chuàng)建Chinese類對象

? ? ? ? ? ? javaClass.sing();? //調用Chinese類的非靜態(tài)方法

? ? ? ? ? ? javaClass.say();? ? //調用Chinese類的靜態(tài)方法

? ? ? ? }

? ? }

? ? ```


3. 靜態(tài)塊

靜態(tài)塊是指不包含在任何方法體中的靜態(tài)代碼塊,應用static關鍵字包圍。當類被加載時,靜態(tài)塊就會被執(zhí)行且只被執(zhí)行一次。

? ? ```java

? ? public class Test {

? ? ? ? static{

? ? ? ? ? ? int age=32;

? ? ? ? ? ? System.out.println("int類型變量中age的值為:"+age);

? ? ? ? }

? ? public static void main(String[] args){

? ? ? ? ? ? new Test();

? ? ? ? ? ? new Test();

? ? ? ? }

? ? }

? ? ```


4. 權限修飾符

private:成員變量只能在本類中使用,在子類中不可見,并且對其他包的類也是不可見的

public:不僅可以在本類中使用,在子類和其他包的類也可以使用

protected:只有本包內的該類的子類或其他類可以訪問此類中的成員變量和成員方法

5. 方法重載

在一個類中,出現(xiàn)多個方法名相同,但參數個數或者參數類型不同的方法,Java在執(zhí)行具有重載關系的方法時,將根據調用參數的個數和類型區(qū)分具體執(zhí)行的是哪個方法。

? ? ```java

? ? public class Calculate {

? ? ? ? final float PI = 3.14159f;

? ? ? ? public float getArea(float r) {

? ? ? ? ? ? float area = PI * r * r;

? ? ? ? ? ? return area;

? ? ? ? }

? ? ? ? public float getArea(float l, float w) {

? ? ? ? ? ? float area = l * w;

? ? ? ? ? ? return area;

? ? ? ? }

? ? ? ? public void draw(int num) {

? ? ? ? ? ? System.out.println("畫" + num + "個任意形狀的圖形");

? ? ? ? }

? ? ? ? public void draw(String shape) {

? ? ? ? ? ? System.out.println("畫一個" + shape);

? ? ? ? }

? ? ? ? public static void main(String[] args) {

? ? ? ? ? ? Calculate calculate = new Calculate();

? ? ? ? ? ? float l = 20;

? ? ? ? ? ? float w = 30;

? ? ? ? ? ? float areaRectangle=calculate.getArea(l, w);

? ? ? ? ? ? System.out.println("長為"+l+",寬為"+w+",的矩形面積是:"+areaRectangle);


? ? ? ? ? ? float r=7;

? ? ? ? ? ? float areacirle=calculate.getArea(r);

? ? ? ? ? ? System.out.println("半徑為"+r+",的圓形面積是:"+areacirle);

? ? ? ? ? ? int num=7;

? ? ? ? ? ? calculate.draw(num);;

? ? ? ? ? ? calculate.draw("三角形");

? ? ? ? }

? ? }

? ? ```


6. 構造方法

構造方法是一種特殊的方法,它的名字必須與它所在的類的名字完全相同,并且沒有返回值,也不需要使用void進行標識,在方法中不能用return語句返回一個值。構造方法用于對對象中的所有成員變量進行初始化,在創(chuàng)建對象時立即被調用。一個類中可以有多個構造方法。

? ? ```java

? ? package com.practice;

? ? public class Fruit {

? ? ? ? public String color;

? ? ? ? public Fruit(){? ? ? //定義構造方法

? ? ? ? ? ? color="綠色";

? ? ? ? }

? ? ? ? public void harvest(){

? ? ? ? ? ? String color="紅色";

? ? ? ? ? ? System.out.println("水果是:"+color+"的!");

? ? ? ? ? ? System.out.println("水果已經收獲~");

? ? ? ? ? ? System.out.println("水果原來是:"+this.color);

? ? ? ? }

? ? ? ? public static void main(String[] args) {

? ? ? ? ? ? Fruit fruit=new Fruit();

? ? ? ? ? ? fruit.harvest();

? ? ? ? }

? ? }

? ? ```


7. 對象

? ? ```java

? ? 類名 對象名=new 類構造方法();

? ? ```


? ? 構造方法:是類創(chuàng)建對象時必須執(zhí)行的方法,用于構造一個新的對象并初始化對象屬性;


8. 匿名對象


? ? ```java

? ? Calculate calculate = new Calculate();

? ? calculate.draw();


? ? new calculate.draw();

? ? ```


# 字符的集合-字符串

## 創(chuàng)建字符串

1. 產生String對象

? ? ```java

? ? String str=new String("java編程詞典");? //使用String類的構造方法創(chuàng)建字符串對象

? ? String str="java編程詞典";? //指定運算

? ? ```? ?

2. 獲取字符串的長度

? ? ```java

? ? str.length();

? ? ```


? ? ```java

? ? package com.practice;

? ? public class GetLength {

? ? ? ? public static void main(String[] args) {

? ? ? ? ? ? String name="一棵椰子樹";

? ? ? ? ? ? String address="一座孤島上";

? ? ? ? ? ? String message="在"+address+"有"+name;

? ? ? ? ? ? System.out.println("字符串"+name+"\t\t長度為:"+name.length());? ? //字符串一棵椰子樹 長度為:5

? ? ? ? ? ? System.out.println("字符串"+address+"\t\t長度為:"+address.length());? //字符串一座孤島上 長度為:5

? ? ? ? ? ? System.out.println("字符串"+message+"\t\t長度為:"+message.length());? //字符串在一座孤島上有一棵椰子樹 長度為:12

? ? ? ? }

? ? }

? ? ```? ?

3. 對字符串進行截取

? ? ```java

? ? str.substring(int beginIndex)? //指定從某一索引處開始截取字符串

? ? ```

? ? ```java

? ? String str="Hello World";

? ? String substr=str.substring(3);? ? //lo World

? ? ```

? ? ```java

? ? substring(int beginIndex,endIndex)? //返回從字符串某一索引位置開始截取,至某一索引位置結束的子字符串

? ? ```

? ? ```java

? ? String str="Hello World";

? ? String substr=str.substring(0,7);? ? //Hello W 不包含endIndex這個索引位置的字符

? ? ```

4. 分割字符串

? ? ```java

? ? str.split(String sign)? //根據給定的分隔符對字符串進行拆分

? ? sign:分割字符串的分隔符,也可以使用正則表達式

? ? ```

? ? ```java

? ? str.split(String sign,int limit) //根據給定的分隔符對字符串進行拆分,并限定拆分的次數

? ? ```

? ? ```java

? ? package com.practice;

? ? public class SubString {

? ? ? ? public static void main(String[] args) {

? ? ? ? ? ? String str = "公司名稱:明日科技!公司所在城市:長春市。公司電話:********";

? ? ? ? ? ? String[] info = null;

? ? ? ? ? ? info = str.split("!|。");

? ? ? ? ? ? for (int i = 0; i < info.length; i++) {

? ? ? ? ? ? ? ? System.out.println(info[i]);

? ? ? ? ? ? }

? ? ? ? }

? ? }

? ? ```? ?

5. 去除字符串尾部空格

? ? ```java

? ? str.trim()?

? ? ```

6. 查找字符串

? ? ```java

? ? str.indexOf(ch) //用于獲取字符串中指定字符第一次出現(xiàn)處的索引,若字符沒有出現(xiàn)則返回-1

? ? ```

? ? ```java

? ? str.lastindexOf(ch) //用于獲取字符串中指定字符最后一次出現(xiàn)處的索引,若字符沒有出現(xiàn)則返回-1

? ? ```

? ? ```java

? ? str.indexOf(substr) //用于獲取字符串中指定字符串首次出現(xiàn)的索引位置,如果子字符串作為該字符串的子字符串出現(xiàn),則返回該子字符串的第一個字符的索引,如果沒有作為一個子字符串出現(xiàn)則返回-1

? ? ```

? ? ```java

? ? str.lastindexOf(substr) //用于獲取字符串中指定字符串最后一次出現(xiàn)的索引位置,如果子字符串作為該字符串的子字符串出現(xiàn)了一次或更多次,則返回最后一次出現(xiàn)該子字符串的第一個字符的索引,如果沒有作為一個子字符串出現(xiàn)則返回-1

? ? ```

? ? ```java

? ? indexOf(ch,startIndex) //根據指定的搜索起點,搜索指定字符首次出現(xiàn)的位置

? ? ch:一個字符,unicode代碼點

? ? ```

? ? ```java

? ? int lastindexOf(ch,startIndex) //根據指定的搜索起點,搜索指定字符最后一次出現(xiàn)的位置

? ? ch:一個字符,unicode代碼點

? ? ```


7. 比較字符串是否相等

? ? ```java

? ? boolean equals(String str)? ? ? //嚴格區(qū)分大小寫

? ? boolean equalsIgnoreCase(otherString)? ? ? //不區(qū)分大小寫

? ? ```


# 繼承與多態(tài)

## 父類與子類

1. 定義子類

? ? ```java

? ? [修飾符]class 子類名 extends 父類名

? ? 修飾符:可選參數,用于指定類的訪問權限,可選值為:public,abstract,final

? ? 子類名:必須參數,一般要求首字母大寫

? ? ```

? ? ```java

? ? package com.practice;

? ? public class Car {

? ? ? ? public String color="黑色";

? ? ? ? public int speed=1;

? ? ? ? public int level;

? ? ? ? public void gear(int num){

? ? ? ? ? ? level=num;

? ? ? ? ? ? speed=10*level*level;

? ? ? ? }

? ? ? ? public void driver(){

? ? ? ? ? ? System.out.println("我是一輛"+color+"的轎車。");

? ? ? ? ? ? System.out.println("現(xiàn)在以時速"+speed+"公里每小時的速度形式中。");

? ? ? ? ? ? System.out.println("車檔位是"+level+"檔。");

? ? ? ? }

? ? }

? ? ```

? ? ```java

? ? package com.practice;

? ? public class SonCar extends Car {

? ? ? ? public static void main(String[] args){

? ? ? ? ? ? SonCar sonCar=new SonCar();

? ? ? ? ? ? sonCar.gear(5);

? ? ? ? ? ? sonCar.driver();

? ? ? ? }

? ? }

? ? ```

? ? ```

? ? --------------

? ? 我是一輛黑色的轎車。

? ? 現(xiàn)在以時速250公里每小時的速度形式中。

? ? 車檔位是5檔。

? ? --------------

? ? ```

2. 子類覆蓋父類

? ? ```

? ? 1. 方法的覆蓋也叫做方法的重寫,被覆蓋的方法必須和覆蓋方法具有相同的方法名稱、參數以及返回值類型;

? ? 2. 子類不能覆蓋父類中聲明為final或者static的方法;

? ? 3. 子類必須覆蓋父類中聲明為abstract的方法,或者子類也將該方法聲明為abstract;

? ? 4. 子類覆蓋父類中的同名方法時,子類中方法的聲明也必須和覆蓋中被覆蓋的方法的聲明相同;

? ? 5. 子類的訪問權限必須要比父類的訪問權限大;

? ? ```

? ? ```java

? ? package com.practice;

? ? public class Person {

? ? ? ? public String name;

? ? ? ? public int age;

? ? ? ? public void getInfo(){

? ? ? ? ? ? System.out.println("姓名為:"+name);

? ? ? ? ? ? System.out.println("年齡為:"+age);

? ? ? ? }

? ? }

? ? ```

? ? ```java

? ? package com.practice;

? ? public class Worker extends Person{

? ? ? ? String company;

? ? ? ? public void getInfo(){

? ? ? ? ? ? System.out.println("姓名為:"+name);

? ? ? ? ? ? System.out.println("年齡為:"+age);

? ? ? ? ? ? System.out.println("公司為:"+company);

? ? ? ? }


? ? ? ? public static void main(String[] args){

? ? ? ? ? ? Worker worker=new Worker();

? ? ? ? ? ? worker.name="張三";

? ? ? ? ? ? worker.age=18;

? ? ? ? ? ? worker.company="科技公司";

? ? ? ? ? ? worker.getInfo();

? ? ? ? }

? ? }

? ? ```

3. super關鍵字

如果在子類中想調用父類中被覆蓋的方法,可以使用super關鍵字。

? ? * 使用super關鍵字操作父類中被覆蓋的方法


? ? 如果要在子類中使用被父類隱藏的成員變量或方法,就可以使用super關鍵字。

? ? 例如訪問父類的成員變量x:

? ? ```java

? ? super.x

? ? ```

例如訪問父類中的方法play(),代碼為:

? ? ```java

? ? super.play()

? ? ```

? ? ```java

? ? package com.practice;

? ? public class Worker extends Person{

? ? ? ? String company;

? ? ? ? public void getInfo(){

? ? ? ? ? ? super.getInfo();

? ? ? ? ? ? System.out.println("公司為:"+company);

? ? ? ? }


? ? ? ? public static void main(String[] args){

? ? ? ? ? ? Worker worker=new Worker();

? ? ? ? ? ? worker.name="張三";

? ? ? ? ? ? worker.age=18;

? ? ? ? ? ? worker.company="科技公司";

? ? ? ? ? ? worker.getInfo();

? ? ? ? }

? ? }

? ? ```

? ? * 使用super關鍵字操作父類中被覆蓋的方法調用父類的構造方法


? ? 子類并不繼承父類的構造方法。如果子類要使用父類的構造方法,需要使用super關鍵字,并且一定要在子類的構造方法中使用。



? ? ```java

? ? super([構造參數列表])

? ? ```?

4. 方法重載

在一個類中,出現(xiàn)多個相同名稱的方法,但是參數類型與參數個數不相同。

# 接口與抽象類

## 接口

1. 接口定義

? ? ```java

? ? [修飾符]interface 接口名 [extends 父接口名列表]{

? ? [public][static][final] 常量;

? ? [public][abstract]方法;

? ? }

? ? ```

? ? ```java

? ? public interface Calculate{

? ? ? ? final float PI=3.14159f;

? ? ? ? float getArea(float r);

? ? ? ? float gerCircumference(float r);

? ? }

? ? ```?

2. 實現(xiàn)接口

在實現(xiàn)接口時,一次則可以實現(xiàn)多個接口,每個接口間使用逗號分隔。


? ? ```java

? ? [修飾符] class <類名> [extends 父類名] [implemennts 接口列表]{

? ? }

? ? ```

? ? ```java

? ? package com.practice;

? ? public interface Calculate1 {

? ? ? ? final float PI=3.14159f;

? ? ? ? float getArea(float r);

? ? ? ? float getCircumference(float r);

? ? }

? ? ```

? ? ```java

? ? package com.practice;

? ? public class Round implements Calculate1 {

? ? ? ? @Override

? ? ? ? public float getArea(float r) {

? ? ? ? ? ? float area = PI * r * r;

? ? ? ? ? ? return area;

? ? ? ? }

? ? ? ? @Override

? ? ? ? public float getCircumference(float r){

? ? ? ? ? ? float circumference=2*PI*r;

? ? ? ? ? ? return circumference;

? ? ? ? }


? ? ? ? public static void main(String[] args){

? ? ? ? ? ? Round round=new Round();

? ? ? ? ? ? float r=3f;

? ? ? ? ? ? float area=round.getArea(r);

? ? ? ? ? ? float circumference=round.getCircumference(r);


? ? ? ? ? ? System.out.println("半徑為:"+r+"的圓的面積為:"+area);

? ? ? ? ? ? System.out.println("半徑為:"+r+"的圓的周長為:"+circumference);

? ? ? ? }

? ? }

? ? ```?

3. 定義抽象類

抽象類只聲明方法的存在,而不去具體實現(xiàn)它的類。

抽象類不能被實例化,不能使用new關鍵字來創(chuàng)建對象。

使用抽象類的好處在于,當有的方法在父類中不想實現(xiàn)時,可以不用實現(xiàn)。

? ? ```java

? ? abstract class 類名{

? ? ? ? 類體

? ? }

? ? ```

? ? ```java

? ? abstract class Fruit{

? ? ? ? public String color;

? ? ? ? public Fruit(){

? ? ? ? ? ? color="綠色";

? ? ? ? }

? ? }

? ? ```

4. 解析抽象方法

在一個抽象類中,可以定義一個或多個抽象方法;

定義抽象方法需要在方法的聲明處使用關鍵字abstract.

? ? ```java

? ? abstract <方法返回值類型> 方法名(參數列表);

? ? ```

? ? ```java

? ? public abstract void harvest();

? ? ```

? ? ```java

? ? package com.practice;

? ? abstract class Fruit1 {

? ? ? ? public String color;


? ? ? ? public Fruit1() {

? ? ? ? ? ? color = "綠色";

? ? ? ? }

? ? ? ? public abstract void harvest();

? ? }

? ? ```

? ? ```java

? ? package com.practice;

? ? public abstract class Apple extends Fruit1{

? ? ? ? public String color;

? ? ? ? public Apple(){

? ? ? ? ? ? color="綠色";

? ? ? ? }

? ? ? ? public abstract void harvest();

? ? }

? ? ```

? ? ```java

? ? package com.practice;

? ? public class Pear extends Fruit1{

? ? ? ? public void harvest(){

? ? ? ? ? ? System.out.println("大白梨成熟啦!");

? ? ? ? }

? ? }

? ? ```

? ? ```java

? ? package com.practice;

? ? public class Farm {

? ? ? ? public static void main(String[] args) {

? ? ? ? ? ? Apple apple= new Apple() {

? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? public void harvest() {

? ? ? ? ? ? ? ? ? ? System.out.println("大蘋果成熟啦!");

? ? ? ? ? ? ? ? }

? ? ? ? ? ? };

? ? ? ? ? ? apple.harvest();

? ? ? ? ? ? Pear pear=new Pear();

? ? ? ? ? ? pear.harvest();

? ? ? ? }

? ? }

? ? ```

5. 創(chuàng)建內部類

一個類定義在另一個類的內部,那么就稱之為內部類,也叫做嵌套類。

在類中直接定義的內部類的使用范圍,僅限于這個類的內部。

例如,在類A中定義了類B,那么類B為類A所知,但卻不被A的外部所知。

在內部類中可以引用它所在的外部類的所有變量和方法。

內部類可以使用private或protected來修飾。

? ? ```java

? ? package com.practice;

? ? public class Outer {

? ? ? ? private String strOut = "我是外部類中的變量";


? ? ? ? private void test() {

? ? ? ? ? ? Inner inner = new Inner();

? ? ? ? ? ? inner.transfer();

? ? ? ? }


? ? ? ? class Inner {

? ? ? ? ? ? void transfer() {

? ? ? ? ? ? ? ? System.out.printf("在內部類中調用外部類中變量: %s", strOut);

? ? ? ? ? ? }

? ? ? ? }


? ? ? ? public static void main(String[] args) {

? ? ? ? ? ? Outer outer = new Outer();

? ? ? ? ? ? outer.test();

? ? ? ? }

? ? }

? ? ```


# 集合

## collection集合

1. Collection集合

? ? collection集合又稱為容器,他們與數組不同,數組的長度是固定的,集合的長度是可變的,數組用來存放基本類型的數據,集合用來存放類對象的引用。

2. collection接口

? ? collection接口是List接口和Set接口的父接口,通常情況下不被直接使用。

3. collection接口中的常用方法

? ? * add()方法? ? ? 向指定的集合中添加對象。

? ? ? ? ```java

? ? ? ? package com.practice;

? ? ? ? import java.util.ArrayList;

? ? ? ? import java.util.Collection;

? ? ? ? import java.util.Iterator;


? ? ? ? public class Append {

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? ? Collection list=new ArrayList();

? ? ? ? ? ? ? ? list.add("apple");

? ? ? ? ? ? ? ? list.add("pear");

? ? ? ? ? ? ? ? list.add("apple");

? ? ? ? ? ? ? ? Iterator it=list.iterator();

? ? ? ? ? ? ? ? System.out.println("集合中的元素有:");


? ? ? ? ? ? ? ? while (it.hasNext()){

? ? ? ? ? ? ? ? ? ? String str=(String)it.next();

? ? ? ? ? ? ? ? ? ? System.out.println(str);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? ```


? ? * addAll()方法? ? 將指定集合中的所有對象都添加到集合中,如果對該集合進行了泛化,則要求指定集合中的所有對象都符合泛化類型,否則編譯程序時將拋出異常。

? ? ? ? ```java

? ? ? ? package com.practice;

? ? ? ? import java.util.ArrayList;

? ? ? ? import java.util.Collection;

? ? ? ? import java.util.Iterator;


? ? ? ? public class AddGather {

? ? ? ? ? ? public static void main(String[] args){

? ? ? ? ? ? ? ? String apple="Apple";

? ? ? ? ? ? ? ? String pear="Pear";

? ? ? ? ? ? ? ? String orange="Orange";

? ? ? ? ? ? ? ? Collection<String> list =new ArrayList<String>();

? ? ? ? ? ? ? ? list.add("apple");

? ? ? ? ? ? ? ? list.add("pear");

? ? ? ? ? ? ? ? list.add("orange");

? ? ? ? ? ? ? ? Collection<String> list2 =new ArrayList<String>();

? ? ? ? ? ? ? ? list2.addAll(list);

? ? ? ? ? ? ? ? Iterator<String> it=list2.iterator();


? ? ? ? ? ? ? ? System.out.println("集合中的對象為:");

? ? ? ? ? ? ? ? while(it.hasNext()){

? ? ? ? ? ? ? ? ? ? String str=it.next();


? ? ? ? ? ? ? ? ? ? System.out.println(str);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? ```? ?

4. iterator() 方法? ? 在指定的集合對象中創(chuàng)建迭代器,返回在此Collection的元素上進行迭代的迭代器。當獲取迭代器后,通過迭代器Iterator對象的hasNext()方法,判斷集合中是有仍有元素可以迭代,如果有則返回true,否則返回false。hasNext()方法通常被用在循環(huán)語句中,作為判斷循環(huán)的條件。

5. removeAll()方法? ? 用來從該集合中移除同時包含在指定參數集合中的對象。如果集合中包含符合條件的對象,則返回true,否則返回false。

? ? ```java

? ? package com.practice;

? ? import java.util.ArrayList;

? ? import java.util.Collection;

? ? import java.util.Iterator;


? ? public class RemoveCollection {

? ? ? ? public static void main(String[] args){

? ? ? ? ? ? Collection <String>? list=new ArrayList<String>();

? ? ? ? ? ? list.add("Java編程詞典");

? ? ? ? ? ? list.add("C++編程詞典");

? ? ? ? ? ? list.add("VB編程詞典");

? ? ? ? ? ? list.add("C#編程詞典");

? ? ? ? ? ? list.add(".net編程詞典");


? ? ? ? ? ? Iterator<String> it=list.iterator();

? ? ? ? ? ? System.out.println("集合中原有的對象為:");


? ? ? ? ? ? while(it.hasNext()){

? ? ? ? ? ? ? ? String obj=(String)it.next();

? ? ? ? ? ? ? ? System.out.println(obj);

? ? ? ? ? ? }


? ? ? ? ? ? Collection <String> list2=new ArrayList<String>();

? ? ? ? ? ? list2.add(".net編程詞典");

? ? ? ? ? ? list2.add("C#編程詞典");

? ? ? ? ? ? list.removeAll(list2);

? ? ? ? ? ? Iterator<String> it2=list.iterator();

? ? ? ? ? ? System.out.println("移除指定對象后集合中的對象為:");


? ? ? ? ? ? while(it2.hasNext()){

? ? ? ? ? ? ? ? String obj=(String)it2.next();

? ? ? ? ? ? ? ? System.out.println(obj);

? ? ? ? ? ? }


? ? ? ? }

? ? }

? ? ```

? ? ```

? ? --------------------

? ? 集合中原有的對象為:

? ? Java編程詞典

? ? C++編程詞典

? ? VB編程詞典

? ? C#編程詞典

? ? .net編程詞典

? ? 移除指定對象后集合中的對象為:

? ? Java編程詞典

? ? C++編程詞典

? ? VB編程詞典

? ? --------------------

? ? ```

## List集合

List集合包括List接口與List接口的所有實現(xiàn)類。List接口繼承Collection接口,因此具有該接口的所有方法。List集合中的對象允許重復。Set集合中的對象沒有順序。Map集合是按照Key-value形式進行存儲的。

1. List接口

List集合為列表類型,以線性方式存儲對象,可以通過對象的索引操作對象。因此該接口中包含一些與索引相關的方法。

2. ArrayList類

ArrayList類實現(xiàn)了List接口,由ArrayList類實現(xiàn)的List集合采用數組結構保存對象。

3. LinkedList類

LinkedList類實現(xiàn)了List接口,用LinkedList類實現(xiàn)的List集合采用鏈表結構保存對象。

## Set集合

Set集合為集類型,集時最簡單的一種集合,存放于集中的對象不按特定方式排序,只是簡單地把對象加入集合中,類似于向口袋中放東西。不能存放重復對象。

## Map集合

Map沒有繼承Collection接口,其提供的是key到value的映射。Map中不能包含相同的key值,每個key只能映射一個value。

1. Map接口

Map接口提供了將鍵映射到值的對象,集合中不能包含重復的鍵。

2. HashMap類

HashMap類實現(xiàn)了Map接口,由HashMap類實現(xiàn)的Map集合,允許以null作為鍵對象,但是因為健對象不可以重復,所以這樣的鍵對象只能有一個。

3. TreeMap類

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容