数组(arrays)
1、语法 数据类型 1、基本数据类型 2、引用数据类型 { 1、数组类型
定义数组,初始化数组 2、对象类型
3、接口类型
1、数组类型:保存一组其他类型的数据,元素类型(Element type)
int[] / double[]
变量
数据类型 变量名称;
1、int[] intArray;
2、double doubleArray;
和c语言兼容的方式:
1、int intArray[];
2、double doubleArray[]; //规则允许,规范不建议使用
2、数组的初始化(数组长度是固定的)
1、静态方式 用到已知数组所有的元素
int[] array={1,2,3,4,5};
int[] array=new int[]{1,2,3,4,5} //给方法传参数,匿名数组
2、动态的方式
int[] array=new int[数组的长度];
3、不初始化数组,指定一个null字面量
int[] array=null; //null是空引用
3、数组的下标访问,用中括号[]指定具体下标
1、下标的类型一定是int
2、下标的取值范围是,数组的长度是n个,则范围:[0,n-1]
java.lang.ArraylndexOutOfBoundsException 数组下标越界
4、数组本质上其实也是对象(Object 类的派生类)
1、属性 对象.属性
int[] array=....; 对象.方法()=
array.length 数组中元素的个数
2、方法
2、数组本质上是引用类型,是对象,和基本数据类型有很大的区别
1、int a=100;
左边的空间,究竟存在什么位置
1、内存
2、栈 堆 保存在栈:1、局部变量 2、参数
void print(int a){ a=100;
System.out.println(a);
}
void main(){
int a=10; print(a);
}
print中的a是形参 main中是参数
值传递,改变形参,不会影响到实参,因为值传递本质上是复制了一份
2、数组类型(引用类型)
void main(){
int[] array={1,2,3,4}
printArray(array);
}
void printArray(int[] array){
.....
}
java的数组原生支持java.until.Array支持
1、toString 打印数组
2、copyOf 复制一份数组 System.arraycopy
3、copyOfRange
4、fill 填充值
5、sort|parallelSort
默认值 0的各个类型的表现
byte/short/int/long 0
float/double 0.0
char 0x0000
boolean false
reference null
变量未初始化时,默认给的值
局部变量无法享受默认值
参数没有默认值
可以享受默认值的
数组中元素的值
属性
静态属性
相关例题:
//找最大值
public static int max(int[] array);
//key在数组中第一次遇到的下标,如果数组中没有key,返回-1
public static int indexOf(int[] array,int key);
//评分系统,求平均分,去掉最大值和最小值,返回平均分
//socores的长度一定大于3
public static double average(int[] socores);
数组:
数组的长度,一旦创建好,不能更改,固定大小
语法:数组类型 元素类型 甚至,元素类型也可以是数组,表现得好像多维数组
初始化:
int[] a=null; //引用有,但没有实际的数组
int[] a={1,2,3,4,5}; //静态初始化
int[] a=new int[]{1,2,3,4,5}; //更多的是在用匿名数组
int[] a=new int[指定数组长度]; //动态初始化