Java 入门 9 数组
静态初始化数组
public class ArrayDemo { public static void main(String[] args) { //静态初始化数组 //数据类型 [] 数据名称=new 数据类型[]{元素1,元素2,......} //全写 int [] arr1=new int[]{1,3,5,6,7,8}; //简写 int [] arr2={2,5,6,7,8}; //注意:数组变量名中存储的是数组在内存中的地址,数组是引用类型 System.out.println(arr1);//[I@28d93b30 System.out.println("-----------"); System.out.println(arr2);//[I@1b6d3586 } }
动态初始化数组
public class ArrayDemo3 { public static void main(String[] args) { //目标 学会动态初始化数组的定义和使用 double [] scores=new double[3];//[0.0,0.0,0.0] //赋值 scores[0]=99.4; System.out.println(scores[0]); System.out.println(scores[2]); String [] names=new String[5]; names[0]="张飞"; names[3]="关羽"; System.out.println(names[0]);//张飞 System.out.println(names[1]);//null System.out.println(names[2]);//null System.out.println(names[3]);//关羽 } }
数组的取值,最大索引值,数组的length;
public class ArrayDemo2 { public static void main(String[] args) { //目标学会访问数组内的元素 int [] arr={12,21,44}; /* 取值:数组名称[索引] 数组的最大索引值:arr.length-1; 前提是 数组的元素个数大于0 *通过数组的索引获取数组指定索引内的值 */ System.out.println(arr[1]);//21 System.out.println(arr[2]);//44 //数组的长度书写:length System.out.println(arr.length);//3 } }
动态数组的元素默认值规则
public class ArrayDemo4 { public static void main(String[] args) { //目标掌握动态初始化 元素默认值的规则 //1 整型数组的元素默认值都是0 int[] arr=new int[10]; System.out.println(arr[0]);//0 System.out.println(arr[9]);//0 //2 字符数组元素的默认值是多少了?0 char[] chars=new char[199]; System.out.println(chars[0]);//0对应的字符是没有的 打的乱码 System.out.println((int)chars[1]);//0 强制转换后是0 System.out.println((int)chars[2]);//0 System.out.println("======"); //3 浮点型数组的元素默认值是0.0; float[] floats=new float[10]; System.out.println(floats[0]); System.out.println(floats[1]); System.out.println(floats[2]); //4 布尔类型的数组 false boolean[] bools=new boolean[18]; System.out.println(bools[0]);//false System.out.println(bools[1]);//false System.out.println(bools[2]);//false //5 引用类型的数组 null String[] strs=new String[19]; System.out.println(strs[0]);//null System.out.println(strs[1]);//null System.out.println(strs[2]);//null } }
数组遍历循环 解决问题
import java.util.Random; import java.util.Scanner; public class ArrayDemo5 { public static void main(String[] args) { //目标:学会进行数组元素的遍历 int[] ages={12,24,43}; //利用for循环遍历数组 for(int i=0;i<ages.length;i++){ System.out.println(ages[i]); } //arr.fori+回车 快速敲除for循环遍历 for (int i = 0; i < args.length; i++) { //arr[i].sout+回车 快速 写出控制台打印 System.out.println(args[i]); } //1需求 求出某部门5名员工的销售额15,12,45,57,89 计算他们部门的销售总额度 int [] arr1={15,12,45,57,89}; int sum=0; for (int i = 0; i < arr1.length; i++) { sum+=arr1[i]; } System.out.println("销售总额是"+sum); //2需求 数组求最大值 int [] arr2={15,12,45,57,89}; int maxNum=arr2[0]; for (int i = 1; i < arr2.length; i++) { if(maxNum<=arr2[i]){ maxNum=arr2[i]; } } System.out.println(maxNum + "最大值"); //3 需求 在1-28之间生成5个数字(无所谓是否重复),让大家来菜数字 Random r=new Random(); int [] arr3=new int[5]; for (int i = 0; i < arr3.length; i++) { arr3[i]=r.nextInt(27)+1; System.out.println(arr3[i]); } Scanner Scan=new Scanner(System.in); System.out.println(arr3[1]); int data; boolean result=false; while (true){ System.out.println("请输入你要猜的数字0-28"); data=Scan.nextInt(); for (int i = 0; i < arr3.length; i++) { if(data==arr3[i]){ result=true; System.out.println("你猜中了"); System.out.println("猜中的位置"+i); System.out.println(arr3); break ; } } if(result){ break; }else{ System.out.println("你猜测的数据在真个数字中不存在,请继续"); } } } }
冒泡排序
public class ArrayDemo6 { public static void main(String[] args) { //冒泡排序 //1定义一个数组 int [] arr={11,22,333,44,62,10,4,65,8,9}; //开始循环排序 arr.length个数 则第一个数只需要和arr.length-1个数对比 int num; //这种写法 // for (int i = 0; i < arr.length-1; i++) { // for (int i1 = i+1; i1 < arr.length; i1++) { // if(arr[i]>arr[i1]){ // num=arr[i1]; // arr[i1]=arr[i]; // arr[i]=num; // } // } // } //两种写法 for (int i = 0; i < arr.length-1; i++) { for (int j = 0; j < arr.length-i-1; j++) { if(arr[j]>arr[j+1]){ num=arr[j+1]; arr[j+1]=arr[j]; arr[j]=num; } } } System.out.println("排序完成"); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }