二维数组的定义(动态初始化、静态初始化)、初始化格式及其操作、java中的参数传递方式,面向对象的基本概念

java中的二维数组
数组中的元素是 一维数组 ,这样的数组叫做二维数组
格式
动态初始化:数据类型[][] 变量名 = new 数据类型[m][n]
静态初始化:数据类型[][] 变量名 = {{},{},{}...}
m表示的是有多少个二维数组,n表示的是每个一维数组有多少个元素


注意:以下格式也是可以定义二维数组的
数据类型 数组名[][]=new 数据类型[m][n];
数据类型[] 数组名[]=new 数据类型[m][n];
当然,这2种几乎不会用到,了解即可


针对一般情况下的定义格式:数据类型[][] 数组名=new 数据类型[m][n];
其实我们可以这样去看,仍然把它当作是一个一维数组,只不过它的元素的数据
类型是一维数组罢了
比如int[][] arr=new arr[3][3];
上面的语句中我们将 int[]看作一体,int[]即是数组元素的数据类型,同样
后面的new arr[3]也是新建了数组元素个数为3的数组,将这部分看作一部分其实
就很好理解了。 


格式二:
int[][] arr = new int[3][];
数据类型[][] 变量名=new 数据类型[m][];
arr[0] = new int[2];//二维数组的各个元素的数组元素个数可以不一致
arr[1] = new int[3];
arr[2] = new int[1];
这次没有直接给出一维数组的元素个数,可以动态的给出


格式三:静态初始化
数据类型[][]数组名 = new 数据类型[][]{{},{}..}
也可以使用简化版形式
数据类型[][]数组名 ={{},{}..}
上面两种格式是等价的,所以一般使用简化版的格式
例如
int[][] arr={{1,2,3},{4,5},{6}}


注意:
虽然说基本数据类型之间由小的类型赋值给大的类型是可以的比如 float a = b(b是int型的)
但是数组不可以这样
float[][] arrFloat;
int[][] arrInt = {{1},{2},{3}}
arrFloat = arrInt;
这样是不可以的


二维数组的操作:
1.二维数组的遍历
“从外至内”循环
//二维数组求和
public static float sumArray(int[][] arr){
float result = 0;
for(int i = 0;i<arr.length;i++){
for(int j = 0;j<arr[i].length;j++){
result += arr[i][j];
}
}
return result;
}
2.打印杨辉三角
1
1  1
1  2  1
1  3  3  1
1  4  6  4  1
1  5  10 10 1
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字(1~10):");
int n = sc.nextInt();
int[][] arr = new int[n][];
for(int i =0;i<arr.length;i++){
arr[i] = new int[i+1];
for(int j = 0;j<=i;j++){
if(j==i||j==0){
arr[i][j]=1;
}else{
arr[i][j] = arr[i-1][j-1]+arr[i-1][j];
}
}
}
printArray2(arr);

java中参数传递的分析:
java中调用方法的时候有值传递跟地址传递两种方式
在java中对于基本数据类型的参数,在传递给被调用方法时传递的参数仅仅是将“值”传递过去,
被调用方法接受参数之后,将值赋值给方法内的局部变量,所以操作结束后,原本的变量的值并不会改变
而引用类型变量中存储的是对象的地址!于是在传递给方法的参数变量的时候,传递的也是对象的地址
所以在被调用方法对这个地址中的值进行改变的时候,原引用变量对应的对象的值也跟着改变了。


方法定义中的参数又叫做形式参数,我们在调用方法时传递过去的参数又叫做实际参数,所以参数传递的规则可以总结为:
基本数据类型:形式参数的改变对实际参数没有影响
引用数据类型: 形式参数的改变的实际参数有直接影响
//基本数据类型的参数
public static void main(String[] args){
int a = 10;
int b = 20;
change(10,20);
System.out.println(a+","+b)//10,20
}
public static void change(int a,int a){
a += b;
b += a;
}
//引用数据类型的参数
public static void change(int[] arr){
arr[0]+=10;
}




面向对象:
思想引入:
平时写代码的时候我们会想到将一些常用的操作写入方法,但是如果方法越来越多的话,那我们就需要将
方法也封装起来(因为你不可能将所有要用到的方法全部写到你现在执行的这个类中),即将方法封装到类中,
比如当我们现在需要对数组进行操作,我们需要用到之前写好的方法,那我们就可以将对类操作的这个方法封装
我们定义好的一个专门对数组进行操作的类中,并所有我们自己定义的与数组有关的方法都写到这个类中,
那么下次我们再次需要对数组进行操作的时候,就直接调用这个与数组有关的类然后选择相应的方法就可以了。


暂时先学到这里,明日继续!
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值