目录
1、数组的声明和使用
int[] array = new int[数字];//动态,一旦数组确定长度,数组的大小就固定了
也可以使用下标进行赋值如:
array[0] = 46;
array[1] = 354;
int[] array = {5,6,4,8,12,65};//静态
2、arraycopy的学习
* 参数声明:
* src:源数组(要拷贝的数组)
* srcPos:源数组的元素的索引位置(从第几个元素开始拷贝)
* dest:目标数组(要拷贝进的数组)
* destPos:目标数组的索引位置
* length:拷贝的元素个数
System.arraycopy(src, srcPos, dest, destPos, length);
3、类型的范围
byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1)。
short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)。
int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)。
long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)。
float 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)占用4个字节。
double 1.797693e+308~ 4.9000000e-324 占用8个字节。
booleam 只有两个值true或者false。
char的范围:\u0000 ----\uFFFF。
4、查找方式
4.1线性查找
从数组的第一个元素依次的比较,如果该元素==关键字元素,返回该元素对应的索引。如果没有找到,返回-1。例子:
public static int linearSearch(int key, int[] list) {
for(int i = 0; i < list.length; i++) {
if(key == list[i]) {
return i;
}
}
return -1;
}
4.2二分查找
又成对半查找:前提是数组为有序数组。例子如下:
public static int binarySearch(int key, int[] list) {
int low = 0;
int high = list.length - 1;
while(high >= low) {
int mid = (low + high) / 2;
if(key == list[mid])
return mid;
else if(key <= list[mid]) {
high = mid -1;
}else {
low = mid + 1;
}
}
return -1;
}
也可以直接调用Arrays里的方法:
Arrays.binarySearch(数组,查找的元素)
5、可变长参数列表
* 参数个数由用户决定
* 在jdk1.6以前,只能通过数组传递不定个数的整数。
* jdk1.6以后,可以使用可变参数来完成
* 本质是:数组
*
* 注意:一个方法只能存在一个可变参数;可变参数只能存在参数列表的末尾。
6、冒泡排序
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。例子如下:
/**
* 冒泡排序(下沉排序)
* @param list 将list中的元素进行降序排列
*/
public static void sink(int []list) {
boolean needNextPass = true;
for(int i = 1; i < list.length && needNextPass; i++) {
needNextPass = false;
for(int j = 0; j < list.length - i; j++) {
if(list[j] < list[j + 1]) {
int temp = list[j];
list[j] = list[j + 1];
list[j + 1] = temp;
needNextPass = true;
}
}
}
}
如果要进行升序的话,可以调用Array.sort的方法
Arrays.sort(数组名);
System.out.println("排序后:"+Arrays.toString(数组));
/* 打印排序后的数组 */
Arrays的toString()方法是一个重载的方法。
7、二维数组
7.1二维数组的使用和声明
int[][] array = new int[数字][];//长度为多少行的二维数组,取决于[]里数字的大小
//获取数组的长度
System.out.println(array.length);
//二维数组中的每个元素又是一个一维数组
System.out.println(array[0]);
System.out.println(array[0].length);
二维数组的循环遍历
for循环遍历
for(int i = 0; i < array.length; i++) {
for(int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
foreach循环
for(int[] line : array) {
for(int ele : line)
System.out.print(ele + " ");
System.out.println();
}
7.2杨辉三角的应用
* 提示:
* 1、第一行有1个元素,第n行有n个元素
* 2、每一行的第一个元素和最后一个元素都是1
* 3、从第三行开始,对于非第一个元素和最后一个元素的元素
System.out.println("请输入杨辉三角的行数:");
Scanner input = new Scanner(System.in);
int line = input.nextInt();
input.close();
int[][] triangle = new int[line][];
//初始化每列的元素大小
for(int i = 0; i < triangle.length; i++) {
triangle[i] = new int[i + 1];
}
//初始化杨辉三角的值
for(int i = 0; i < triangle.length; i++) {
triangle[i][0] = triangle[i][i] = 1;
for(int j = 1; j < triangle[i].length - 1;j++) {
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
}
for(int i = 0; i < triangle.length;i++) {
for(int j = 0; j <triangle[i].length; j++) {
System.out.printf("%5d",triangle[i][j]);
}
System.out.println();
}