Java基礎突擊第二天0004

數組聲明:String args[] = new String[長度]

                 String[]  args= new String[長度]

數組的靜態初始化:int scroe[] = {91,91,91,91,91};  (分號結尾)

二維數組:int score[][] = new int[3][4];

二維數組靜態初始化:int score[][] = {{11,12},{21,22,23},{31,32,33,34}};

二維數組就是將一維數組當成元素(元素懂吧?!),放到一個一維數組裏去;
三維數組就是將二維數組當成元素放到一個一維數組裏去;
四維、五維...
以此類推...
一維數組{1,2,3},
二維數組{{1,2,3},   {4,5,6,7}},

三維數組{{{5,1},{6,7}},    {{9,4},{8,3}}}


方法的重載就是方法名稱相同,參數類型和參數的個數不相同。

    
        public static void print(int num){                     //方法1  int參數
		System.out.println("I have already studied "+num+" days.");
	}
	public static void print(String str){                  //方法2  String參數
		System.out.println("My name is "+str+".");
	}
	public static void print(String str,int num){          //方法3 String int 參數
		System.out.println("My name is "+str+", my age is "+num+".");
	}
	public static void print(int num,String str){          //方法4 int String 參數
		System.out.println("My age is "+num+", my name is "+str+".");
	}
	public static String print(){                          //無參且返回值類型不同
		return "Hello!";
	}
	public static String printA(String str,int num){        //方法3對照組,返回類型不同
		return "My name is "+str+", my age is "+num+".";//若printA改爲print進行重載
	}                                                       //則出現編譯錯誤

	public static void main(String[] agrs){
	        print(30);
		print("FangXy");
		print("FangXy",12);
		print(12,"FangXy");
		System.out.println(print());
		System.out.println(printA("FangXy",12));
  }//main

輸出:

I have already studied 30 days.
My name is FangXy.
My name is FangXy, my age is 12.
My age is 12, my name is FangXy.
Hello!

My name is FangXy, my age is 12.

可以看出,重載需要看重參數個數,類型,參數順序。而與返回類型沒什麼關係。

如果兩個重名方法,參數的類型和個數一致,就算返回值類型不同,也會編譯出錯,不會重載。


return:一旦執行到return,方法將不再執行,而是返回到被調用處繼續向下執行。

    

        public static void printA(int a){
		System.out.println("start invoking function printA");
		if(a == 10){
			return;
		}
		System.out.println("printA is over");
	}
	public static void main(String[] agrs){
	        System.out.println("before invoking function printA");
		printA(20);
		System.out.println("after invoking function printA");

		System.out.println("If the condition is met, how does the program work?");

		System.out.println("before invoking function printA");
		printA(10);      //set the variable to 10, the execute return statement
		System.out.println("after invoking function printA");
  }//mains
輸出:

before invoking function printA  //a爲20時程序的流程
start invoking function printA
printA is over
after invoking function printA    
If the condition is met, how does the program work?
before invoking function printA  //a爲10時程序的流程
start invoking function printA      //執行return後返回調用處,並未執行輸出printA is over語句

after invoking function printA    


遞歸調用在操作時如果處理不好,可能出現內存的溢出,使用需謹慎。

    
        public static int sum(int a){
		if(a == 1){
			return 1;
		}else{
			return a + sum(a-1);
		}
	}
	public static void main(String[] agrs){
	  System.out.println("Result is "+sum(100));
        }//mains

處理遞歸,要注意出口一定要確保。


方法可以傳遞數組,可以返回數組。不過數組爲引用類型,所以方法對數組的修改會保存下來。

        public static int[] assignmentA(){
		int result[] =  {1,3,5};       //該創造輸出參數3個
		return result;                 //方法返回數組
	}//assignmentA
	public static int[] assignmentB(){
		int result[] =  {1,3,5,7,9};   //該創造數組參數5個
		return result;
	}//assignmentB
	public static void print(int... array){         //方法接收數組&可變參數
		for(int i = 0;i<array.length;i++){      //參數以數組的形式保存下來
			System.out.print(array[i]+" ");
		}//for
	}//print
	public static void printForeach(int... array){  //for循環的foreach寫法
		for(int x:array){
			System.out.print(x+" ");
		}//for
	}//printForeach
	public static void main(String[] agrs){
	  int temp[] = assignmentA();
		print(temp);
		System.out.println();
		temp = assignmentB();
		print(temp);
		System.out.println();
		printForeach(temp);
  }//main

輸出:

1 3 5
1 3 5 7 9
1 3 5 7 9

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章