java学习笔记Day3:数组

1.数组

1.1Debug

  • F5:往调用内追踪
  • F6:按行追踪
  • F7:跳出方法体
  • F8:跳过剩余或者跳到下一个断点

1.2数组的定义

数组是一个变量,存储相同数据类型的一组数据,声明一个变量就是在内存空间划出一块合适的空间,声明一个数组就是在内存空间划出一串连续的空间

1.3数组的基本要素

标识符:数组名称
数组元素
元素下标:从0开始
元素类型

1.4如何使用数组

  • 声明数组:告诉计算机数据类型是什么

    语法:数据类型 数组名[ ] ;
    数据类型[ ] 数组名 ;
    声明数组时不规定数组长度

  • 分配空间:告诉计算机分配几个连续的空间

    语法:new 数据类型[大小] ;

  • 赋值:向分配的格子里放数据

  • 处理数据

  • 示例演示

//数组的声明:一样的,没有任何区别
int[] is1;
int is2[] = new int[100000000];
//int的长度,long类型的长度填不下
is1 = new int[10];//定义数组的长度,长度是有上限的
//数组的游标的上限是数组长度-1,下限是0
is1[0] = 11;//给元素赋值
is1[1] = 22;
//is1[-1] = 11;//java.lang.ArrayIndexOutOfBoundsException 游标越界
//is1[10] = 22;
int is1_1 = is1[0];//取元素值
int is1_2 = is1[1];
System.out.println(is1_1);
System.out.println(is1_2);
//直接初始化元素值:长度就是默认元素的个数
//1.必须在一行内完成赋值
int[] is1 = {11,22,33,44};
//2.可以不必在一行内完成
int[] is2;
is2 = new int[]{11,22,33,44};
  • 获取数组的长度

    int[] is1 = {11,22,33,44};
    //获取数组长度
    System.out.println(is1.length);//调用数组的length属性,数组的长度
    

1.5 数组示例

1.5.1算一个学生的平均分
//算一个学生的平均分
Scanner s = new Scanner(System.in);
System.out.print("请输入科目数:");
//int num = s.nextInt();
double[] scores = new double[s.nextInt()];//指定科目数
for(int i = 0 ; i < scores.length ; i ++){
    System.out.print("请输入第"+(i+1)+"门成绩:");
    scores[i] = s.nextDouble();//输入成绩
}
System.out.print("请选择操作:1 最高分,2 最低分,3 平均分:");
switch(s.nextInt()){
case 1:
    //.....
    break;
case 2:
    //.....
    break;
case 3:
    double sum = 0;
    for(int i = 0 ; i < scores.length ; i ++){
        sum += scores[i];
    }
    System.out.println("平均分为:"+(sum/scores.length));
    break;
default:
    System.out.println("输入错误!");
}

1.6注意点

1.6.1 数组元素根据类型不同,有不同的初始值
//数组元素的默认值
int[] is = new int[1];//整数:0
System.out.println(Arrays.toString(is));
double[] ds = new double[1];//浮点数:0.0
System.out.println(Arrays.toString(ds));
char[] cs = new char[1];//字符:空格
System.out.println(Arrays.toString(cs));
boolean[] bs = new boolean[1];//布尔类型:false
System.out.println(Arrays.toString(bs));
String[] ss = new String[1];//引用类型:null
System.out.println(Arrays.toString(ss));
1.6.2 数组长度不可变
1.6.3数组与内存

8个基本数据类型都是放在当中, 除了8个基本数据类型之外,都是在当中

//内存
//除了8个基本数据类型,都是引用数据类型
int[] is1 = new int[]{11,22,33};
int[] is2 = is1;//赋值的是内存地址
int[] is3 = {11,22,33};//一个新的地址
System.out.println(is1 == is2);//true:地址一样,所以为true
System.out.println(is1 == is3);//false:地址不一样,所以是false
is1[0] = 111;
System.out.println(is2[0]);
1.6.4java.util.Arrays类的使用
// 栈           引用              堆
int[] is = new int[]{11,22,-11,0,99,18};
int[] is2 = new int[]{11,22,-11,0,18,99};
boolean b1 = Arrays.equals(is, is2);//基本数据类型数组元素比较
System.out.println(b1);
//排序:直接对数组地址排序,给的是地址,那么修改地址中的数据,就相当于修改了原有的数据
Arrays.sort(is);//JDK当中Arrarys的排序使用的是快速排序法
//将一个数组array转换成一个字符串
String str = Arrays.toString(is);
System.out.println(str);
//给数组填充默认值
Arrays.fill(is2, 100);
System.out.println(Arrays.toString(is2));
//复制一个数组,到一个新的地址(数组长度是不可变的)
System.out.println(is);
is = Arrays.copyOf(is, is.length+1);
System.out.println(is);
System.out.println(Arrays.toString(is));
//查询元素值val在数组array中的下标(要求数组中元素已经按升序排列),从左往右数,取第一个
int index = Arrays.binarySearch(is, 11);
System.out.println(index);
方法名称说明
boolean equals(array1,array2)比较array1array2两个数组是否相等
sort(array)对数组array的元素进行升序排列
String toString(array)将一个数组array转换成一个字符串
void fill(array,val)把数组array所有元素都赋值为val
copyOf(array,length)把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致
int binarySearch(array, val)查询元素值val在数组array中的下标(要求数组中元素已经按升序排列)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值