1. 程式人生 > >第6天 Java基礎語法

第6天 Java基礎語法

今日內容介紹 1、自定義型別的定義及使用 2、自定義類的記憶體圖 3、ArrayList集合的基本功能 4、隨機點名器案例及庫存案例程式碼優化

01引用資料型別_類

  • A: 資料型別
    • a: java中的資料型別分為:基本型別和引用型別
  • B: 引用型別的分類
    • a: Java為我們提供好的類,比如說:Scanner,Random等。
    • b: 我們自己建立的類,按照類的定義標準,可以在類中包含多個方法與屬性,來供我們使用。

02自定義類的概述

  • A: 自定義類的概述
    • java程式碼對映成現實事物的過程就是定義類的過程。
    • 舉例: 我們就拿一部手機進行分析,它能用來做什麼呢?它可以打電話,上網,聊微信等, 這些就是手機所提供的功能,也就是方法;手機也有它的特徵,如顏色、尺寸大小、品牌型號等, 這些就是手機的特徵,也就是屬性
    • 目前,我們只關注類中的屬性,類中的方法在面向物件部分再進行學習。

03自定義類的格式

A: 自定義類的格式
    * a: 使用類的形式,對現實中的事物進行描述。
    * b: 事物由方法和屬性兩部分組成。
        * 方法: 這個事物具備的功能。
        * 屬性: 這個事物具備的特徵。
    * c: 格式
        public class 類名{
            屬性定義
              修飾符 資料型別 變數名 = 值
            
            方法定義
              修飾符 返回值型別  方法名(引數列表){
                  
              }
        }

04自定義的手機類

/*
	定義類:
		使用類的形式,對現實中的事物進行描述
		事物:方法,屬性
			方法:這個事物具備的功能
			屬性:變數
		格式:
			public class 類名{
				屬性定義
					修飾符 資料型別 變數名 = 值
				方法定義
					修飾符 返回值型別 方法名(引數列表){
						
						
					}
			}
			要求:使用java中的類,描述生活中的手機這個事物
				顏色,品牌,大小
*/
public class phone{
	/*
		定義手機的屬性
	*/
	String color;
	String brand;
	double size;
	
}

05測試手機類

/*
	測試,剛定義好的phone類
	建立引用型別變數的格式
		資料型別 變數名 = new 資料型別();
		
		實現引用型別的步驟
			1.匯入包,類都是同一個資料夾,不需要匯入包
			2.建立引用型別的變數
			3.變數,型別中的功能
*/
public class Testphone{
	public static void main(String[] args){
		//2.建立引用資料型別的變數
		phone p = new phone();
		System.out.println(p);//輸出記憶體的地址
		
		//3.變數.型別中的功能
		//變數p.的方式,呼叫類中的屬性
		//屬性就是變數,賦值和獲取值
		//p.color = "土豪金";
		//p.brand = "愛立信";
		//p.size = 4.7;
		
		//獲取屬性值
		//當上面不賦值,你也會發現有值null null 0.0 說明phone類中的屬性,隨著容器進入到堆記憶體
		//屬性進入記憶體 賦值預設值
		System.out.println(p.color + " " + p.brand + " " + p.size);
		
	}
}

在這裡插入圖片描述 06自定義類的記憶體圖_1 自定義類的記憶體圖_1 07兩個引用型別變數記憶體圖 在這裡插入圖片描述 08自定義類的練習 學習了引用資料型別(類)以後,我們就能夠使用類描述任何東西了。看幾個具體的描述,如下:  電飯鍋,包含屬性(品牌、容量大小、顏色等)  汽車,包含屬性(品牌、排量、型別等)  學生,包含屬性(姓名,年齡,性別等)

/*
	A:實體類的程式碼:
	電飯煲,包含屬性(品牌、容量大小、顏色等)
	定義類,描述事物,電飯煲
		屬性:品牌,大小,顏色
	
	定義類,類名字,電飯煲
	類的範圍:定義三個屬性
*/
public class Electric_cooker{
	//定義三個屬性
	String brand;
	double size;
	String color;
}
/*
	汽車,包含屬性(品牌,排量,型別等)
	定義類,類名:Car
		屬性:品牌 排量 型別
*/
public class Car{
	//定義汽車的三個屬性
	String brand;
	double Vehicle_displacement;
	String type;
}
/*
	學生,包含屬性(姓名,年齡,性別)
	定義類,型別Student
		三個屬性:姓名,年齡,性別(char)
*/
public class Student{
	//定義學生的三個屬性
	String name;
	int age;
	char sex;	
}
/*
	定義的測試類
	同時測試:電飯煲,汽車,學生
	
	建立引用型別變數的格式
	資料型別 變數名 = new 資料型別();
	
	實現引用型別的步驟
		1.匯入包,類都是同一個資料夾,不需要匯入包
		2.建立引用型別的變數
		3.變數,型別中的功能
*/
public class Test{
	public static void main(String[] args){
		//建立電飯煲引用型別
		Electric_cooker dfg = new Electric_cooker();
		
		dfg.brand = "特斯拉";
		dfg.color = "紅色";
		dfg.size = 30;
		
		System.out.println("電飯煲" + dfg.brand + " " + dfg.color + " " + dfg.size);
		
		//建立汽車引用型別
		Car c = new Car();
		c.brand = "巨力";
		c.type = "拖拉機";
		c.Vehicle_displacement = 0.5;
		
		System.out.println("汽車" + c.brand + " " + c.type + " " + c.Vehicle_displacement);
		
		//建立學生引用資料型別
		Student stu = new Student();
		
		stu.name = "小強";
		stu.age = 18;
		stu.sex = '男';//char型用單引號包裹
		
		System.out.println("學生" + stu.name + " " + stu.age + " " + stu.sex);
	}
}

在這裡插入圖片描述 09ArrayList集合 在前面我們學習了陣列,陣列可以儲存多個元素,但在某些情況下無法確定到底要儲存多少個元素,此時陣列將不再適用,因為陣列的長度不可變。例如,要儲存一個學校的學生,由於不停有新生來報道,同時也有學生畢業離開學校,這時學生的數目很難確定。為了儲存這些數目不確定的元素,JDK中提供了一系列特殊的類,這些類可以儲存任意型別的元素,並且長度可變,統稱為集合。在這裡,我們先介紹ArrayList集合,其他集合在後續課程中學習。 ArrayList集合是程式中最常見的一種集合,它屬於引用資料型別(類)。在ArrayList內部封裝了一個長度可變的陣列,當存入的元素超過陣列長度時,ArrayList會在記憶體中分配一個更大的陣列來儲存這些元素,因此可以將ArrayList集合看作一個長度可變的陣列。 09.1 集合的建立 建立集合的常用格式在此說明一下: 導包:import java.util.ArrayList; 建立物件:與其他普通的引用資料型別建立方式完全相同,但是要指定容器中儲存的資料型別: ArrayList<要儲存元素的資料型別> 變數名 = new ArrayList<要儲存元素的資料型別>();  集合中儲存的元素,只能為<>括號中指定的資料型別元素;  “<要儲存元素的資料型別>”中的資料型別必須是引用資料型別,不能是基本資料型別; 下面給出8種基本資料型別所對應的引用資料型別表示形式: 在這裡插入圖片描述 10ArrayList建立變數的步驟

* A: ArrayList建立變數的步驟
    * a: 匯入包 java.util包中
    * b: 建立引用型別的變數
        資料型別<集合儲存的資料型別>  變數名 = new 資料型別<集合儲存的資料型別>();
        集合儲存的資料型別: 要將資料儲存到集合的容器中
        建立集合引用變數的時候,必須要指定好,儲存的型別是什麼
    * c: 變數名.方法 
        注意: 集合儲存的資料,8個基本型別對應8個引用型別
        儲存引用型別,不儲存基本型別

11ArrayList建立變數舉例

/*
	ArrayList集合的使用
	也是引用資料型別
	步驟:
		1.匯入包 java.util包中
		2.建立引用型別的變數
			資料型別<集合儲存的資料型別> 變數名 = new 資料型別<集合儲存的資料型別>();
			集合儲存的資料型別:要將資料儲存到集合的容器中
			建立集合引用變數的時候,必須要制定好,儲存的型別是什麼
			
			ArrayList<String> array = new ArrayList<String>();
		3.變數名.方法
		
		注意:集合儲存的資料,8個基本型別對應8個引用型別
		儲存引用型別,不儲存基本型別
*/
import java.util.ArrayList;

public class ArrayListDemo{
	public static void main(String[] args){
			//建立集合容器,指定儲存的資料型別
			//儲存字串
			ArrayList<String> array = new ArrayList<String>();
			
			//建立集合容器,儲存整數
			//ArrayList<int> array1 = new ArrayList<int>();//報錯,集合儲存的資料不儲存基本型別
			//int===》Integer
			ArrayList<Integer> array1 = new ArrayList<Integer>();
			
			//建立集合型別,儲存手機型別
			ArrayList<Phone> array2 = new ArrayList<Phone>();
	}
	
}

12ArrayList的常見方法

接下來,我們來學習下ArrayList集合提供的一些常用方法,如下表: 在這裡插入圖片描述 通過程式碼演示上述方法的使用。ArrayListDemo01.java

/*
	ArrayList集合中的方法:
	add(引數型別)向集合中新增元素,資料儲存進去
	方法中的引數型別,定義結合物件時候的型別是一致的
	
	ArrayList<Integer> array = new ArrayList<Integer>();
	array.add(3);
	
	get(int index)取出集合中的元素,get方法的引數,寫入索引
	
	size()返回集合的長度,集合儲存元素的個數
*/
import java.util.ArrayList;

public class ArrayListDemo_1{
	public static void main(String[] args){
		//定義集合,儲存字串元素
		ArrayList<String> array = new ArrayList<String>();
		
		//呼叫集合方法add儲存元素
		array.add("I ");
		array.add("love ");
		array.add("java ");
		array.add("hehe ");
		array.add("hehe");
		
		//輸出集合的長度,呼叫集合方法size,size方法的返回值型別int
		int size = array.size();
		System.out.println(size);
		
		//獲取出集合中的一個元素,獲取1索引的元素
		//集合的方法get(),獲取元素後結果資料型別
		//String s = array.get(11);//Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 11, Size: 5
		String s = array.get(1);
		System.out.println(s);
		
	}
	
}

強調一點,ArrayList集合相當於是一個長度可變的陣列,所以訪問集合中的元素也是採用索引方式訪問,第一個元素儲存在索引0的位置,第二個元素儲存在索引1的位置,依次類推。

13ArrayList集合的遍歷 通過集合遍歷,得到集合中每個元素,這是集合中最常見的操作。集合的遍歷與陣列的遍歷很像,都是通過索引的方式,集合遍歷方式如下:ArrayListDemo02.java

/*
	ArrayList集合中的遍歷:
	實現的思想也是索引思想
	集合的索引從0開始,到size()-1
	方法get(int index)
*/
import java.util.ArrayList;

public class ArrayListDemo_2{
	public static void main(String[] args){
		//定義集合,儲存字串元素
		ArrayList<String> array = new ArrayList<String>();
		
		//呼叫集合方法add儲存元素
		array.add("I ");
		array.add("love ");
		array.add("java ");
		array.add("hehe ");
		array.add("hehe");
		
		//輸出集合的長度,呼叫集合方法size,size方法的返回值型別int
		int size = array.size();
		System.out.println(size);
		
		//獲取出集合中的一個元素,獲取1索引的元素
		//集合的方法get(),獲取元素後結果資料型別
		//String s = array.get(11);//Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 11, Size: 5
		String s = array.get(1);
		System.out.println(s);
		
		//遍歷陣列
		//使用方法size+get組合進行遍歷
		for(int i = 0; i < array.size(); i++){
			System.out.println(array.get(i));
		}
	}
	
}

在這裡插入圖片描述 14ArrayList補充方法 ArrayList集合提供的一些常用方法,如下表: 在這裡插入圖片描述  boolean add(int index, Object obj)  功能:在集合中指定index位置,新增新元素obj  功能說明:假設集合list中有元素[“java”,“javaEE”],當使用add(1,“javaWeb”)後,集合list中的元素為[“java”,“javaWeb”,“JavaEE”]。  Object set(int index, Object obj)  功能:用指定元素obj替代集合中指定index位置的元素  功能說明:假設集合list中有元素[“java”,“javaEE”],當使用set(0,“javaWeb”)後,集合list中的元素為[“javaWeb”,“JavaEE”]。  Object remve(int index)  功能:從集合中刪除指定index處的元素,返回該元素  功能說明:假設集合list中有元素[“java”,“javaEE”],當使用remove(0)後,集合list中的元素為[“JavaEE”],返回值為“java”。  void clear()  功能:清空集合中所有元素  功能說明:假設集合list中有元素[“java”,“javaEE”],當使用clear()後,集合list中的元素為空[]。

/*
	集合ArrayList方法的補充:
		add(int 索引,儲存的元素)  將元素新增到指定的索引上
		set(int 索引,修改後的元素) 將指定索引的元素,進行修改
		remove(int 索引) 刪除指定索引上的元素
		clear() 清空集合中所有的元素
*/
import java.util.ArrayList;

public class ArrayListDemo_3{
	public static void main(String[] args){
		ArrayList<Integer> array = new ArrayList<Integer>();
		array.add(1);
		array.add(2);
		array.add(3);
		System.out.println("add(int 索引,儲存的元素)  將元素新增到指定的索引上");
		//在索引2上,新增元素7
		array.add(2,7);
		//使用方法size+get組合進行遍歷
		for(int i = 0; i < array.size(); i++){
			System.out.println(array.get(i));
		}
		System.out.println("set(int 索引,修改後的元素) 將指定索引的元素,進行修改");
		//將0索引上的元素,修改成10
		array.set(0,10);
		//使用方法size+get組合進行遍歷
		for(int i = 0; i < array.size(); i++){
			System.out.println(array.get(i));
		}
		System.out.println("remove(int 索引) 刪除指定索引上的元素");
		//將1索引上的元素,刪除
		array.remove(1);
		//使用方法size+get組合進行遍歷
		for(int i = 0; i < array.size(); i++){
			System.out.println(array.get(i));
		}
		System.out.println("clear() 清空集合中所有的元素");
		//清空元素
		array.clear();
		//使用方法size+get組合進行遍歷
		for(int i = 0; i < array.size(); i++){
			System.out.println(array.get(i));
		}
	}
	
}

在這裡插入圖片描述 15隨機點名器案例分析 隨機點名器案例 15.1 案例介紹 隨機點名器,即在全班同學中隨機的找出一名同學,列印這名同學的個人資訊。 此案例在我們昨天課程學習中,已經介紹,現在我們要做的是對原有的案例進行升級,使用新的技術來實現。 我們來完成隨機點名器,它具備以下3個內容:  儲存所有同學姓名  總覽全班同學姓名  隨機點名其中一人,列印到控制檯 15.2 案例需求分析 全班同學中隨機的找出一名同學,列印這名同學的個人資訊。 我們對本案例進行分析,得出如下分析結果: 1.儲存全班同學資訊(姓名、年齡) 2.列印全班同學每一個人的資訊(姓名、年齡) 3.在班級總人數範圍內,隨機產生一個隨機數,查詢該隨機數所對應的同學資訊(姓名、年齡) 隨機點名器明確地分為了三個功能。如果將多個獨立功能的程式碼寫到一起,則程式碼相對冗長,我們可以針對不同的功能可以將其封裝到一個方法中,將完整獨立的功能分離出來。 而在儲存同學姓名時,如果對每一個同學都定義一個變數進行姓名儲存,則會出現過多孤立的變數,很難一次性將全部資料持有。此時,我們採用ArrayList集合來解決多個學生資訊的儲存問題。

* A: 隨機點名器案例分析
    全班同學中隨機的找出一名同學,列印這名同學的個人資訊。
    我們對本案例進行分析,得出如下分析結果:
        1.儲存全班同學資訊(姓名、年齡)
            將容器換成集合,集合中存的是Student型別
        2.列印全班同學每一個人的資訊(姓名、年齡)
             遍歷集合
        3.在班級總人數範圍內,隨機產生一個隨機數,查詢該隨機數所對應的同學資訊
        (姓名、年齡)
        隨機點名器明確地分為了三個功能。如果將多個獨立功能的程式碼寫到一起,則程式碼相對冗長
        ,我們可以針對不同的功能可以將其封裝到一個方法中,將完整獨立的功能分離出來。
        而在儲存同學姓名時,如果對每一個同學都定義一個變數進行姓名儲存,
            則會出現過多孤立的變數,很難一次性將全部資料持有。
        此時,我們採用ArrayList集合來解決多個學生資訊的儲存問題
/*
	隨機點名器,集合改進(學生的姓名和年齡)
	現實中有學生這個事物,使用定義類的形式,描述學生事物
	屬性:姓名,年齡
	
	姓名儲存了陣列,將容器換成是集合
	String[] s = {"",""};
	集合中,儲存的是學生的姓名嘛?應該儲存Student型別
	
	儲存學生:
		學生型別,儲存到集合中
	總覽:遍歷集合
	隨機:隨機數,作為索引,到集合中找到元素
	
	三個功能,共享的資料,集合容器
	定義三個方法,必須引數傳遞集合
	
	類,它是引用資料型別,與之前學習的所有引用資料型別相同,
	自定義類也是一種資料型別。
	只是自定義型別並非Java為我們預先提供好的型別,而是我們自己定義的一種引用資料型別用來描述一個事物。
	
	建立集合的常用格式在此說明一下:
	C1:導包:import java.util.ArrayList;
	C2:建立物件:與其他普通的引用資料型別建立方式完全相同,但是要指定容器中儲存的資料型別:
	C3:ArrayList<要儲存元素的資料型別> 變數名 = new ArrayList<要儲存元素的資料型別>();
	“<要儲存元素的資料型別>”中的資料型別必須是引用資料型別,不能是基本資料型別;
	
	類的名字:首字母大寫,第二個單詞首字母大寫 例如:BeiJngShiHaiDiangQuYiYuan
		public class HelloWorld{   
				
		方法的名字:首字母小寫,每個單詞首字母大寫 例如:addSchool
		
		public static void main(String[] args){		//2.定義主方法

	隨機數類Random:
	 R1:導包:import java.util.Random;
	 R2:建立例項格式:Random 變數名 = new Random();
	 R3:呼叫方法:
		public int nextInt(int maxValue)	產生[0,maxValue)範圍的隨機整數,包含0,不包含maxValue;
		public double nextDouble()  產生[0,1)範圍的隨機小數,包含0.0,不包含1.0。

*/
//C1:導包:import java.util.ArrayList;
import java.util.ArrayList;
// R1:導包:import java.util.Random;
import java.util.Random;

public class CallName{
	public static void main(String[] args){
		//1.定義集合,儲存的是StudentName型別變數
		ArrayList<StudentName> array = new ArrayList<StudentName>();
		System.out.println("--------------------學生隨機點名系統----------------------");
		
		System.out.println("1.新增學生姓名");
		//2.呼叫新增方法
		add(array);
		
		System.out.println("2.遍歷學生姓名");
		//3.呼叫遍歷集合
		printArrayList(array);
		
		System.out.println("3.隨機點名功能");
		//4.集合中隨機抽取元素
		randomStudentName(array);
		//結束程式
		System.out.println("============已退出系統===========================");
	}
	/*
		定義方法,實現儲存學生的姓名和年齡
		返回值?沒有
		引數?建立StudentName型別變數,儲存到集合中
	*/
	public static void add(ArrayList<StudentName> array){
		//建立StudentName型別變數
		StudentName sn1 = new StudentName();
		StudentName sn2 = new StudentName();
		StudentName sn3 = new StudentName();
		StudentName sn4 = new StudentName();
		
		sn1.name = "張三1";
		sn1.age = 21;
		
		sn2.name = "張三2";
		sn2.age = 22;
		
		sn3.name = "張三3";
		sn3.age = 23;
		
		sn4.name = "張三4";
		sn4.age = 24;
		
		//將StudentName變數,儲存到集合中
		array.add(sn1);
		array.add(sn2);
		array.add(sn3);
		array.add(sn4);
		System.out.println("============新增學生姓名結束==================");
	}
	
	/*
		總覽學生的資訊,遍歷集合中的元素
		返回值?沒有
		引數?建立StudentName型別變數,儲存到集合中
	*/
	public static void printArrayList(ArrayList<StudentName> array){
		for(int i = 0; i < array.size(); i++){
			//儲存集合的時候,集合.add(sn1) sn1是StudentName型別變數
			//獲取的時候,集合.get()方法,獲取出來的是什麼,還是StudentName型別變數
			StudentName s = array.get(i);
			System.out.println("學生姓名 " + s.name + " 學生年齡 " + s.age);
		}	
		System.out.println("============遍歷學生姓名結束==================");	
	}
	
	/*
		隨機數,當作集合的索引,到集合中找到元素
		返回值?沒有
		引數?儲存StudentName型別變數的集合
	*/
	public static void randomStudentName(ArrayList<StudentName> array){
		//R2:建立例項格式:Random 變數名 = new Random();
		Random ran = new Random();
		//R3:呼叫方法
		int ranIndex = ran.nextInt(array.size());
		//隨機數,索引,到集合中get到StudentName型別變數
		StudentName s = array.get(ranIndex);
		System.out.println("學生姓名 " + s.name + " 學生年齡 " + s.age);
	}
}

在這裡插入圖片描述 在這裡插入圖片描述 16 庫存案例修改庫存清單及測試程式碼的實現 16.1 案例介紹 現在,我們將原有的庫存管理案例,採用更好的集合方式實現。 在這裡插入圖片描述 將對下列功能進行方法封裝:  列印庫存清單功能  庫存商品數量修改功能  退出程式功能 16.2 案例需求分析 管理員能夠進行的操作有3項(檢視、修改、退出),我們可以採用(switch)選單的方式來完成。 -------------庫存管理------------ 1.檢視庫存清單 2.修改商品庫存數量 3.退出 請輸入要執行的操作序號: 每一項功能操作,我們採用方法進行封裝,這樣,可使程式的可讀性增強。 選擇“1.檢視庫存清單”功能,則控制檯列印庫存清單 選擇“2.修改商品庫存數量”功能,則對每種商品庫存數進行更新 選擇“3.退出”功能,則退出庫存管理,程式結束 16.3 實現程式碼

/*
	集合應該是方法引數傳遞的
	實現庫存管理案例:
		1.儲存商品資訊
		 創建出集合,儲存商品型別變數
		 將商品型別的變數,儲存到集合中
		 
		2.檢視庫存清單
			將集合進行遍歷,獲取出集合中儲存的Goods型別變數
			輸出每個Goods型別的屬性
			計算求和:總庫存,總金額
			
		3.修改商品的庫存
			集合遍歷,獲取出集合中儲存的Goods型別變數
			變數呼叫Goods類的屬性count值,進行修改(鍵盤輸入)
*/
//import java.util.*;===>把util裡所有類導進來
import java.util.ArrayList;

//Scanner類使用步驟:
//S1:導包
import java.util.Scanner;

public class Shopp{
	public static void main(String[] args){
		//建立ArrayList集合,儲存Goods型別
		ArrayList<Goods> array = new ArrayList<Goods>();
		//呼叫新增商品資訊的方法
		addGoods(array);	
		//進入死迴圈中
		while(true){
			//呼叫選擇功能的方法,獲取到用輸入的功能序號
			int number = chooseFunction();
			//對序號判斷:1-進入檢視庫存功能 2-進入修改庫存功能 3-結束
			switch(number){
				case 1:
					//進入檢視庫存,呼叫檢視庫存的方法,傳遞儲存商品資訊的集合
					printStore(array);
				break;
				
				case 2:
					//進入修改庫存功能,呼叫檢視庫存的方法
					update(array);
				break;
				
				case 3:
					//結束系統
					return;
					 
				default:
					System.out.println("功能還在完善中...");
				break;
			}
		}
		
		
	}
	/*
		定義方法,將商品的資訊儲存到集合中
		集合是所有方法的共享資料,引數傳遞
	*/
	public static void addGoods(ArrayList<Goods> array){
		//建立商品型別變數 Goods型別的變數
		Goods g1 = new Goods();
		Goods g2 = new Goods();
		g1.brand = "MacBook";
		g1.size = 13.3;
		g1.price = 9999.99;
		g1.count = 3;
		
		g2.brand = "Thinkpad";
		g2.size = 15.6;
		g2.price = 7999.99;
		g2.count = 1;
		
		//Goods型別的變數,儲存到集合中
		array.add(g1);
		array.add(g2);
		
	}
	/*
		定義方法,檢視庫存清單,遍歷集合
		
	*/
	public static void printStore(ArrayList<Goods> array){
		//輸出表頭
		//1.實現表頭固定資料,列印輸出語句
		System.out.println("--------------------商城庫存清單--------------------");
		System.out.println("品牌型號         尺寸         價格         庫存數");
		//2.表尾部,一部分固定資料,一部分需要科學計算
		//定義變數,儲存總庫存數和總金額
		int totalCount = 0;
		double totalPrice = 0;
		//3.遍歷集合
		for(int i = 0;i < array.size();i++){
			//get(索引)獲取集合中的元素,儲存的是Goods類,獲取的也是Goods型別
			//使用Gooos型別變數,接受get方法的結果
			Goods g = array.get(i);
			//利用獲取到的Goods型別,去取到商品類的屬性
			System.out.println(g.brand + "       " + g.size + "         " + g.price + "       " + g.count);
			totalCount += g.count;
			totalPrice += g.count * g.price;
		}		
		//4.列印尾部資料
		System.out.println("總庫存數:" + totalCount + " 臺");
		System.out.println("庫存商品總金額:" + totalPrice + " 元");
		System.out.println("----------------------------------------------------");
	}
	/*
		方法定義,修改庫存
		鍵盤的輸入,將Goods中的屬性值,修改
	*/
	public static void update(ArrayList<Goods> array){
		//遍歷集合,遍歷到一個,修改一個
		//1.接受鍵盤輸入
		Scanner sc = new Scanner(System.in);
		for(int i = 0;i < array.size();i++){
			//集合方法get獲取的是集合的元素,元素的型別Goods型別
			Goods g = array.get(i);
			System.out.println("請輸入" + g.brand + "的庫存數");
			//鍵盤輸入,錄入庫存,儲存到庫存的陣列中
			int newCount = sc.nextInt();
			//Goods屬性,count進行修改
			g.count = newCount;
		}		
	}
	/*
		定義方法,實現選擇選單,根據功能選擇選單
	
	*/
	public static int chooseFunction(){
		System.out.println("--------------------庫存管理----------------------");
		System.out.println("1.檢視庫存清單");
		System.out.println("2.修改商品庫存管理");
		System.out.println("3.退出系統");
		System.out.println("請輸入要執行的操作序號:");
		//S2:建立Scanner物件例項
		Scanner sc = new Scanner(System.in);
		return sc.nextInt();//S3:用來接收控制檯錄入的數字		
	}
}

在這裡插入圖片描述 在這裡插入圖片描述 17 總結 17.1 知識點總結  引用資料型別(類)  類的型別為兩種:  第一種,Java為我們提供好的類,如Scanner類,Scanner類等,這些已存在的類中包含了很多的方法與屬性,可供我們使用。  第二種,我們自己建立的類,按照類的定義標準,可以在類中包含多個方法與屬性,來供我們使用。  建立類的格式

public class 類名 {
              //可以定義屬性
              //也可以定義方法
}

 使用類的格式:

類名 變數名 = new 類名();

 使用類中的屬性與方法格式

使用屬性: 變數名.屬性
使用方法: 變數名.方法()

 ArrayList集合  它屬於引用資料型別(類)。我們可以看作一個長度可變的陣列。  建立集合的方式

ArrayList<要儲存元素的資料型別> 變數名 = new ArrayList<要儲存元素的資料型別>();

 集合中的常用方法  boolean add(Object obj)  Object get(int index)  int size()  boolean add(int index, Object obj)  Object set(int index, Object obj)  Object remve(int index)  void clear()