赞
踩
public class test8 { public static void main(String[] args) { //格式 //静态初始化 //完整格式 //数据类型 [] 数组名=new 数据类型[]{元素1,元素2...}; //简化格式 //数据类型 [] 数组名={元素1,元素2...}; //需求1:定义数组存储5个学生的年龄 int[] arr1=new int[]{11,12,13,14}; int[] arr2={11,12,13,14}; //需求2:定义数组存储3个学生的姓名 String[] arr3=new String[]{"zhangsan","lisi","wangwu"}; String[] arr4={"zhangsan","lisi","wangwu"}; //需求3:定义数组存储4个学生的身高 double[] arr5=new double[]{1.93,1.65,1.68,1.71}; double[] arr6={1.93,1.65,1.68,1.71}; } }
解释一下地址值的格式含义
[: 表示当前是一个数组
D: 表示当前数组里面的元素都是double类型的
I: 表示当前数组里面的元素都是int类型的
@: 表示一个间隔符号(固定格式)
776ec8df才是数组真正的地址值(十六进制)
平时我们习惯吧这个整体叫做数组的地址值
public class test8 { public static void main(String[] args) { //格式 //静态初始化 //完整格式 //数据类型 [] 数组名=new 数据类型[]{元素1,元素2...}; //简化格式 //数据类型 [] 数组名={元素1,元素2...}; //需求1:定义数组存储5个学生的年龄 int[] arr1=new int[]{11,12,13,14}; System.out.println(arr1); // int[] arr2={11,12,13,14}; // // //需求2:定义数组存储3个学生的姓名 // String[] arr3=new String[]{"zhangsan","lisi","wangwu"}; // String[] arr4={"zhangsan","lisi","wangwu"}; // // //需求3:定义数组存储4个学生的身高 // double[] arr5=new double[]{1.93,1.65,1.68,1.71}; // double[] arr6={1.93,1.65,1.68,1.71}; /*扩展: 解释一下地址值的格式含义 [: 表示当前是一个数组 D: 表示当前数组里面的元素都是double类型的 I: 表示当前数组里面的元素都是int类型的 @: 表示一个间隔符号(固定格式) 776ec8df才是数组真正的地址值(十六进制) 平时我们习惯吧这个整体叫做数组的地址值 */ } }
public class test9 { public static void main(String[] args) { /*利用索引对数组中的元素进行访问 1.获取数组里面的元素 格式: 数组名[索引] */ int[] arr={1,2,3,4}; /*获取数组里面的第一个元素 其实就是0所以上对应的元素 int number=arr[0]; System.out.println(number);//1 获取数组中1索引上对应的数据,并直接打印出来 System.out.println(arr[1]);//2 */ //2.把数据存储到数组中 //格式: 数组名[索引]=具体数据/变量; //细节:一旦覆盖之后,原来的数据就不存在了 arr[0]=100; System.out.println(arr[0]); } }
public class test10 { public static void main(String[] args) { //1.定义数组 int arr[]={1,2,3,4,5}; //2.获取数组里面所有的元素 //格式: 数组名[索引] /* System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println(arr[3]); System.out.println(arr[4]); */ //利用循环改进代码 //开始条件:0 //结束条件:数组的长度-1(最大索引) //但是当原始数组里面的元素过多,数量不便于数出时,5的位置处该写什么呢? /*for (int i = 0; i < 5; i++) { //i:0,1,2,3,4 System.out.println(arr[i]); }*/ //在Java当中,关于数组的一个长度属性,length //调用方式: 数组名.length for (int i = 0; i < arr.length; i++) { //i:0,1,2,3,4 System.out.println(arr[i]); } //扩展: //自动的快速生成数组的遍历方式 //idea提供的 //数组名.fori for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }
public class test11 { public static void main(String[] args) { /* 定义一个数组,存储1,2,3,4,5 遍历数组得到每一个元素,求数组里面所有的数据和 */ //分析 //1.定义一个数组并添加数据 int[] arr={1,2,3,4,5}; //求和变量 int sum=0; //2.遍历数组得到一个数据,累加求和 for (int i = 0; i < arr.length; i++) { //i 依次表示数组里面的每一个索引 //arr[i] 依次表示数组里面的每一个元素 sum=sum+arr[i]; } //当循环结束之后,sum的值就是累加之后的结果 System.out.println(sum); } }
import javax.imageio.metadata.IIOMetadataFormatImpl; public class test12 { /* 定义一个数组存储1,2,3,4,5,6,7,8,9,10 遍历数组的到每一个元素,通技术组里面一共有多少能被3整除的数字 */ public static void main(String[] args) { //分析: //1.定义一个数组,存储1,2,3,4,5,6,7,8,9,10 int[] arr={1,2,3,4,5,6,7,8,9,10}; //定义一个变量,用来统计次数 int count=0; //2.遍历数组得到每一个元素 for (int i = 0; i < arr.length; i++) { //i 表示数组里面的每一个索引 //arr[i] 表示数组里面的每一个元素 //3.判断当前元素是否为3的倍数,如果是的话,统计变量自增一次 if (arr[i] % 3 == 0) { count++; } } System.out.println("数组中能被3整除的数字有"+count+"个"); } }
public class test13 { public static void main(String[] args) { /* 定义一个数组存储1,2,3,4,5,6,7,8,9,10 遍历得到每一个元素 要求: 如果是奇数,将当前数字扩大两倍 如果是偶数,将当前数字变为原来的1/2 */ //分析 //1.定义一个数组存储数据 int[] arr={1,2,3,4,5,6,7,8,9,10}; //2.遍历数组得到每一个元素 for (int i = 0; i < arr.length; i++) { if(arr[i]%2==0){ arr[i]=arr[i]/2; }else { arr[i]=arr[i]*2; } } //遍历数组 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }
整数类型:默认初始化值0
小数类型:默认初始化值0.0
字符类型:默认初始化值'\u0000' 空格
布尔类型:默认初始化值 false
引用数据类型:默认初始化值 null
public class test14 { public static void main(String[] args) { /* 定义一个数组,用来存班级中50个学生的姓名 姓名未知,等学生报名之后,再进行添加 */ //格式: //数据类型[] 数组名=new 数组类型[数组的长度] //在创建的时候,由我们自己指定数组的长度,由虚拟机给出默认的初始化值 String[] arr=new String[50]; //添加学生 arr[0]="zhangsan"; arr[1]="lisi"; //获取 System.out.println(arr[0]);//zhangsan System.out.println(arr[1]);//lisi System.out.println(arr[2]);//打印出来的是默认初始化值null //数组默认初始化值的规律 //整数类型:默认初始化值0 //小数类型:默认初始化值0.0 //字符类型:默认初始化值'\u0000' 空格 //布尔类型:默认初始化值 false //引用数据类型:默认初始化值 null int[] arr2=new int[3]; System.out.println(arr2[0]);//0 System.out.println(arr2[1]);//0 System.out.println(arr2[2]);//0 } }
(1)只要是new出来的,一定是在堆里面开辟了一个小空间
(2)如果new了很多次,那么在堆里面有多个小空间,每个小空间都有各自的数据
当两个数组指向同一个小空间时,其中一个数组对小空间中的值发生了改变,那么其他数组再次访问的时候都是修改之后的结果了
public class test15 { public static void main(String[] args) { //1.定义一个数组 int[] arr={1,2,3,4,5}; //长度:5 //最小索引:0 //最大索引:4(数组的长度-1) System.out.println(arr[10]); //小结: //索引越界异常 //原因:访问了不存在的索引 //避免:索引的范围 } }
索引越界异常
原因:访问了不存在的索引
避免:索引的范围
public class test16 { public static void main(String[] args) { //定义数组求最大值: 33,5,22,44,55 //扩展问题 //1.根据求最大值的思路,自己改写一下求最小值 //2.为什么max要记录为arr[0],默认值不能为0呢? //不能写0,当数组元素里面有负数时,这时可能最终结果是数组原来不存在的数据 //max的初始值一定要是数组中的值 //循环的开始条件一定是0吗 //循环的开始条件如果是0,那么第一次循环的时候就是自己和自己比了一下,对结果没有任何影响,但是效率偏低 //为了提高效率,减少一次循环的次数,循环开始条件可以改为1 //1.定义数组用来存储5个值 int[] arr={33,5,22,44,55}; //2.定义一个变量max用来存储最大值 //临时认为0索引的数据是最大的 int max=arr[0]; //3.循环获取数组中的每一个元素 //拿着每一个元素和max比较 for (int i = 0; i < arr.length; i++) { //i索引 arr[i]元素 if(arr[i]>max){ max=arr[i]; } } //4.当循环结束之后,max记录的是数组中的最大值 System.out.println(max);//55 } }
import java.util.Random; public class test17 { public static void main(String[] args) { /* 需求: 生成10个1-100之间的随机数存入数组 1.求出所有数据的和 2.求所有数据的平均数 3.统计有多少个数据比平均数小 */ //分析: //1.定义数组: int[] arr=new int[10]; //2.把随机数存入到数组中 Random r=new Random(); for (int i = 0; i < arr.length; i++) { int number=r.nextInt(100)+1; //把生成的随机数添加到数组中 arr[i]=number; } //1.求和 int sum=0; for (int i = 0; i < arr.length; i++) { sum=sum+arr[i]; } System.out.println("数组中所有数据的和为:"+sum); //2.平均数 int avg=sum/arr.length; System.out.println("数组中平均数为:"+avg); //3.统计有多少个数据比平均数少 int count=0; for (int i = 0; i < arr.length; i++) { if(arr[i]<avg){ count++; } } System.out.println("在数组中,一共有"+count+"个数据,比平均数小"); //遍历数据,验证答案 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]+" "); } } }
public class test18 { public static void main(String[] args) { /* 需求:定义一个数组,将数组中0索引和最大索引的值进行交换 */ int[] arr={1,2,3,4,5}; //利用第三方变量进行交换 int temp=arr[0]; arr[0]=arr[4]; arr[4]=temp; //遍历数组 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i] + " "); } } }
一直交换到 i = j 或者 i > j
public class test19 { public static void main(String[] args) { /* 需求:定义一个数组,存入1,2,3,4,5,交换首尾索引对应的元素 交换前:1,2,3,4,5 交换后:5,2,3,4,1 */ int[] arr={1,2,3,4,5}; //利用循环去交换数据 for (int i = 0,j=arr.length-1; i <j; i++,j--) { //交换变量i和变量j指向的元素 int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } //当循环结束之后,那么数据中的数据就实现了首尾交换 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]+" "); } } }
import java.util.Random; public class test20 { public static void main(String[] args) { /* 需求:定义一个数组,存入1~5,要求打乱数组中所有数据的顺序 */ //难点: //如何获取数组中的随机索引 // int[] arr={1,2,3,4,5}; //索引范围: 0 1 2 3 4 // Random r=new Random(); // int randomindex=r.nextInt(arr.length); // System.out.println(randomindex); //1.定义数组存储1-5 int[] arr={1,2,3,4,5}; //2.循环遍历数组,从0索引开始打乱数据的顺序 Random r=new Random(); for (int i = 0; i < arr.length; i++) { //生成一个随机索引 int randomindex=r.nextInt(arr.length); //拿着随机索引指向的元素,与i指向的元素进行交换 int temp =arr[i]; arr[i]=arr[randomindex]; arr[randomindex]=temp; } //当循环结束之后,那么数组中所有的数据已经打乱顺序了 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]+" "); } } }
今天的内容你是否有所收获呢友友们
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。