1.StringBuilder練習_拼接字符串(課下完成)
package com.itheima.sh.stringbuilder_01;
/*
需求:
定義一個方法,把 int 數組中的數據按照指定的格式拼接成一個字符串返回,調用該方法,
並在控制檯輸出結果。例如,數組爲int[] arr = {1,2,3}; ,執行方法後的輸出結果爲:"[1, 2, 3]"
步驟:
1.定義一個int類型的數組 int[] arr = {1,2,3};
2.在主方法中調用將數組拼接爲字符串的方法,並接收返回的字符串
3.自定義方法將數組中的數據拼接爲字符串 int[] arr = {1,2,3};
4.在定義方法中創建StringBuilder類的對象用來拼接數據
5.向StringBuilder中添加一個數據 "["
6.遍歷數組取出數組中的每個數據 1 ---》
"[1, 2, " 所以:前兩個數據都是添加: "數據, "
最後一個數據:"3]"--->"數據]"
總結:
最後一個數據添加緩衝區:"數據]"
不是最後一個數據添加緩衝區: "數據, "
7.判斷取出的數據是否是最後一個數據:
如果取出的數據的索引等於最大索引(數組長度-1):說明是最後一個數據:最後一個數據添加緩衝區:"數據]"
如果取出的數據的索引不等於最大索引(數組長度-1):說明不是最後一個數據: 不是最後一個數據添加緩衝區: "數據, "
int[] arr = {1,2,3};
[1, 2, 3]
8.將字符串緩衝區轉換爲String
9.將轉換後的String對象返回給調用者
10.在主方法中輸出接收的結果
*/
public class StringBuilderTest01 {
public static void main(String[] args) {
// 1.定義一個int類型的數組
int[] arr = {1, 2, 3};
//2.在主方法中調用將數組拼接爲字符串的方法,並接收返回的字符串
String s = arrayToString(arr);
//10.在主方法中輸出接收的結果
System.out.println("s = " + s);
}
//3.自定義方法將數組中的數據拼接爲字符串 int[] arr = {1,2,3};
private static String arrayToString(int[] arr) {
//4.在定義方法中創建StringBuilder類的對象用來拼接數據
StringBuilder sb = new StringBuilder();
//5.向StringBuilder中添加一個數據 "["
sb.append("[");
// 6.遍歷數組取出數組中的每個數據
for (int i = 0; i < arr.length; i++) {
int num = arr[i];
//7.判斷取出的數據是否是最後一個數據:
if(i == arr.length -1){
// 如果取出的數據的索引等於最大索引(數組長度-1):說明是最後一個數據:最後一個數據添加緩衝區:"數據]"
sb.append(num).append("]");
}else{
//如果取出的數據的索引不等於最大索引(數組長度-1):說明不是最後一個數據: 不是最後一個數據添加緩衝區: "數據, "
sb.append(num).append(", ");
}
}
//8.將字符串緩衝區轉換爲String
// String s = sb.toString();
String s = new String(sb);//不推薦使用
//9.將轉換後的String對象返回給調用者
return s;
}
}
2.使用對象數組存儲自定義類的對象(理解)
需求:使用數組存儲三個自定義類Student的對象
package com.itheima.sh.demo_02;
/*
需求:使用數組存儲三個自定義類Student的對象
步驟:
1.創建Student類
2.定義數組存儲自定義類Student的對象,長度是3
數組定義:
int[] arr=new int[3]; 存儲int類型
String[] arr=new String[3]; 存儲String類型的字符串
Student[] arr=new Student[3]; 存儲Student類型的對象
3.創建三個學生對象
4.將學生對象添加到數組中
5.遍歷數組取出每個學生對象
6.使用學生對象調用方法輸出姓名和年齡
*/
public class Test01 {
public static void main(String[] args) {
// 2.定義數組存儲自定義類Student的對象,長度是3
Student[] arr = new Student[3];
//3.創建三個學生對象
Student s1 = new Student("張三", 19);
Student s2 = new Student("李四", 20);
Student s3 = new Student("王五", 20);
//4.將學生對象添加到數組中
arr[0] = s1;
arr[1] = s2;
arr[2] = s3;
//5.遍歷數組取出每個學生對象
for (int i = 0; i < arr.length; i++) {
Student s = arr[i];
// 6.使用學生對象調用方法輸出姓名和年齡
System.out.println(s.getName() + "---" + s.getAge());
}
}
}
小結:我們以前都是使用數組存儲基本類型數據,其實也使用數組存儲引用類型就是字符串,在java中數組既可以存儲基本類型也可以存儲引用數據類型。
3.ArrayList集合(必須掌握)
1.集合
集合屬於一種容器,專門用來存儲引用數據類型的數據,不能存儲基本數據類型數據。長度可變,可以存儲任意類型的引用數據類型。
我們今天先學習第一種集合:ArrayList集合。
總結:
數組和集合區別:
1.數組長度固定不變的,集合長度是可變的
2.數組可以存儲基本數據類型也可以存儲引用數據類型,集合只能存儲引用數據類型,不能存儲基本數據類型
3.數組存儲的數據類型單一,集合可以存儲不同的引用數據類型
2.ArrayList集合介紹
1.ArrayList集合是集合的一種,底層使用數組存儲數據。他屬於類。可以創建這個類的對象,並且使用對象調用方法。
2.該類位於java.util 包,需要導包。
3.可以存儲null
3.ArrayList構造方法
ArrayList() 構造一個初始容量爲 10 的空列表。
說明:ArrayList 在類的後面多了一個,表示泛型,和類 接口 方法一起使用。
如果加了泛型,表示集合中只能存儲泛型表示的具體數據類型,這裏的E表示Element元素的縮寫。
ArrayList<String> list = new ArrayList<String>(); 說明該集合只能存儲String類型
ArrayList<Student> list = new ArrayList<Student>(); 說明該集合只能存儲Student類型
jdk7後可以簡化寫法:
ArrayList<Student> list = new ArrayList<>(); 說明該集合只能存儲Student類型
4.ArrayList方法
-
添加方法 獲取長度 獲取數據方法
package com.itheima.sh.arraylist_03; import java.util.ArrayList; /* 方法: 1.boolean add(E e) 將指定的元素添加到此列表的尾部。 參數: e:表示要添加到集合中的數據 E類型由創建ArrayList對象時確定 返回值:對於ArrayList集合返回都是true 2.public int size()返回集合中的元素的個數 3.public E get(int index)返回指定索引處的元素 參數:index:表示索引,從0開始 返回值:表示取出的數據 */ public class ArrayListDemo01 { public static void main(String[] args) { //ArrayList() 構造一個初始容量爲 10 的空列表。 //這裏泛型的具體數據類型是String,那麼這個集合只能存儲String類的對象 ArrayList<String> list = new ArrayList<>(); //向集合中添加數據 list.add(null); list.add("蓉蓉"); list.add("蓉蓉"); list.add("騷喆"); list.add("璐璐"); boolean boo = list.add("pgone"); // System.out.println("boo = " + boo); //輸出list //list = [蓉蓉, 騷喆, 璐璐, pgone] toString // System.out.println("list = " + list);//"[蓉蓉, 騷喆, 璐璐, pgone]" //2.public int size()返回集合中的元素的個數 /* int size = list.size(); System.out.println("size = " + size);//4 //3.public E get(int index)返回指定索引處的元素 String s = list.get(0);//蓉蓉 System.out.println("s = " + s); System.out.println(list.get(1));//騷喆 System.out.println(list.get(2));//璐璐 System.out.println(list.get(3));//pgone //IndexOutOfBoundsException 索引越界異常 因爲最大索引是3 4超出了最大索引 System.out.println(list.get(4));*/ //使用for循環遍歷上述集合中的數據 // for(int i=0;i<集合長度;i++){//i表示索引 for (int i = 0; i < list.size(); i++) {//i表示索引 list.size() 表示集合長度 //使用get方法結合索引獲取集合數據 String s = list.get(i); System.out.println("s = " + s); } } }
小結:
1.boolean add(E e) 將指定的元素添加到此列表的尾部。
參數:
e:表示要添加到集合中的數據 E類型由創建ArrayList對象時確定
返回值:對於ArrayList集合返回都是true
2.**public int size()**返回集合中的元素的個數
3.**public E get(int index)**返回指定索引處的元素
參數:index:表示索引,從0開始
返回值:表示取出的數據 4.查看源碼:按住ctrl鍵,然後左鍵點擊方法名即可
5.Arraylist集合可以存儲重複的數據和null
-
其餘方法
方法名 說明 public boolean remove(Object o) 刪除指定的元素,返回刪除是否成功 public E remove(int index) 刪除指定索引處的元素,返回被刪除的元素 public E set(int index,E element) 修改指定索引處的元素,返回被修改的元素 public void add(int index,E element) 在此集合中的指定位置插入指定的元素
package com.itheima.sh.arraylist_03;
import java.util.ArrayList;
/*
1.public boolean remove(Object o)刪除指定的元素,返回刪除是否成功
參數:表示要刪除的元素
返回值:刪除成功是true 失敗是false
2.public E remove(int index)刪除指定索引處的元素,返回被刪除的元素
參數:index 要刪除元素的對應的索引值
返回:被刪除的元素
3.public E set(int index,E element)修改指定索引處的元素,返回被修改的元素
參數:
index:被修改的元素索引
element:新的元素
返回值:舊的元素
4.public void add(int index,E element)在此集合中的指定位置插入指定的元素
參數:
index:向哪個索引位置添加元素
element:要添加單位元素
*/
public class ArrayListDemo02 {
public static void main(String[] args) {
//創建集合對象
ArrayList<String> list = new ArrayList<>();
//添加數據
list.add("柳巖");
list.add("柳巖");
list.add("大鵬");
list.add("楊冪");
list.add("冰冰");
//刪除柳巖: 1.public boolean remove(Object o)刪除指定的元素,返回刪除是否成功4
/*boolean boo = list.remove("柳巖");
System.out.println("boo = " + boo);*/
/*
2.public E remove(int index)刪除指定索引處的元素,返回被刪除的元素
參數:index 要刪除元素的對應的索引值
返回:被刪除的元素
*/
// String s1 = list.remove(1);//柳巖
// String s1 = list.remove(2);//大鵬
// System.out.println("被刪除的元素:" + s1);
/*
3.public E set(int index,E element)修改指定索引處的元素,返回被修改的元素
參數:
index:被修改的元素索引
element:新的元素
返回值:舊的元素
*/
//將冰冰修改爲趙麗穎
// String s2 = list.set(4, "趙麗穎");
// System.out.println("舊的元素:"+s2);
/*
4.public void add(int index,E element)在此集合中的指定位置插入指定的元素
參數:
index:向哪個索引位置添加元素
element:要添加單位元素
*/
list.add(1, "鎖哥");
//遍歷集合 list.fori遍歷集合快捷鍵
for (int i = 0; i < list.size(); i++) {
//獲取數據
String s = list.get(i);
System.out.println("s = " + s);
}
}
}
小結:
1.public boolean remove(Object o)刪除指定的元素,返回刪除是否成功
參數:表示要刪除的元素
返回值:刪除成功是true 失敗是false
2.public E remove(int index)刪除指定索引處的元素,返回被刪除的元素
參數:index 要刪除元素的對應的索引值
返回:被刪除的元素
3.public E set(int index,E element)修改指定索引處的元素,返回被修改的元素
參數:
index:被修改的元素索引
element:新的元素
返回值:舊的元素
4.public void add(int index,E element)在此集合中的指定位置插入指定的元素
參數:
index:向哪個索引位置添加元素
element:要添加單位元素
-
擴展方法:
package com.itheima.sh.arraylist_03; import java.util.ArrayList; /* 1.void clear() 清空集合 2.boolean contains(Object o) 如果此列表中包含指定的元素,則返回 true。 3.boolean isEmpty() 如果此列表中沒有元素,則返回 true 4. Object[] toArray() 把集合中的數據放到Object類型數組 */ public class ArrayListDemo03 { public static void main(String[] args) { //創建集合對象 ArrayList<String> list = new ArrayList<>(); //添加數據 list.add("柳巖"); list.add("柳巖"); list.add("大鵬"); list.add("楊冪"); list.add("冰冰"); //遍歷集合 list.fori遍歷集合快捷鍵 /* for (int i = 0; i < list.size(); i++) { //獲取數據 String s = list.get(i); System.out.println("s = " + s); }*/ //清空集合 // list.clear(); // //調用toString() // System.out.println(list); //2.boolean contains(Object o) 如果此列表中包含指定的元素,則返回 true。 // System.out.println(list.contains("大鵬1")); //3.boolean isEmpty() 如果此列表中沒有元素,則返回 true // System.out.println(list.isEmpty());//集合被清空了,那麼集合沒有數據,所以這裏是true //4. Object[] toArray() 把集合中的數據放到Object類型數組 Object[] arr = list.toArray(); //遍歷數組 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }
小結:
1.void clear() 清空集合
2.boolean contains(Object o) 如果此列表中包含指定的元素,則返回 true。
3.boolean isEmpty() 如果此列表中沒有元素,則返回 true4. Object[] toArray() 把集合中的數據放到Object類型數組
ArrayList集合中的方法總結:
方法名 | 說明 |
---|---|
public boolean remove(Object o) | 刪除指定的元素,返回刪除是否成功 |
public E remove(int index) | 刪除指定索引處的元素,返回被刪除的元素 |
public E set(int index,E element) | 修改指定索引處的元素,返回被修改的元素 |
public E get(int index) | 返回指定索引處的元素 |
public int size() | 返回集合中的元素的個數 |
public boolean add(E e) | 將指定的元素追加到此集合的末尾 |
public void add(int index,E element) | 在此集合中的指定位置插入指定的元素 |
void clear() | 清空集合 |
boolean contains(Object o) | 如果此列表中包含指定的元素,則返回 true。 |
boolean isEmpty() | 如果此列表中沒有元素,則返回 true |
Object[] toArray() | 把集合中的數據放到Object類型數組 |
5.ArrayList集合存儲自定義類的學生對象(課下必須完成)
package com.itheima.sh.demo_02;
// 1.創建Student類
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
/* @Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}*/
}
package com.itheima.sh.arraylist_04;
import com.itheima.sh.demo_02.Student;
import java.util.ArrayList;
/*
ArrayList集合存儲自定義類的學生對象
步驟:
1.創建學生類Student
2.創建學生對象
3.創建集合類ArrayList對象 泛型 ArrayList<Student> list = new ArrayList<Student>();
4.將上述的學生對象添加到集合中
5.遍歷集合取出每個學生對象
6.使用學生對象調用方法獲取姓名和年齡並輸出
*/
public class Test01 {
public static void main(String[] args) {
// 2.創建學生對象
Student s1 = new Student("王澤萌", 25);
Student s2 = new Student("寧宇", 20);
Student s3 = new Student("李博", 25);
Student s4 = new Student("李博", 25);
// 3.創建集合類ArrayList對象 泛型
ArrayList<Student> list = new ArrayList<>();
//4.將上述的學生對象添加到集合中
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
//5.遍歷集合取出每個學生對象 alt+/
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
//6.使用學生對象調用方法獲取姓名和年齡並輸出
System.out.println(s.getName()+"---"+s.getAge());
}
}
}
小結:
1.使用集合存儲自定義Student類型創建集合對象時指定泛型是Student
ArrayList<Student> list = new ArrayList<>();
2.集合使用步驟:
1)創建集合對象
2)向集合中添加數據
3)遍歷集合取出集合中的數據,然後繼續後續操作
6.ArrayList集合存儲自定義類的學生對象的升級版本(課下必須完成)
案例需求
創建一個存儲學生對象的集合,存儲3個學生對象,使用程序實現在控制檯遍歷該集合。
學生的姓名和年齡來自於鍵盤錄入
代碼演示:
package com.itheima.sh.arraylist_04;
import com.itheima.sh.demo_02.Student;
import java.util.ArrayList;
import java.util.Scanner;
/*
需求:
創建一個存儲學生對象的集合,存儲3個學生對象,使用程序實現在控制檯遍歷該集合。
學生的姓名和年齡來自於鍵盤錄入
步驟:
1.創建學生Student類
2.創建集合對象,泛型是Student類
3.調用方法專門用來獲取鍵盤錄入的數據,第2步創建的集合作爲方法參數傳遞
4.在自定義方法中創建鍵盤錄入的對象和獲取錄入的姓名和年齡
Scanner sc = new Scanner(System.in);
sc.next();//姓名
sc.nextInt();獲取年齡
5.將錄入的姓名和年齡放到學生對象中
6.將學生對象放到集合中
7.遍歷集合
*/
public class Test02 {
public static void main(String[] args) {
//2.創建集合對象,泛型是Student類
ArrayList<Student> list = new ArrayList<>();
//3.調用方法專門用來獲取鍵盤錄入的數據,第2步創建的集合作爲方法參數傳遞
addStudent(list);
addStudent(list);
addStudent(list);
//7.遍歷集合
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
//輸出姓名和年齡
System.out.println(s.getName()+"---"+s.getAge());
}
}
//自定義方法添加學生
//ArrayList<Student> list = list new ArrayList<>();
public static void addStudent(ArrayList<Student> list){
// 4.在自定義方法中創建鍵盤錄入的對象和獲取錄入的姓名和年齡
Scanner sc = new Scanner(System.in);
//獲取姓名
System.out.println("請輸入姓名:");
String name = sc.next();
//獲取年齡
System.out.println("請輸入年齡:");
int age = sc.nextInt();
// 5.將錄入的姓名和年齡放到學生對象中
// Student s = new Student(name, age);
Student s = new Student();
s.setName(name);
s.setAge(age);
//6.將學生對象放到集合中
list.add(s);
}
}
小結:由於addStudent方法傳遞的是list屬於 ArrayList類型,所以形參位置是 ArrayList類型
7.使用ArrayList集合存儲基本數據類型的數據
說明:集合只能存儲引用數據類型,不能存儲基本數據類型的數據。如果要想將基本數據類型的數據存儲到集合中,我們需要使用基本數據類型的對應的包裝類。
基本數據類型有四類八種,對應的包裝類也是四類八種。
基本數據類型: byte short int long float double char boolean
包裝類: Byte Short Integer Long Float Double Character Boolean
代碼演示:
package com.itheima.sh.arraylist_04;
import java.util.ArrayList;
public class Test03 {
public static void main(String[] args) {
/*
基本數據類型: byte short int long float double char boolean
包裝類: Byte Short Integer Long Float Double Character Boolean
*/
//創建集合對象
ArrayList<Integer> list = new ArrayList<>();
//添加數據
list.add(10);
list.add(20);
list.add(20);
//遍歷
for (int i = 0; i < list.size(); i++) {
Integer x = list.get(i);
System.out.println(x);
}
}
}
小結:
1.包裝類: Byte Short Integer Long Float Double Character Boolean
2.集合存儲基本類型的數據必須使用包裝類:
ArrayList<Integer> list = new ArrayList<>();