基本数据类型——传值
不同的的变量会分配不同的存储空间
改变一个变量值不会影响另一个变量值
引用数据类型——传引用
引用类型:所有的“类”,数组 引用类型赋值传递的是地址
堆内存:存放数据。 栈内存:存放引用地址,引用数据
对引用数据类型,赋值是把原对象的引用传递给另一个引用,两个引用指向同一块内存空间
例题:
package com.jredu.ch05;
/**
* 基本数据类型传值
* 引用数据类型传引用
* @author Yoga11s
*
*/
public class Ch01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 10;
// 基本数据类型只占一块空间,放的是值
// 定义两个基本数据类型变量,每一个都是独立的空间
int b = a;// 相当于 int b=10;
// 基本数据类型的变量传递的是变量的值
a = 20;
System.out.println(a + "," + b);
// 基本数据类型传值
int[] infoa = { 11, 22 };
int[] infob = infoa;
// 引用数据类型:创建对象时首先在堆内存中先创建数据
// 然后会在栈内存中创建一个引用地址
System.out.println(infoa);
System.out.println(infob);
infob[0] = 33;
infob[1] = 44;
System.out.println(infoa[0] + "," + infoa[1]);
// 引用数据类型传引用
int[] infoc = { 1, 2 };
infoc = infob;
System.out.println(infoc);
System.out.println(infoc[0] + "," + infoc[1]);
}
}
Arrays类
Arrays类是JDK提供专门用于操作数组的工具类,位于java.util包中。
直接调用Arrays类的方法操作数组,无需自己编码
Arrays类常用方法
(1)boolean equalls(aray1,array2):比较两个数组是否相等。
例如: int[] arr1={10,50,40,30};
int[] arr2={10,50,40,30};
int[] arr1={50,40,85};
System.out.printlnln(Arrays.equals(arr1,arr2));
System.out.printlnln(Arrays.equals(arr1,arr3));
结果: true
false
(2)void sort(array):对数组array的元素进行升序排列
例如: int[] arr1={10,50,40,30};
Arrays.sort(arr);
for(int elem : arr1){
System.out.println(" "+elem);
}
结果: 10 30 40 50
(3)String toStriing(array):该方法将会一个数组array转换成一个字符串
例如: int[] arr1={10,50,40,30};
Arrays.sort(arr1);
System.out.println(Arrays.toString(arr1));
结果: [10 , 30 , 40 , 50]
(4)void fill(array,val):把数组array所有元素都赋值为val
例如: int[] arr1={10,50,40,30};
Arrays.fill(arr1, 40);
System.out.println(Arrays.toString(arr1));
结果: [40 , 40 , 40 , 40]
(5)copyof(array,length):把数组array复制成一个长度为length的新数组
例如: char[] a={'a','b','c','d','e'};
//1.通过二分法的方式找对应元素的下标
//2.使用前提:必须经过排序才可以使用
int i=Arrays.binarySearch(a, 'd');
System.out.println(i);
char[] b={'e','a','c','b','d'};
Arrays.sort(b);
System.out.println(Arrays.toString(b));
int j=Arrays.binarySearch(b, 'e');
System.out.println(j);
结果: 3
[a, b, c, d, e]
4
(6)int binarySearch(array,val):查询元素值val在数组array中下标
例如: int[] a = { 1, 2, 3 };
//copyOf作用:把一个原有的数组内容复制到新数组中
//参数1:原数组 参数2:新数组长度
int[] b = Arrays.copyOf(a, a.length);
System.out.println(a);
System.out.println(b);
System.out.println(Arrays.toString(b));
结果: [I@15db9742
[I@6d06d69c
[1, 2, 3]
二维数组
使用数组:
1.声明数组 例如:int[][] a;
2.分配空间 例如:a = new int[2][3];
3.赋值 例如:a[0][0] = 8;
//第一步与第二步结合一块,声明数组并分配空间
int[][] b=new int[5][];
b[0] = new int[5];
b[1] = new int[6];
//1.2.3步骤结合一起,声明数组、分配空间并赋值
int[][] c={{1},{1,2},{1,2,3},{1,2,3,4}};
初始化二维数组
int[][] scores={{90,85,92,78,54},{76,63,80},{87}};
例题:
package com.jredu.ch05;
public class Ch10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 一维数组和二维数组的区别
// 一维数组里面存储的是任意类型
// 二位数组里面存储的是数组类型
// 1.声明数组
int[][] a;
// 2.分配空间
// a = new int[5][6];
// 分配第一重的数组的空间
a = new int[5][];
// 分配第二重数组的空间大小
a[0] = new int[5];
a[1] = new int[6];
a[2] = new int[7];
a[3] = new int[8];
a[4] = new int[9];
//3. 赋值
a[4][6] = 3;
// 处理数据
System.out.println(a[4][6]);
//第一步与第二步结合一块,声明数组并分配空间
int[][] b=new int[4][5];
//1.2.3步骤结合一起,声明数组、分配空间并赋值
int[][] c={{1},{1,2},{1,2,3},{1,2,3,4}};
}
}