20200923冯强
学习总结:
数组
-
数组是引用类型默认值为null
-
定义数组的几种方式:
//不能再后面new的[]中写入长度 报错 int[] nums = new int[] {1,2,3};
//先给定数组长度 int类型初始值都为0
int[] nums2 = new int[4];
//简便写法
int[] nums3 = {1,2,3};
//但是这种写法错误
//int[] nums4; nums4={1,2,3}; -
new都会在堆中开辟空间 并且栈中存放引用的地址
-
for-each
int[] nums ={1,2,3}; for(int i : nums){
System.out.println(i);
}//foreach中没有数组下标 -
二维数组:
int[][] arrs = new int[][]{{1,2,3},{1,2,3}}; 一维数组存放的也是一个数组
-
Arrays:
toString 把数组转换为String
equels 首先比较地址 不同比较是否为null 不是null比较每个元素
copeof 创建一个新数组(源码)从传入的数组中取长度 若传入的数组不够 在末尾填默认值 若超出则取新数组的长度
System类
- out输出流 in输入流 err输入错误
- arraycope: src(原数组) dest(将要改变的数组) srcPos(从原数组下标第几位开始截取) destPos(新数组第几位开始添加) length(截取的长度)
冒泡排序
int[] sums =new int [names.length];
//最后一个元素不用比较所以-1
for(int i=0;i<sums.length-1;i++) {
//防止数组越界-1 不和已经最大的数再比较-i
for(int j=0;j<sums.length-1-i;j++) {
if(sums[j]<sums[j+1]) {
int temp;
temp=sums[j];
sums[j]=sums[j+1];
sums[j+1]=temp;
}
}
}
二分查找
public static int Binary(int[] arr, int key, int low, int high) {
while (low <= high) {
//取数组下标的中间数
int mid = (low + high) / 2;
//如果中间的数大于要查找的数
if (arr[mid] > key) {
//设置最后位比中间数小1个
high = mid - 1;
} else if (arr[mid] < key) {
low = mid + 1;
} else {
//相等时返回该数下标
return mid;
}
}
//若没有该数返回-1
return -1;
}
心得体会:
int[] nums = {2, 11, 33, 44, 55, 66, 277};
//newNums = {2, 11, 44,55, 66, 277}
int [] newNums = new int[nums.length-1];
//newNums =Arrays.copyOf(nums, 2);
//copyOf方法内部new的一个数组赋值给newNums
//此时的newNums长度为2若执行倒数第二行代码会报越界错误
System.arraycopy(nums, 0, newNums, 0, 2);
System.arraycopy(nums, 3, newNums, 2, 4);
System.out.println(Arrays.toString(newNums));
近期评论