Java中的数组
数组简介:
数组(Array)是Java 语言中内置的一种基本数据存储结构,通俗的理解,就是一组数的集合,目的是用来一次存储多个数据。数组是程序中实现很多算法的基础,可以在一定程度上简化代码的书写。
备注:
1. 数组的好处:数组里的每个元素都有编号,编号从0开始,并且依次递增,方便操作这些元素;
2. 使用Java数组:必须先声明数组,再给该数组分配内存;
3. 数组对应在内存中一段连续空间。
4. 数组元素必须是相同数据类型,也可以是引用数据类型,但是同一个数组中的元素必须是同一类数据类型。
一维数组的声明与初始化:
一维数组:可以理解为一列多行、类型相同的数据,其中每个数据被称为数组元素;
一维数组的声明方式:
type varName[]; 或 type[] varName;(推荐)
Eg:int age[]; int []age;
数组的长度一旦确定,就不能改变,也就数组是定长的;
我的总结:java语言声明数组的时候不能指定其长度(元素的个数)
Eg:int a[5]; //非法
初始化:
Java中的数组必先初始化才可以使用,所谓初始化就是为数组的数组元素分配内存,并为每个数组元素赋值;
数组初始化的两种方式:
静态初始化:初始化时由我们自己指定每个数组元素的初始值,由系统决定需要的数组长度;
格式:数组名 = new 数组类型[]{元素1,元素2,元素3...元素n};
简化语法:数组名 = {元素1,元素2,元素3...元素n};
动态初始化:初始化时由我们指定数组的长度,由系统为数组元素分配初始值;
格式:数组名 = new 数组类型[数组长度];
我的总结:
不能静态和动态初始化同时使用:
也就是说不能同时指定数组的长度和元素;
package reviewDemo; /** * 声明数组及初始化 */ public class Demo3 { public static void main(String[] args) { int []age = new int[10]; //动态初始化 for (int i = 0; i < age.length; i++) { age[i] = i; System.out.print(age[i]+" "); } } } 输出:0 1 2 3 4 5 6 7 8 9
数组的使用:
Java语言的数组索引是从0开始的,也就是说数组里的第一个元素的索引是0,第二个元素的索引是1,依次可以类推。
常见操作:
给数组元素赋值
数组名[索引] = 数组类型的值 ;
访问数组元素
数组类型 变量 = 数组名[索引];
得到数组的长度
int len = 数组名.length; //length是数组的属性
遍历数组(备注:length 属性和循环语句)
数组元素的索引范围(0,长度—1)
Eg:判断数组是否重复
package reviewDemo; /** * 判断数组是否重复 */ public class Demo3 { public static void main(String[] args) { int []age = {1,2,3,4,5,6,5}; for (int i = 0; i < age.length-1; i++) {//双层循环,定住一个,再考虑下一个! for (int j = i+1; j < age.length; j++) { if(age[i] == age[j]){ System.out.println("有重复的!"+i+" "+j); break; } } } } }
求最大值:
package reviewDemo; public class Demo4 { public static void main(String[] args) { int age[] = new int[] { 12, 26, 3, 60, 55, 6, 48, 4, 98 }; int max = age[0]; for (int i = 0; i < age.length; i++) { if (max < age[i]) { max = age[i]; } } System.out.println(max); } }
经典用法:冒泡法排序
package reviewDemo; import java.util.Arrays; //冒泡排序 public class Demo6 { public static void main(String[] args) { int []age = {1,2,36,363,56,95,12,32,1232,3263}; for (int i = 0; i < age.length; i++) { for (int j = i+1; j <= age.length-1; j++) { if(age[i] > age[j]){ int temp = age[i]; age[i] = age[j]; age[j] = temp; } } } System.out.println(Arrays.toString(age)); } } //输出为:[1, 2, 12, 32, 36, 56, 95, 363, 1232, 3263]