资讯动态

java基础语法-数组

发布时间:2026/9/12 20:34:50 来源:尧图企业网站定制
一 认识数组首先我们要知道为什么要有数组这个东西我们在存储一个数据时会想到创建一个变量去存但是一个变量只能存一个数据这时我们就引入了数组这个概念数组可以看作一个容器用来存储多个相同类型的数据。二 学习目标要掌握数组的基本用法就要学会上面的内容1 数组的静态初始化静态初始化包括两个部分初始化静态其中的静态就是指你在定义的时候已经知道数据是多少。具体的定义格式和小练习如下public class ArrayDemo1 { public static void main(String[] args) { /* 数组的静态初始化 1. 定义数组存储3位同学的年龄 2. 定义数组存储5位同学的身高 3. 定义数组存储3位同学的名字 静态初始化 完整格式: 数据类型[] 数组名 new 数据类型[]{元素1, 元素2, 元素3, ..., 元素n}; 简写格式: 数据类型[] 数组名 {元素1, 元素2, 元素3, ..., 元素n}; */ // 1.定义数组存储3位同学的年龄 int[] ageArr1 new int[]{18, 19, 20}; int[] ageArr2 {18, 19, 20}; // 2.定义数组存储5位同学的身高 double[] heightArr1 new double[]{1.93, 1.92, 1.21, 1.70, 1.75}; double[] heightArr2 {1.93, 1.92, 1.21, 1.70, 1.75}; // 3.定义数组存储3位同学的名字 // zhangsan String String[] nameArr1 new String[]{zhangsan, lisi, wangwu}; String[] nameArr2 {zhangsan, lisi, wangwu}; } }2数组的访问数组访问包括数据获取和修改那么如何从一串数据中对你想要的那个数据进行访问呢其实数组是存在索引脚标的每个小房间都有对应的“门牌号”通过这个索引就可以找到对应的数据然后就可以进行访问了public static void main(String[] args) { //静态初始化数组 int[] arr {1,2,3,4}; //通过索引获取数组元素 int num arr[0]; System.out.println(num); System.out.println(arr[0]); //修改数组元素 arr[0] 20; System.out.println(arr[0]); System.out.println(arr[0]); }3数组的遍历我们通过下面的代码学习遍历遍历数组用到了for循环其中的arr.length表示数组数据的个数对代码进行优化。4数组的动态初始化数组动态初始化也包括两个部分包括初始化和动态 那这就涉及一个问题了初始化是在创建数组是给它赋值但由于是动态 赋值多少呢答案是在创建数组是系统会给数组定义默认值如图定义格式和代码展示如下格式不能简写5算法练习题1.查找数据public static void main(String[] args) { int[] arr {33, 5, 22, 44, 33};//定义数组 Scanner sc new Scanner(System.in); int find sc.nextInt();//定义Scanner对象并获取用户输入 for (int i 0; i arr.length; i) { if (arr[i] find) { System.out.println(i); return;//找到数据后直接结束不再继续循环 } } System.out.println(该数据不存在); }2.求最值public static void main(String[] args) { // 1.定义数组 int[] arr {33,5,22,44,55}; // 2.定义变量保存最大值初始值设为数组第一个元素 int max arr[0]; // 3.遍历数组从第二个元素开始比较 for(int i 1; i arr.length; i){ if(arr[i] max){ max arr[i]; } } // 4.输出最大值 System.out.println(数组最大值 max); }3.打乱数组中的数据import java.util.Random; public class demo { public static void main(String[] args) { int[] arr {1, 2, 3, 4, 5,6,7};//定义数组 Random random new Random();//定义随机数对象 for (int i 0; i arr.length; i) { int randomIndex random.nextInt(arr.length);//生成随机索引,这里是0到arr.length-1之间的随机整数 // 交换arr[i]和arr[randomIndex]的值 int temp arr[i]; arr[i] arr[randomIndex]; arr[randomIndex] temp; } for (int i 0; i arr.length; i) { System.out.print(arr[i] );//输出交换后的数组元素 } } }4.去除重复元素import java.util.Random; public class demo { public static void main(String[] args) { int[] arr new int[10]; for (int i 0; i arr.length;) { int num new Random().nextInt(100)1;//随机生成1-100的数字 int count 0; for (int j 0; j arr.length; j) { if (arr[j] num) { count; break; } } if(count 0) { arr[i] num; i; } } for (int i 0; i arr.length; i) { System.out.print(arr[i] );//输出数组元素 } } }5.快慢指针public static void main(String[] args) { int[] nums {1,1,2,2,3,4,4,5}; int slow 0; for (int fast 1; fast nums.length; fast) { if(nums[fast] ! nums[slow]){ slow; nums[slow] nums[fast]; } } for(int i 0;islow;i){ System.out.print(nums[i] ); } }6内存原理在了解数组的内存原理之前先科普一下内存的有个知识比如你在记事本中输入了“阳光开朗大男孩”这个数据就被临时进行存储但还没有进入到硬盘现在的电脑内存大多是8G16G这里的内存不是指硬盘的存储容量而是指临时存储能力。那内存存进一个地方了怎么把它取出呢这里就要讲到内存地址了内存地址就相当于门牌号取数据找到对应的地址就好了。当然地址并不是以001002这种的而是有下面的规则讲完内存和内存地址了接下来说说在写代码是内存是怎么分配的把临时处理Java代码的地方分为三个区域包括栈内存堆内存和方法区。其中栈内存是方法被调用时被占用的方法执行完出栈也就是释放空间堆内存是存储new出的东西包括对象数组等而方法区是代码被调用时加载java代码编译后的字节码文件的地方。举个小案例如下图代码执行方法区加载被编译的字节码文件调用了main方法于是在栈内存中开辟了一块空间并在这个空间中给abc分配了一份小空间待c被打印出来就会出栈。再讲一个方法区的内存分布不再赘述我们来看栈内存首先main方法被调用开辟了一份空间并分配给了a和b一部分然后change方法被调用开辟了一份空间a和b可以看到这里的ab占不同的地方并不是一个东西然后change外的a和b只是把值10和20传了进来交换的是change里的a和b并且change执行完后就被释放了外面的a和b并没改变所以最中打印的a还是10b还是20然后进入正题Java中数组的内存分配与栈中main分配给变量a内存不一样的是这里给arr的内存中存的是数组的地址而具体·的数据被存到堆内存中了因为数组的完整定义格式是int[] arr new int[] {1.,2,3} 那下面这段代码的执行中内存的分配逻辑就是 先根据地址找到数组的位置再根据角标进行数据访问记住一点在、栈内存中基本数据类型直接存数据引用数据类型存地址到这里数组就学完了完结

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价