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

猜你喜欢

转载自blog.csdn.net/u012144068/article/details/80884940