1. 程式人生 > >Java陣列(一)

Java陣列(一)

***********************學習技巧(原則)******************************

3W1H


一.why 為什麼用、為什麼學

為什麼用陣列、什麼時候用


二.what 是什麼


什麼是陣列


三.how 怎麼用


如何定義陣列、語法


四.where 用在哪


實際需求 實際的使用場景

 


***********************方法 Method ******************************


一.why 為什麼用方法 什麼時候用


凡是碰到重複(出現二次或者是二次以上的程式碼)的程式碼,考慮使用方法


需求1:

列印三行數字

111
222
333

System.out.println("111");
System.out.println("444");
System.out.println("333");


需求2:

再列印一遍

System.out.println("111");
System.out.println("444");
System.out.println("333");


只給50分


雖然實現了需求,但是違反軟體程式設計中一個原則:DRY原則


Don't Repeat Yourself 不要重複你自己 不要複製、貼上程式碼


缺點:


(1)程式碼冗餘、不可複用


(2)不可維護


需求變了222----->444 每處都要改 改動多 浪費時間 叫做不可維護

 

二.什麼是方法


複用程式碼的最基本的單位........相當於c中的函式

 

三.how 如何定義方法

 

程式設計師自己定義方法,可以參照main方法


public static void main(String[] args){


}


public 公有的


static 靜態的 自己的定義的方法 static 可寫 可不寫

1. 靜態方法

2. 例項方法


void 返回值
1. 如果方法沒有返回值 寫void void代表沒有返回值

2. 如果方法有返回值 寫上返回值的型別 int String ...


main 方法名, 使用小駝峰命名方式 LowerCamelCase


String[] args 形參 如果定義多個,多個形參之間使用 ,隔開

 

*****************************靜態方法的定義和呼叫*********************************


1.定義

需要加static

2.呼叫


類名.方法名();

演示程式碼如下:

public class TestStaticMethod{

public static void main(String[] args){

System.out.println("演示靜態方法的使用");
//2.呼叫
//類名.方法名()
TestStaticMethod.print123();

System.out.println("程式結束!");

}


//1.定義
//需要加static
public static void print123(){

System.out.println("111");
System.out.println("222");
System.out.println("333");
}
}

 


*****************************例項方法的定義和呼叫*********************************


/**
作者: zhangzy<br>
公司: 藍橋軟體學院<br>
時間: 2017-06-26上午
功能: 演示例項方法的定義和呼叫
*/


public class TestNoneStaticMethod{

public static void main(String[] args){

System.out.println("演示例項方法的使用");
//2.呼叫
//(1) 建立物件
// 類名 物件名 = new 類名();
TestNoneStaticMethod test = new TestNoneStaticMethod();
//(2) 物件名.方法名()
test.print123();
test.print123();
System.out.println("程式結束!");

}


//1.例項方法的定義
//不需要加static
public void print123(){

System.out.println("111");
System.out.println("444");
System.out.println("333");
}
}

 

*****************************按照帶不帶返回值來劃分方法*********************************


一.不帶返回值的方法


void 表示沒有返回值


沒有返回值的方法 不需要寫return


public void print123(){

System.out.println("111");
System.out.println("444");
System.out.println("333");
}


二.帶返回值的方法

需要寫上返回值的型別

帶返回值的方法 一定要加return


需求: 求兩數之和

 

public static void main(String[] args){

int result = 演示帶返回值的方法.sum(10,20);

System.out.println("result=" + result);

}


//需求: 求兩數之和
public static int sum(int x,int y){

int z = x + y;

return z;// 作用: 1. 結束該方法 2.並且返回一個值 (誰呼叫返回給誰)

}
}


***********************方法的按值傳遞******************************


需求: 如何實現兩數交換

 

方法的按值傳遞, 順便講解 虛擬機器棧

資料結構:


棧: 先進後出

生活中 米缸

 

虛擬機器棧: java程式執行的時候 需要用到的一種記憶體空間...內層結構類似於資料結構中棧的概念。

方法的執行需要用到虛擬機器棧


1.方法呼叫的時候要入棧

2.方法執行完畢以後要出棧


區域性變數是在棧裡的

 

 

演示程式碼:

public class TestChange{

public static void main(String[] args){

int x = 10;
int y = 20;

//int temp x y
TestChange.change(x,y);
System.out.println("交換後x=" + x);
System.out.println("交換後y=" + y);

 

}


//按值傳遞
//實質 相當於 二進位制位的拷貝
//就是賦值 x(change)= x(main 10) y(change)=y(main 20)
public static void change(int x,int y){
System.out.println("change");
int temp = x;
x = y;
y = temp;

System.out.println("change方法中x=" + x);
System.out.println("change方法中y=" + y);

}
}

***************************遞迴***********************************

一.什麼是遞迴


方法自己呼叫自己叫做遞迴...


public void test(){

test();
}


死迴圈


遞迴程式一定要有 遞迴出口:


遞迴出口: 當滿足某一個條件的時候,能讓遞迴程式結束..這個條件叫做遞迴出口...


二.how


if(遞迴出口){

return 值;
}else{

執行遞迴公式
}

 

需求: 使用遞迴實現 求 1..n的累加和
sum(n) = n + sum(n-1)

sum(100) = 100 + sum(99)

sum(99) = 99 + sum(98)

sum(98) = 98 + sum(97)

...

sum(1) = 1


演示程式碼:


/**
作者: zhangzy<br>
公司: 藍橋軟體學院<br>
時間: 2017-06-26 下午
功能: 演示遞迴
*/
public class TestDiGui{

public static void main(String[] args){

int result = TestDiGui.sum(100);
System.out.println("result=" + result);
}

public static int sum(int n){

if(n==1){
return 1;
}else{

return n + sum(n-1);
}
}


}

 

需求2: 遞迴實現斐波那契數列

 

遞迴的特點:

優點

程式碼簡單、精巧、易懂

缺點

執行效率低、浪費記憶體,如果對效率要求比較高 儘量不要使用遞迴....

 

**遞迴都可以使用 迴圈 來改寫