数组 二维数组

来源:互联网 发布:linux epoll socket 编辑:程序博客网 时间:2024/06/11 18:20
基本数据类型——传值
基本数据类型只占一块空间,放的是值,定义两个基本数据类型变量,每个都是一个独立的空间, //基本数据类型的变量传递的是变量的值
int a=10;
int b=a; //相当于 int b=10
b=20;
System.out.println(a+","+b);
这里输出的结果为 10,20


引用数据类型——传引用

引用数据类型,实际存放在堆空间里,传递的是引用关系,相当于存储的同一个对象,改变其中一个值,另一个也会改变;相当于两把钥匙对应同一个柜子,改变值,相当于通过一把钥匙,去把柜子里的东西改变,柜子的东西改变了,就算是用另一把钥匙去开柜子,里面的东西就是被改变过的。

引用数据类型 特点:创建对象是首先在堆内存中创建数据,然后会在栈内存空间创建一个引用地址
int[] ai = {13,14};
int[] bi = ai;
int []ci =new int[2]; //这里是有默认值 0
System.out.println(ai); //输出的引用地址为 [I@15db9742
System.out.println(bi); //这与ai的引用地址是相同的 两个指向同一个对象
bi[0]=22;
bi[1]=33;
System.out.println(ai[0]);
System.out.println(ai[1]);
这里输出结果为 [I@15db9742
[I@15db9742
22
33


堆内存用来存放由new创建的对象和数组。
在堆中产生一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在栈内存中的首地址 ,栈中的这个变量就成了数组或对象的引用变量。引用变量就相当于是为数组或对象起一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。

操作————数组排序
工具类 Arrays
Arrays类是JDK提供的专门用于操作数组的工具类,位于java。util包中。
直接调用Arrays类的方法去操作数组

常用方法:
boolean equals (arrays 1 ,arrays 2); 比较两个数组是否相等——返回值布尔
判断两个数组内容是否相等,比较个数,顺序,值是否相等。判别的是hashcode,常见数据类型的hashcode是一样的,要是数组存的是引用数据类型,就不是一样的。
System.out.println(Arrays.equals( a ,b));

voidsort(array) 对数组array的元素进行升序排列
Arrays.sort(a);

StringtoString(array); 将数组中的元素转化为字符串
String str=Arrays.toString(a);

void fill(array,val) 把数组所有元素的值赋为val

copyof(array,length) 把数组array赋值成一个长度为length的新数组。
把一个原有的数组复制到另一个新的数组中
参数1:原数组 参数2:新数组的长度 新数组的长度可以大于 原数组

int binarySearch(array,val); 查询元素值val 在数组array中下标
通过二分法的方式找对应元素的下标
这个必须通过排序才能够正确

hashcode不同代表两个对象,hashcode相同不一定是一个对象。



二维数组


一维数组里面存储的是任何数据类型
二维数组里面存储的是数组类型


int [ ][ ] a={{1,2},{2,3,4}};
//声明变量
int [ ][ ] b;
//分配空间
b=new int [2][3];
b[0][0]=1;

以为数组和二维数组的使用方法是类似的,只是【】改为【】【】
定义的时候也可以不写第二层数组的元素的个数
int [][] c=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];
所以二位数组第二层的数组长度是可以不一样的。


这个并不是真正意义上二位数组,其实就是数组的数据类型还是数组,在数组里面放了数组。
原创粉丝点击