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: 遞迴實現斐波那契數列
遞迴的特點:
優點
程式碼簡單、精巧、易懂
缺點
執行效率低、浪費記憶體,如果對效率要求比較高 儘量不要使用遞迴....
**遞迴都可以使用 迴圈 來改寫