第六天:二維數組和 面向對象的思想

1:二維數組(理解)
(1)元素是一維數組的數組。
(2)格式:
A:數據類型[][] 數組名 = new 數據類型[m][n];
B:數據類型[][] 數組名 = new 數據類型[m][];
C:數據類型[][] 數組名 = new 數據類型[][]{{...},{...},{...}};
D:數據類型[][] 數組名 = {{...},{...},{...}};
(3)案例(掌握):
A:二維數組的遍歷
/*
需求:二維數組遍歷

外循環控制的是二維數組的長度,其實就是一維數組的個數。
內循環控制的是一維數組的長度。
*/
class Array2Test {
public static void main(String[] args) {
//定義一個二維數組
int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};

//請問誰代表{1,2,3}
//arr[0]就是第一個數組
//arr[0] = {1,2,3};
for(int x=0; x<arr[0].length; x++) {
System.out.println(arr[0][x]);
}
System.out.println("--------------");

for(int x=0; x<arr[1].length; x++) {
System.out.println(arr[1][x]);
}
System.out.println("--------------");

for(int x=0; x<arr[2].length; x++) {
System.out.println(arr[2][x]);
}
System.out.println("--------------");

//用循環改進
for(int x=0; x<3; x++) {
for(int y=0; y<arr[x].length; y++) {
System.out.print(arr[x][y]+" ");
}
System.out.println();
}
System.out.println("--------------");

//這個時候,注意了,3是我們根據上面的代碼得出來的
//但是,它不能針對任何的數組都可以這樣
//所以,我們應該想辦法改進
//其實,外面的這個循環的長度就是二維數組的長度

for(int x=0; x<arr.length; x++) {
for(int y=0; y<arr[x].length; y++) {
System.out.print(arr[x][y]+" ");
}
System.out.println();
}
System.out.println("--------------");

//用方法改進
//調用方法
printArray2(arr);
System.out.println("--------------");

//我們再來一個列數是變化的
int[][] arr2 = {{1,2,3},{4,5},{6}};
printArray2(arr2);
}

/*
需求:遍歷二維數組
兩個明確:
返回值類型:void
參數列表:int[][] arr
*/
public static void printArray2(int[][] arr) {
for(int x=0; x<arr.length; x++) {
for(int y=0; y<arr[x].length; y++) {
System.out.print(arr[x][y]+" ");
}
System.out.println();
}
}
}
B:二維數組的求和
/*
公司年銷售額求和
某公司按照季度和月份統計的數據如下:單位(萬元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99

分析:
A:把題目的數據用二維數組來表示
int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
B:如何求和呢?
求和其實就是獲取到每一個元素,然後累加即可。
C:定義一個求和變量sum,初始化值是0。
D:通過遍歷就可以得到每一個二維數組的元素。
E:把元素累加即可。
F:最後輸出sum,就是結果。
*/
class Array2Test2 {
public static void main(String[] args) {
//把題目的數據用二維數組來表示
int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};

//定義一個求和變量sum,初始化值是0。
int sum = 0;

//通過遍歷就可以得到每一個二維數組的元素。
for(int x=0; x<arr.length; x++) {
for(int y=0; y<arr[x].length; y++) {
//把元素累加即可。
sum += arr[x][y];
}
}

//最後輸出sum,就是結果。
System.out.println("一年的銷售額爲:"+sum+"萬元");
}
}
C:楊輝三角形
/*


需求:打印楊輝三角形(行數可以鍵盤錄入)

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1 
1 5 10 10 5 1


分析:看這種圖像的規律
A:任何一行的第一列和最後一列都是1
B:從第三行開始,每一個數據是它上一行的前一列和它上一行的本列之和。

步驟:
A:首先定義一個二維數組。行數如果是n,我們把列數也先定義爲n。
 這個n的數據來自於鍵盤錄入。
B:給這個二維數組任何一行的第一列和最後一列賦值爲1
C:按照規律給其他元素賦值
從第三行開始,每一個數據是它上一行的前一列和它上一行的本列之和。
D:遍歷這個二維數組。
*/
import java.util.Scanner;


class Array2Test3 {
public static void main(String[] args) {
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in);

//這個n的數據來自於鍵盤錄入。
System.out.println("請輸入一個數據:");
int n = sc.nextInt();

//定義二維數組
int[][] arr = new int[n][n];

//給這個二維數組任何一行的第一列和最後一列賦值爲1
for(int x=0; x<arr.length; x++) {
arr[x][0] = 1; //任何一行第1列
arr[x][x] = 1; //任何一行的最後1列
}

//按照規律給其他元素賦值
//從第三行開始,每一個數據是它上一行的前一列和它上一行的本列之和。
for(int x=2; x<arr.length; x++) {
//這裏如果y<=x是有個小問題的,就是最後一列的問題
//所以這裏要減去1
//並且y也應該從1開始,因爲第一列也是有值了
for(int y=1; y<=x-1; y++) {
//每一個數據是它上一行的前一列和它上一行的本列之和。
arr[x][y] = arr[x-1][y-1] + arr[x-1][y];
}
}

//遍歷這個二維數組。
/*
for(int x=0; x<arr.length; x++) {
for(int y=0; y<arr[x].length; y++) {
System.out.print(arr[x][y]+"\t");
}
System.out.println();
}
*/
//這個時候,要注意了,內循環的變化必須和曾經講過的九九乘法表類似
for(int x=0; x<arr.length; x++) {
for(int y=0; y<=x; y++) {
System.out.print(arr[x][y]+"\t");
}
System.out.println();
}
}
}


2:兩個思考題(理解)
(1)Java中的參數傳遞問題
Java中只有值傳遞。

基本類型:形式參數的改變不影響實際參數
引用類型:形式參數的改變直接影響實際參數
(2)數據加密問題
綜合的小案例。

3:面向對象(掌握)
(1)面向對象
面向對象是基於面向過程的編程思想
(2)面向對象的思想特點
A:是一種更符合我們思考習慣的思想
B:把複雜的事情簡單化
C:讓我們從執行者變成了指揮者

舉例:
買電腦
洗衣服
做飯
...
萬事萬物皆對象
(3)把大象裝進冰箱(理解)
A:面向過程實現
B:面向對象實現

注意:如何讓我們的操作更符合面向對象思想呢?
A:有哪些類
B:每個類有哪些成員
C:類與類的關係
(4)類與對象
A:現實世界的事物
屬性 事物的基本描述
行爲 事物的功能
B:Java語言中最基本的單位是類。所以,我們要用類來體現事物
C:類
成員變量 事物屬性
成員方法 事物行爲
D:類:是一組相關的屬性和行爲的集合。是一個抽象的概念。
 對象:是該類事物的具體存在,是一個具體的實例。(對象)
 
 舉例:
學生:類
班長:對象
(5)類的定義及使用
A:類的定義
成員變量 定義格式和以前一樣,就是位置不同,在類中,方法外。
成員方法 定義格式和以前一樣,就是去掉了static。

B:使用類的內容
a:創建對象? 格式
類名 對象名 =  new 類名();
b:如何使用成員變量和成員方法呢
對象名.成員變量
對象名.成員方法()
(6)案例:
A:學生類的定義和使用
B:手機類的定義和使用
(7)內存圖
A:一個對象的內存圖
B:二個對象的內存圖
C:三個對象的內存圖
(8)Java程序的開發,設計和特徵
A:開發:就是不斷的創建對象,通過對象調用功能
B:設計:就是管理和維護對象間的關係
C:特徵
a:封裝
b:繼承
c:多態
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章