1.什么是数组?
数组是有序数据的集合,数组中的每个元素具有相同的数组名和下标来唯一地确定数组中的元素。
数组可分为一维数组和多维数组。
2.Java一维数组 定义.初始化
2.1 定义
type var[ ]; 或type[ ] var;
char[] myname; char yourname[];//这种书写方式已经很少用到
问:可以直接定义长度吗?
public class ArrayTest { public static void main(String[] agrs) { //1.可以直接指定数组长度吗?错误的书写 char[100] myname; /*编译报错: ArrayTest.java:6: error: ']' expected char[100] myname; ^ ArrayTest.java:6: error: not a statement char[100] myname; ^ ArrayTest.java:6: error: illegal start of expression char[100] myname; ^ 3 errors */ } }
2.2 初始化
静态初始化:初始化时候由程序员指定每一个数组元素的初始值,系统决定长度
动态初始化:初始化程序员指定数组长度,系统决定元素分配初始值。
初始值实型对应0,浮点对应0.0,char对应\u0000(空格),boolean对应false,引用类型(类,接口,数组)都为null
//5.动态初始化 int[] price=new int[20]; for(int i=0;i<20;i++) { System.out.print(price[i]); //全部输出0,实型系统初始化为0 } System.out.println(); double[] money=new double[20]; for(int i=0;i<20;i++) { System.out.print(money[i]); //每个元素输出 0.0 ,浮点型系统初始化为0.0 } System.out.println(); char[] name=new char[20]; for(int i=0;i<20;i++) { System.out.println(name[i]); //每个元素输出 空格(\u0000),char型系统初始化为(\u0000) } boolean[] right=new boolean[20]; for(int i=0;i<20;i++) { System.out.println(right[i]); //输出false,boolean默认系统初始化为假 } String[] car=new String[20]; for(int i=0;i<20;i++) { System.out.println(car[i]); //每一个元素输出null,String默认系统初始化null }
3.一维数组.应用示例
1.访问数组注意
下标从0开始,不能越界;下标最多只能取到[n-1],n为数组长度;2.用length确定数组长度(针对静态数组)
length是属性,一般集合类对象拥有的属性,取得集合的大小。
//1.length确定数组长度 int[] price=new int[]{100,200,5,321,56,57,447,445};//静态初始化 System.out.println("price[]数组长度为 : "+price.length);//输出 8,为准确长度 for(int i=0;i<price.length;i++) { System.out.println("price ["+i+"] : "+price[i]); } /*输出: price[]数组长度为 : 8 price [0] : 100 price [1] : 200 price [2] : 5 price [3] : 321 price [4] : 56 price [5] : 57 price [6] : 447 price [7] : 445 */
//1.length,针对动态初始化的数组 int[] price=new int[8]; price[0]=100; price[1]=20; System.out.println("price[]数组长度为 : "+price.length); for(int i=0;i<price.length;i++) { //输出所有数组,但是只有前两个赋新值,后面都是初始化为0; System.out.println("price ["+i+"] : "+price[i]); } /*输出: price[]数组长度为 : 8 price [0] : 100 price [1] : 20 price [2] : 0 price [3] : 0 price [4] : 0 price [5] : 0 price [6] : 0 price [7] : 0 */
3.foreach循环
1.简述
编程语言类别:Java、C# 、PHPforeach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免 产生不可预知的副作用。此语句的形式如下:foreach (type identifier in expression) statement其中:typeidentifier 的类型。identifier表示集合元素的迭代变量。如果迭代变量为值类型,则无法修改的只读变量也是有效的。expression对象集合或数组表达式。集合元素的类型必须可以转换为 identifier 类型。请不要使用计算为 null 的表达式。而应计算为实现 IEnumerable 的类型或声明 GetEnumerator 方法的类型。在后一种情况中,GetEnumerator 应该要么返回实现 IEnumerator 的类型,要么声明 IEnumerator 中定义的所有方法。statement要执行的嵌入语句。Java:foreach(元素类型type 元素变量x : 遍历对象obj){}
2.应用
//1.用foreach遍历数组 int[] price=new int[]{1002,5220,1452,123,1452,555,7895}; System.out.println("---------用foreach遍历并且+1输出-----------"); for(int pr:price)//将每一个price元素的值赋予pr! { //pr表示数组中的数组元素,第1次循环则等于price[0],第2次等同与price[1] pr=pr+1; System.out.println(pr);//输出都比原来元素搭1,但是数组元素本身不变 } System.out.println("---------foreach不改变数组元素的值----------"); for(int i=0;i<price.length;i++) { System.out.println(price[i]); } /*输出: ---------用foreach遍历并且+1输出---------- 1003 5221 1453 124 1453 556 7896 ---------foreach不改变数组元素的值---------- 1002 5220 1452 123 1452 555 7895 */
作者:YangGan