2021-10-09

二维数组

二维数组的声明:(三种形式)

  1. int[][] intArray;
    
  2. float floatArray[][];
    
  3. double[] doubleArray[];
    

    //创建数组

    intArray=new int[3][3];//创建了一个3行3列的二维数组
    

    赋值:

    intArray[1][2]=9;//为第2行第3列的元素赋值为9
    

声明数组的同时进行创建:

char[][] ch=new char[3][5];

创建二维数组时,可以只指定行数,之后的每行相当于一个一维数组,需要重新创建,每行的元素个数可以不一样

 floatArray=new float[3][];
floatArray[0]=new float[3];//第一行创建3列
floatArray[1]=new float[4];//第2行创建4列
floatArray[2]=new float[5];//第3行创建5列

二维数组的初始化

int[][] num={{78,68},{65,76,34},{89}};
               //大括号的个数为行数,每个大括号里面的元素个数为所在行数的列数

循环输出二维数组的内容:

方法

使用对象名调用方法

解决一类问题的代码的有序组合,是一个功能模块。

方法的声明和调用

方法声明:

语法格式:

​ 访问修饰符 返回类型 方法名(参数列表){

​ 方法体

​ }

public static void main(String[] args){
    System.out.println("hello,imooc!");
}

​ 修饰符:public

​ protected

​ private

返回类型

方法名:与变量名命名一致

根据方法是否带参数、是否返回值,分为四类

  • 无参无返回值方法

    一行打印输出一串星号

    package com.imooc.method;
    
    public class MethodDemo {
    	
    	//定义一个无参无返回值的方法,输出一行星号
    	public void printStar() {
    		System.out.println("************************************************************");
    	}
    
    	public static void main(String[] args) {
    	  //创建一个MethodDemo类的对象myMethodDemo
    		MethodDemo myMethodDemo=new MethodDemo();
    		//使用对象名.方法名();调用方法
    		myMethodDemo.printStar();
    		System.out.println("欢迎欢迎!");
    		myMethodDemo.printStar();
    
    	}
    
    }
    
  • 无参带返回值方法

    package com.imooc.method;
    
    public class Rectangle {
    	//定义一个求长方形面积的方法
    	public int area() {
    		int length=10;
    		int width=5;
    		int getArea=length*width;
    		return getArea;
    	}
    
    	public static void main(String[] args) {
    		// 创建对象
    		Rectangle rt=new Rectangle();
    		System.out.println("长方形的面积为:"+rt.area());
    
    	}
    
    }
    
    
  • 带参无返回值方法

    package com.imooc.method;
    
    public class MaxDemo {
    	public void max(float a,float b) {
    		float max=0;
    		if(a<b) {
    			max=b;
    		}
    		if(a>b) {
    			max=a;
    		}
    		System.out.println("两个数"+a+"和"+b+"的最大值为:"+max);
    		
    	}
    
    	public static void main(String[] args) {
    		//
    		MaxDemo maxDemo=new MaxDemo();
    		int a=5,b=10;
    		maxDemo.max(a, b);
    		float m=9.8f,n=8.8f;
    		maxDemo.max(m, n);
    		maxDemo.max(6.6f, 3.33f);
    
    	}
    
    }
    
    
  • 带参带返回值方法

    package com.imooc.method;
    
    public class FacDemo {
    	public int fac(int n) {//定义求阶乘的方法
    		int s=1;
    		for(int i=1;i<=n;i++) {
    			s*=i;
    		}
    		return s;
    	}
    
    	public static void main(String[] args) {
    		//用方法求5的阶乘
    		FacDemo ff=new FacDemo();
    		int a=ff.fac(5);
    		System.out.println("5的阶乘为:"+a);
    		//求1-5的阶乘累加和
    		int sum=0;
    		for(int i=1;i<=5;i++) {
    			a=ff.fac(i);
    			sum+=a;
    		}
    		System.out.println("1-5的阶乘累加和为:"+sum);
    
    	}
    
    }
    
    

    方法的定义在类的内部定义

    方法一般定义在主方法之前,放在后面也不影响

    方法不能嵌套定义

数组作为方法参数

package com.imooc.method;

public class ArrayMethod {
	public void printArray(int[] arr) {//打印输出一维数组的元素
		for(int i=0;i<arr.length;i++) {
			System.out.print(arr[i]+"    ");
		}
		System.out.println();
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        int[] a= {1,2,3,4,5};
        ArrayMethod am=new ArrayMethod();
        am.printArray(a);
	}

}

//查找数组元素的值

package com.imooc.method;

import java.util.Scanner;

public class ArraySearch {
     public boolean search(int n,int[] arr) {
    	 boolean flag=false;
    	 for(int i=0;i<arr.length;i++) {
    		 if(arr[i]==n) {
    			 flag=true;
    		 }
    	 }
    	 return flag;
     }
	public static void main(String[] args) {
		// TODO Auto-generated method stub
       int[] a={1,2,3,4,5};
       System.out.println("请输入一个需要查找的数字:");
       Scanner sc=new Scanner(System.in);
       int m=sc.nextInt();
       ArraySearch ss=new ArraySearch();
       boolean flag=ss.search(m, a);
       
       if(flag)System.out.println("找到了");
       else System.out.println();
       sc.close();
      
	}

}

方法重载

方法名相同,参数列表(数量、数据类型等)不同

//定义3个方法,实现int、double、和数组类型和的问题

package com.imooc.method;

public class MaxDemo1 {
    public int plus(int m,int n) {
    	return m+n;
    	
    }
    public double plus(double m,double n) {
    	return m+n;
    }
    public int plus(int[] arr) {
    	int sum=0;
    	for(int i=0;i<arr.length;i++) {
    		sum+=arr[i];
    	}
    	return sum;
    }
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        int m=9,n=8;
        MaxDemo1 aa=new MaxDemo1();
        int a=aa.plus(m, n);
        System.out.println("int类型的和为:");
        System.out.println(a);
        System.out.println("double类型的和为:");
        double d=aa.plus(6.6, 7.7);
        System.out.println(d);
        System.out.println("数组类型的和为:");
        int[] b= {1,2,3,4,5};
        int arr=aa.plus(b);
        System.out.println(arr);
        
	}

}

参数的传递问题

普通变量传值

//对两个变量的值进行交换并打印输出

一个类中可以定义多个方法,主方法中进行调用方法时需要事先进行定义对象

参数在传递过程中,方法中的形参在变化,函数中的实际参数值并没有发生变化

而在方法中调用方法时,可以直接使用方法

package com.imooc.method;

public class ExchangeDemo {
	public void swap(int a,int b) {
		int temp;
		System.out.println("交换前:a="+a+",b="+b);
		temp=a;
		a=b;
		b=a;
		System.out.println("交换后:a="+a+",b="+b);
	}
	public void sswap(int m,int n) {
		
		System.out.println("交换前的m="+m+",n="+n);
	
		swap(m, n);//注意这里的调用,方法中调用方法
	    System.out.println("交换后的m="+m+",n="+n);
	}

	public static void main(String[] args) {
		// 
		int m=4,n=5;
		ExchangeDemo ee=new ExchangeDemo();
		ee.sswap(m, n);

	}

}

数组作为方法参数的传值问题

与普通变量传值不同,主方法中的数组在进行自定义方法的调用后,主方法中数组的值也会相应发生变化

//数组指向了同一片内存空间

可变参数列表

public void sum(int... n){};      //int... n;定义可变参数
package com.imooc.method;

public class ArgsDemo1 {
     public void sum(int... n) {
    	 int sum=0;
    	 for(int i:n) {
    		 sum=sum+i;
    		
    	 }
    	 System.out.println("sumary="+sum);
     }
	public static void main(String[] args) {
		// 
         ArgsDemo1 aa=new ArgsDemo1();
         aa.sum(1);        //参数数量可变
         aa.sum(1,2);
         aa.sum(23,22,11);
		

	}

}

参数列表中如果有两个以上的参数,可变参数一定是在最后的

package com.imooc.method;

public class ArgsDemo2 {
	public void search(int m,int... n) {//注意值了的可变参数位置,如果不是在最后,会报错
		boolean flag=false;
		for(int i:n) {
			if(m==i) flag=true;
		}
		if(flag) {
			System.out.println("找到了"+m);
			
		}else {
			System.out.println("没找到"+m);
		}
	}

	public static void main(String[] args) {
		// 
		ArgsDemo2 aa=new ArgsDemo2();
		aa.search(3,1,2,3,4,5);
		//这里与数组之间的用法
        int[] arr= {1,2,3,4,5,6};//最后程序运行成功即能说明,可以将数组传递给可变参数列表
        aa.search(2, arr);
	}

}


可以将数组传递给可变参数列表

关于有可变参数的方法重载

在方法定义中,会认为当前的两个search方法重复定义,而不是重载

数组作为参数时,不能将多个值传递给数组

一个方法只能有一个可变参数

可变参数的方法是最后被访问的

文档注释

生成文档注释:

命令行–>转到文件目录下–>输入命令

javadoc -d doc 文件名.java

会生成一个doc目录文件,打开index.html 查看

//小错误:容易出现编码错误

javadoc -d doc 文件名.java -encoding utf-8 -charset utf-8 -d path

方法的调试

按F5 键可以跳到方法内调试

F7 由方法内部返回调用处

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值