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中的下标(要求数组中元素已经按升序排列)

java学习笔记Day3:数组相关推荐

  1. Java学习笔记七——数组工具类Arrays

    数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...

  2. Java学习笔记_数组

    数组的概念 是一种容器,可以同时存放多个数据值 数组的特点 数组是一种引用数据类型 数组当中的多个数据,类型必须统一 数组的长度在程序运行期间不可改变 数组的初始化 在内存当中创建一个数组,并且向其中 ...

  3. java学习笔记之数组

    数组是一种效率最高的存储和随机访问对象引用序列的方式,一旦初始化完成,数组长度将不能变,但可以改变其引用,如: int a[]={1,2}; int b[]={1,2,3,4,5}; a=b; 如果输 ...

  4. 冷酷小叶的Java学习笔记Day3

    #Day3# 一.switch-case 1.结构 switch(整数或者字符串) { case 整数1或者字符串1: 执行代码; break; case 整数2或者字符串2: 执行代码; break ...

  5. Java中大数据数组,Java基础学习笔记之数组详解

    摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...

  6. java学习笔记2(datawhale教程):运算符和表达式、流程控制、数组

    java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 文章目录 java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 一.运算符和表达式 1.数学函数与 ...

  7. Java 学习笔记 - 数组类型互转

    Java 学习笔记 - 数组类型互转 数组类型转换 字符串数组 to (Integer.Long.Double)列表 传统方式 Java8 Stream方式 数组 to 数组 字符串数组 to (in ...

  8. java学习笔记11--Annotation

    java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...

  9. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

最新文章

  1. RotateAnimation详解
  2. WPF的Timer控件的使用
  3. 利用正则来判断一个数字的范围
  4. debian 8 网桥
  5. 专题 4 通用函数库之调试功能封装
  6. JSONEasy的用法(JSONDateHandler)
  7. CentOS6网卡静态IP设置
  8. eclipse使用working set
  9. 谷歌AI发布Deepfake检测数据集,真人多场景拍摄,生成3000段假视频
  10. [设计模式] - Singleton单例模式
  11. 图书管理系统c++_校园一卡通学生如何使用,图书馆分系统演示步骤,系统间资源共享...
  12. KVM console 连接虚拟机注意的位置
  13. 【java奇思妙想】使用多线程的思想来实现java网络编程接收和发送的问题
  14. Latex系列(三)---IEEE Tran模板介绍
  15. 银河麒麟操作系统添加新硬盘后流程
  16. 【踩坑】python: This install of SoX cannot process .mp3 files
  17. Spring Boot 2.5.0
  18. 软件分享之博文收藏记录
  19. [转载]转录组测序分析中cufflinks的使用及问题
  20. CAD建筑室内图纸素材

热门文章

  1. 详细教学——1688关键词搜索API操作流程
  2. 彻底关闭苹果系统更新_iOS13.2系统彻底关闭,杀后台问题终于被埋进坟墓
  3. PHP上传word文档并解析,PHP上传Word并读取显示
  4. 学会了受益终生的经典双色模具设计知识!
  5. Java:定义一个数组,输出数组中的最大值,平均值,以及求和
  6. 计算机机房联合接地线用什么线,弱电机房60平米,现在铺静电地板需要接地,那么接接地线用多大的求解答...
  7. 为什么Java数组长度不可改变?
  8. PowerQuery:重复行指定次数
  9. win系统将中文用户名修改为英文用户名
  10. vue-router.esm.js?fe87:16 [vue-router] Named Route ‘Home‘ has a default child route. When navigating