Java入门基础4 数组
数组(arrays)
1.语法
定义数组,初始化数组、
2.内存模型 (要点)
遇到的第一个引用模型
(数据类型:1.基本数据类型 2.引用数据类型
1.数组类型 2对象模型3. 接口模型)
3种定义类型
1.数组类型,保存一组其他类型的数据,元素类型(Element type)
int []/double[]
1.int [] intArray;
2.double[] doubleArray;
和c 语言兼并的方式
1.int intArray[];
2.double doubleArray[]; //规范允许,但不建议使用
数组初始化(数组的长度以固定)
1.静态的方式 用到已知数组的所有元素
int[] array={1,2,3,4,5};
int[] array=new int[] {1,2,3,4,5}; //给方法传参数 匿名数组
2.动态的方式
int[] array = new int [数组长度];
3.不初始化数组,指定一个字面变量。
int[] array = null; //null=空引用
访问下标
1.下标的访问一定是int 类型
2.下标的取值范围[0—n-1]
数组的本质是引用类型,是对象,和基本的数据类型有很大的区别
对象:1.属性2.方法
1.
二:引用传递
栈里面保存:1.局部变量 2.参数
值传递,在栈中进行,不动用堆。
值传递,改变形参,不会影响到实参,
void print(int a){
System.out.println(a); //形参
}
void main () {
int a=10; //实参
// a=100; 改变形参,不改变实参。
print(a);
}
4 |
a |
10 |
4 |
a |
10(100) |
2.数组类型 (引用类型)
int a=100; // =左边的是空间 =右边的是值
java的数组原生支持 Java.util.Arrays支持
1.tostring //打印数组
2.copyof //复制一份数组 System.arraycopy
3.copyofRange
4.fill //填充值
5.sort | parallelSort
默认值 0的各个类型的表现
byte/short/int/log 0
float/double 0.0
char 0X0000
boolean false
refence null
变量未初始化时,默认给的值
局部变量无法享受默认值
参数没有默认值
可以享受默认值,的数组的元素的值
属性
静态属性
二维数组
保存数组的数组
int[][] array=new int[] [10] ;
举几个小例子:
public class java519{
public static int max(int[] array) {
int count=Integer.MIN_VALUE;// 初始化赋值为数组最小值
for(int i=0;i<array.length;i++){
if (array[i]>count)
count=array[i];
}
return count;
}
public static int indexOf (int[] array,int key){
for(int i=0;i<array.length;i++){
if (array[i]==key){
return i;
}
}
return (-1);
}
public static double average (int[] array){
int sum=0;
double avg;
int max=Integer.MAX_VALUE;
int min=Integer.MIN_VALUE;
//for(int i=0;i<array.length;i++){
//if (array[i]>max)
//max=array[i];
//}
//for(int i=0;i<array.length;i++){
//if (array[i]<min)
//min=array[i];
//}
for(int i=0;i<array.length-1;i++){
sum+=array[i];
}
sum=sum-min-max;
int leg=array.length-2;
avg=((double)sum /leg);
return avg;
}
public static void main (String[] args){
int [] array={1,3,5,7,9,2,4,6,8,19};
int maxValue=max(array);
System.out.println("最大值是"+maxValue);
int index=indexOf(array,19);
System.out.println("19的下标是"+index);
double averageScore= average(array);
System.out.println("平均分是"+averageScore);
}
}
Syrtem.out.println(String message); 自带换行
Syrtem.out.print(String message); 不换行
Syrtem.out.printf(String format,变长的参数);
前面指定所需格式,后面要跟参数 %d%f%s
%n是换行,非\n