第三章 数组
3-1 数组的概述
数组:多个相同类型数据按一定的顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
数组相关概念:
数组名、下标(索引、角标)、元素、数组的长度
数组特点:
1.数组是有序排列的
2.数组本身是引用数据类型,而数组中的元素既可以是基本数据类型,也可以是引用数据类型
3.创建数据对象时会在内存中开辟一整块连续的空间
4.数组的长度一旦确定,就不能更改

数组分类
(1)按照维数:一维数组,二维数组。。。。
(2)按照数组元素的类型:基本数据类型元素的数组,引用数据类型元素的数组

  1. 一维数组的使用
    ① 一维数组的声明和初始化
    ② 如何调用数组的指定位置的元素
    ③ 如何获取数组的长度
    ④ 如何遍历数组
    ⑤ 数组元素的默认初始化值 :见ArrayTest1.java
    数组元素是整形:0
    数组元素是浮点型:0.0
    数组元素是char型:0或‘\u0000’
    数组元素是布尔型:false
    数组元素是引用数据类型时:null
    ⑥ 数组的内存解析 :见ArrayTest1.java
    栈:(stack)
    堆:(heap)

小tips:用ctrl+shift+f可以调格式

public class array {public static void main(String[] args){//1.一维数组的声明和初始化int num;//声明num = 10;//初始化int id = 1001;//声明+初始化int[] ids;  //声明//1.1 静态初始化:数组的初始化和数值元素的赋值操作同时进行ids = new int[] {1001,1002,1003,1004};//2.2动态初始化:数组的初始化和数值元素的赋值操作分开进行String[] names = new String[5];//错误的写法:
//           int[] arr1 = new int[];
//           int[5] arr2 = new int[5];
//           int[] arr3 = new int[3]{1,2,3};//总结:数组一旦初始化完成,其长度就确定了//2.如何调用数组的指定位置的元素:通过角标的方式进行//数组的角标:从0开始,到数组的长度-1结束names[0] = "王铭";names[1] = "王赫";names[2] = "张学良";names[3] = "孙居龙";names[4] = "王宏志";//charAt(0)
//           names[5] = "周扬";//如何调用数组的指定位置的元素:通过角标的方式进行//数组的角标:从0开始,到数组的长度-1结束names[0] = "王铭";names[1] = "王赫";names[2] = "张学良";names[3] = "孙居龙";names[4] = "王宏志";//charAt(0)
//           names[5] = "周扬";//如何获取数组的长度System.out.println(names.length);//5System.out.println(ids.length);//4.如何遍历数组:for(int i = 0;i<names.length;i++) {System.out.println(names[i]);//5.数组元素的默认初始化值int[] arr = new int[4];for(int i = 0;i<arr.length;i++) {System.out.println(arr[i]);}System.out.println("************");char[] arr1 = new char[4];for(int i = 0;i<arr1.length;i++) {System.out.println("____"+ arr1[i] + "****");}}}
}

练习题:

package exercise;
import java.util.Scanner;
public class ArrayDemo {public static void main(String[] args) {//使用Scanner,读取学生个数Scanner scanner = new Scanner(System.in);System.out.println("请输入学生人数: "); int number =scanner.nextInt();//创建数组,存储学生成绩动态初始化int[] scores = new int[number];//给数组中的元素赋值int maxScore = 0;System.out.println("请输入" + number + "个学生成绩: ");for(int i = 0;i<scores.length;i++) {scores[i] = scanner.nextInt();//获取数组中元素的最大值:最高分if(maxScore < scores[i]) {maxScore = scores[i];}}//根据每个学生成绩与最高分的差值,得到每个学生的等级,并输出等级和成绩char level;for(int i = 0 ; i < scores.length;i++) {if(maxScore -scores[i] <= 10) {level = 'A';}else if(maxScore -scores[i] <= 20) {level = 'B';}else if(maxScore -scores[i] <= 30) {level = 'C';}else {level = 'D';}System.out.println("student " + i + " score is " + scores[i] + "grade is " + level);     }}}

Java学习 第三章 数组(一)一维数组相关推荐

  1. Java学习 第三章 数组(三)排序算法

    ** Java学习 第三章 数组(三)排序算法 ** 主要内容:排序算法.排序算法横向比较.Arrays工具类的使用.数组常见异常 1.数组中涉及到的常见算法:排序算法 1.1 排序算法分类:内部排序 ...

  2. Java学习 第三章 数组(二)多维数组

    多维数组的使用 由数组构成的数组 二维数组: ① 二维数组的声明和初始化 ② 如何调用数组的指定位置的元素 ③ 如何获取数组的长度 ④ 如何遍历数组 ⑤ 数组元素的默认初始化值 :见ArrayTest ...

  3. JAVA学习 第三章作业

    1.程序填空题: 定义一个抽象类Person,其中有一个公共的抽象方法showInfo().然后定义此抽象类的一个子类Student,包括的成员变量有姓名.学号.班级和年龄,且此类中包括两个构造方法. ...

  4. Java学习 第三章 Steam输入输出流

    Java 流(Stream).文件(File)和IO Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基本类 ...

  5. c语言指针与一维数组PPT,C语言第5章指针和一维数组.ppt

    C语言第5章指针和一维数组.ppt 2019/11/5,第5章 指针与一维数组,软件学院计算机科学与技术教研室 冯海文 fhw19770704,2019/11/5,5.1 指针的概念与运算,C语言继承 ...

  6. 深度学习 第三章 tensorflow手写数字识别

    深度学习入门视频-唐宇迪 (笔记加自我整理) 深度学习 第三章 tensorflow手写数字识别 1.tensorflow常见操作 这里使用的是tensorflow1.x版本,tensorflow基本 ...

  7. Java数组:一维数组的定义和赋值

    当数组中每个元素都只带有一个下标时,这种数组就是"一维数组".一维数组(one-dimensional array)实质上是一组相同类型数据的线性集合,是数组中最简单的一种数组. ...

  8. 《啊哈算法》的Java现实 | 第三章:枚举!很暴力

    <啊哈算法>的Java现实 | 第一章:排序. <啊哈算法>的Java现实 | 第二章:栈.队列.链表. <啊哈算法>的Java现实 | 第三章:枚举!很暴力. & ...

  9. 深入理解java虚拟机gc_jvm GC收集器与内存分配(深入理解java虚拟机第三章)

    jvm GC收集器与内存分配(深入理解java虚拟机第三章) 本篇是<深入理解java虚拟机第三章>的笔记记录. 一 为什么要关注GC和内存分配? 需要排查各种内存溢出.内存泄漏问题时,或 ...

最新文章

  1. 【微服务架构】SpringCloud之Eureka入门篇
  2. HDU3434数学题
  3. 关于寒假和春季开学!教育部通知来了!近400所高校寒假时间已公布!
  4. ubuntu部署java环境
  5. 【面试题】你知道为什么HashMap是线程不安全的吗?
  6. 「Ubuntu: Conda」Conda相关命令
  7. rollup学习小记
  8. linux 内核 睡眠,linux内核对S3C2410睡眠模式的支持有哪些?
  9. Url几个常用的函数
  10. 3.2 为超参数选择合适的范围
  11. Nginx自学手册(六)Nginx+Tomcat实现动静分离
  12. 中小企业应该将云存储用于主数据吗?
  13. python脚本实现QQ自动发送消息
  14. 阿里巴巴普惠_打造产业互联网合作新生态 中信集团与阿里巴巴集团、蚂蚁集团达成全面战略合作...
  15. 安装mysql_python
  16. yys opencv自动图片识别 学习交流
  17. YTC, YTM, YTW
  18. Python数据挖掘项目:构建随机森林算法模型预测分析泰坦尼克号幸存者数据
  19. 数值分析之牛顿拉夫森迭代(牛顿法)
  20. linux系统之系统修复

热门文章

  1. 使用Spring Security 3.1保护RESTful Web服务,第3部分
  2. OpenJDK作为Linux上的默认Java
  3. Oracle 数据库中较为复杂或典型的 SQL 语句的解读
  4. Spring半注解半Xml
  5. c++语言编译环境,Windows安装C++开发环境-C++开发环境搭建-嗨客网
  6. Pytorch代码函数笔记
  7. aes子密钥生成c语言_一种基于流密码算法的子密钥生成方法与流程
  8. access update语句执行_SQL Server与Access数据库sql语法十大差异
  9. C 常用新特性(上)
  10. java顺序栈和链栈_Java的顺序栈和链式栈