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!

扫描二维码关注公众号,回复: 1843675 查看本文章

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