目录
常规操作
package Last205;
public class Ashuzu {
public static void main(String[] args) {
//创建数组的格式
//常用格式1.创建数组的同时,指定数组的内容。
//数据类型[] 数组名称= {数据1,数据2,数据3,数据4....,数据n};
int [] ages = {10,11,12,13,14};
//常用格式2.创建数组,并指定长度,但是不指定数组中的内容。
//数据类型[]=数组名称 = new 数据类型[数组长度];
//数组长度通过int数据指定
int [] ages2 = new int[10];
//通过下标操作数组数据的方式:
//数组下标都是从0开始算的
//1.给数组某下标 赋值:数组名称[下标] = 值;
ages[0]=100;
//2.从数组某个下标 取值:数组名称[下标]
System.out.println(ages [0]);
ages2[0]=100;
System.out.println(ages2[0]);
//如何获取数组的长度: 数组名称.length
for (int index =0;index<ages.length;index++){
//index :0 1 2 3 4
System.out.println(ages[index]);
};
}
}
不常用数组定义格式
此处需要明白的是,[]是用来定义数组长度的,而{}是用来定义其中的内容的。
package Last205;
public class Bbuchangyongshuzugeshi {
public static void main(String[] args) {
//不常用数组的创建格式
//1.创建数组,不初始化,不定义长度和内容
//格式: 数据类型[] 数组名;
int [] nums ;
nums =new int[] {};
//不可以直接使用nums = {};的形式直接定义内容
// System.out.println(nums [0]);
//2.创建数组,并指定数组中的内容
//格式:数据类型[] 数组名称= new 数据类型[]{内容1,内容2,。。。};
int [] ages = new int[] {1,2,3,4};
}
}
数组的常见问题
package Last205;
public class Cshuzuwenti {
public static void main(String[] args) {
//数组常见问题
//1.数组下标越界问题
int []nums = {1,2,3,4};
System.out.println(nums[6]);
//2.空指针问题
int []nums2; //并未指定其值
// System.out.println(nums); 这样就是错误的,因为里边什么也没有
//但是如果想让这句话正确,那就再nums2前声明时赋值为null或者为static
// int static [] nums;语句扔在整个类的外边
int []nums3 =null;
System.out.println(nums3[2]);
}
}
最大最小值的问题
此处仅判断最大或最小,其余的不考虑。
package Last205;
public class Dzuidazuixiao {
public static void main(String[] args) {
//寻找数组中的最大最小值
//1.声明一个数组
int []nums= {10,20,50,60,70,50,90,80};
//2.创建一个变量,用于存储遍历数组时发现的最大的值
int n = nums[0];//直接让他等于数组的第一个数
//3.循环取出数组中的每一个内容,进行比较大小的操作
for (int i=1;i<nums.length;i++) {
//将数组中的每一个内容与之进行比较,大的替换,小的不算
n = n>nums[i]?n:nums[i]; //大于小于看要求使用
};
System.out.println(n);
}
}
冒泡排序
package Last205;
public class Emaopao {
/**
* 冒泡排序
* @param args
*/
public static void main(String[] args) {
int[] nums = {25,15,19,12,34,63};
int temp;
//外层循环控制的是, 比较的轮数。
//外层循环次数: length-1
for(int i=0;i<nums.length-1;i++) {
//内层循环控制的是,每轮比较的次数
//第i轮(i从0开始计算), 比较次数为:length-i-1
for(int j=0;j<nums.length-i-1;j++) {
if(nums[j]>nums[j+1]) {
//两两相比, 满足移动条件
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
//排序已经完成。 下面是遍历打印查看的过程
for(int i=0;i<nums.length;i++) {
System.out.println(nums[i]);
}
}
}
二分查找
package Last205;
public class Ferfen {
/**
* 二分查找(折半查找)
*/
public static void main(String[] args) {
int[] nums = {10,20,30,40,50,60,70,80,90};
//要查找的数据
int num = 20;
//关键的三个变量:
//1. 最小范围下标
int minIndex = 0;
//2. 最大范围下标
int maxIndex = nums.length-1;
//3. 中间数据下标
int centerIndex = (minIndex+maxIndex)/2;
while(true) {
System.out.println("循环了一次");
if(nums[centerIndex]>num) {
//中间数据较大
maxIndex = centerIndex-1;
}else if(nums[centerIndex]<num) {
//中间数据较小
minIndex = centerIndex+1;
}else {
//找到了数据 数据位置:centerIndex
break;
}
if(minIndex > maxIndex) {
centerIndex = -1;
break;
}
//当边界发生变化, 需要更新中间下标
centerIndex = (minIndex+maxIndex)/2;
}
System.out.println("位置:"+centerIndex);
}
}
多维数组
package Last205;
public class Gduoweishuzu {
public static void main(String[] args) {
/*
* 多维数组
*创建格式
*数据类型[] 数组名 = new 数据类型[长度];
*int [][] 二维数组名称 =new int [长度][];
**/
//声明一个二维数组
int [][]nums= new int [10][];
//给他的下标为0的赋值
nums[0] =new int [] {1,2,3};
//取出第0下标第3位数
System.out.println(nums[0][2]);
}
}