数组

数组是是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。

  • 数组本身是引用数据类型,既可以存储基本数据类型,也可以存储引用数据类型。它的元素相当于类的成员变量。
  • 创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址。
  • 数组的长度一旦确定,就不能修改。
  • 通过下标(或索引)的方式调用指定位置的元素。
  • 数组的分类:
    按照维度:一维数组、二维数组、三维数组、…
    按照元素的数据类型分:基本数据类型元素的数组、引用数据类型元素的数组(即对象数组)

从六方面理解数组:

  1. 一维(二维)数组的声明和初始化
  2. 如何调用数组指定位置的元素
  3. 如何获取数组的长度
  4. 如何遍历数组
  5. 数组元素的默认初始化值
  6. 数组的内存解析

一维数组的使用


格式:type var[] 或 type[] var

1 //静态初始化:数组的初始化与数组元素的赋值同时进行
2 int[] num = new int[]{1,2,3,4,5};
3 //动态初始化:数组的初始化与数组元素的赋值分开进行
4 String[] names = new String[5];
5 name[0] = "11";

**数组一旦初始化完成,数组的长度就确定了。

每个数组都有一个属性length指明它的长度,例如数组a: a.length指明数组a的长度(元素个数)

数组的默认初始化值


对于基本数据类型:默认初始化值各有不同

对于引用数据类型:默认初始化值为null(注意:于0不同)

/*从键盘读入学生成绩,找出最高分,
并输出学生成绩等级。
成绩>=最高分-10 等级为’A’
成绩>=最高分-20 等级为’B’
成绩>=最高分-30 等级为’C’
其余 等级为’D’
提示:先读入学生人数,根据人数创建int数组,
存放学生成绩。*/ import java.util.Scanner;//在最上面 public class ArrayTest1 {
public static void main(String[] args) {
//调用Scanner输入学生的成绩
Scanner scan = new Scanner(System.in);
System.out.println("请输入学生的人数:");
int number = scan.nextInt(); //创建数组,存储学生的成绩。动态初始化
int[] score = new int[number];
int maxscore = 0;
//将学生的成绩赋值给数组
System.out.println("请输入"+ number +"个学生成绩");
for(int i=0 ; i<score.length ; i++){
score[i] = scan.nextInt();
//直接在遍历赋值时进行最大值的计算
if(maxscore <= score[i]){
maxscore = score[i];
}
} //获取数组中的最大值
/*int maxscore = 0;
for(int i=0;i<score.length;i++){
if(maxscore < score[i]){
maxscore = score[i];
}
}*/ //遍历数组,计算学生的成绩,并且输出等级
char level;
for(int i=0;i<score.length;i++){
if(maxscore - score[i] <=10){
level = 'A';
}else if(maxscore - score[i] <=20){
level = 'B';
}else if(maxscore - score[i] <=30){
level = 'C';
}else{
level = 'D';
} System.out.println("student" + i +"score is"+score[i]+"grade is "+level);
}
} }

多维数组的使用(二维)


 1 //都是正确的
2 int[][] arr = new int[][]{{1,2},{2,3,4},{4,5,6}};
3
4 int[] arr1[] = new int[][]{{1,2},{2,3,4},{4,5,6}};
5
6 int arr2[][] = new int[][]{{1,2},{2,3,4},{4,5,6}};
7
8 int[][] arr3 = {{1,2},{2,3,4},{4,5,6}};//类型推断
9
10 int[][] arr4;
11 arr4 = {{1,2},{2,3,4},{4,5,6}};//错误的,无法识别数组的类型

数组的长度:

遍历二维数组(双层for循环)

for(int i = 0 ; i<arr.length ; i++) {
for(j = 0 ; j<arr[i].length ; j++) {
System.out.print(arr[i][j]+"");
}
      System.out.println();

}

二维数组的使用

规定:二维数组分为外层数组的元素,内层数组的元素

int[][] arr = new int[4][3];
//外层元素:arr[0] 、arr[1]等
//内层元素:arr[0][0]等 //数组的默认值
int[][] arr = new int[4][3];
System.out.println(arr[0]);//输出地址值,外层元素的初始化值,就是地址值
System.out.println(arr[0][1]);//0,内存元素的初始化值,与一维数组相同 int[][] arr = new int[4][];
System.out.println(arr[0]);
//无论是什么类型的二维数组,后面一个没有数值,都输出null
System.out.println(arr[0][1]);//报错

二维数组的内存解析

数据的存储结构:

线性表(一对一):顺序表(例如:数组)、链表、栈、队列

树形结构(一对多):二叉树

图形结构(多对多)

声明:int[] x,y[]; 在给x,y变量赋值以后,以下选项允许通过编译的是:
int[] x,y[];相当于 int[] x;与 int[] y[]; a ) x[0] = y; no //x是一维的,y是二维的,x[0]就是int型的一个数
b) y[0] = x; yes
c) y[0][0] = x; no
d) x[0][0] = y; no
e) y[0][0] = x[0]; yes
f) x = y; no

java循环结构、数组的更多相关文章

  1. JAVA循环结构

    JAVA循环结构:顺序结构只能执行一次,如果要执行多次需要用到循环 JAVA中的循环结构有while:do...while:for: 1.while循环:先判断布尔表达式中的值,若为true,执行循环 ...

  2. Java循环结构 - for, while 及 do...while

    Java循环结构 - for, while 及 do...while 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. Java中有三种主要的循环结构: whil ...

  3. Java 循环结构

    Java 循环结构 - for, while 及 do...while 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. Java中有三种主要的循环结构: whi ...

  4. Java-Runoob:Java 循环结构

    ylbtech-Java-Runoob:Java 循环结构 - for, while 及 do...while 1.返回顶部 1. Java 循环结构 - for, while 及 do...whil ...

  5. Java 循环结构 - for, while 及 do...while

    Java 循环结构 - for, while 及 do...while 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. Java中有三种主要的循环结构: whi ...

  6. JavaSE基础(八)--Java 循环结构

    Java 循环结构 - for, while 及 do...while 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. Java中有三种主要的循环结构: whi ...

  7. Java循环结构之while和do-while循环

    循环结构知识点 本章技能目标 1理解循环的含义 2会使用while循环 3会使用do-while循环 4会使用调试解决简单的程序错误 一.   循环的含义 循环就是重复的做……(Java程序中的循环结 ...

  8. 四、 java循环结构

    for循环结构: 格式:①初始化条件;②循环条件;③迭代条件;④循环体 for(①;②;③){ //④ } 执行过程:①-②-④-③-②-④-③-...-④-③-②,直至循环条件不满足,退出当前的循环 ...

  9. 7、Java 循环结构

    本章讲解一下Java中常见的三种循环结构,顺序结构的程序语句只能 被执行一次.使用循环可以解决我们多个常量或者变量的同一类的操作或者更加复杂的操作. 循环 循环结构有三大类: 1.for循环:确定循环 ...

  10. JAVA循环结构示例

    本文章主要是帮助大家学习循环结构.学习循环时,最重要的是理清思路,那些最经典算法实际中我们并不会单拿出来用,而是会用到当时做这个算法时的思想.如果把这个思路想明白了,那么实际中用到他的时候自然而然就想 ...

随机推荐

  1. Use Module and Function instead of Class in Python

    The following scripts run in ipython demonstrate the differences between instance method and static ...

  2. IDEA Error:java: 无效的源发行版: 11错误

    IDEA Error:java: 无效的源发行版: 11错误 今天在网上下载了一个项目到本地运行报错 Error: Java : 无效的源发行版: 11 ,上网查了很多找到问题所在.项目的 JDK(P ...

  3. Redis内存碎片

    内存碎片大家都已经耳熟能详了.当Redis数据删除后,Redis释放的内存空间可能不是连续的,这就会带来一个问题,这些不连续的内存空间有可能处于闲置的,但是redis缺无法来保存数据,这就会减低Red ...

  4. 如何保证前端项目上线后的安全?webfunny已总结前端最关键的12大指标

    实时监控大屏   众所周知:实时流量大屏,是用来监控前端项目上线质量的. 如大家所知,监控系统会监控线上应用的各项指标,如:错误.白屏.耗时等等,但是仔细一想,即使有这些监控,我们也不一定能够保证线上 ...

  5. Vue 如何实现一个底部导航栏组件

    参考网址: https://www.jianshu.com/p/088936b7b1bd/ Vue 如何实现一个底部导航栏组件 可以看到父组件是知道我点击了底部TabBar的哪个item的. 实现 实 ...

  6. [转]C# 互操作性入门系列(二):使用平台调用调用Win32 函数

    传送门 C#互操作系列文章: C# 互操作性入门系列(一):C#中互操作性介绍 C# 互操作性入门系列(二):使用平台调用调用Win32 函数 C# 互操作性入门系列(三):平台调用中的数据封送处理 ...

  7. 【spring】spring 核心注解

    注解具体分类如下: 1.模式注解 @Repository             数据仓储模式注解 @Component            通用组件模式注解 @Service            ...

  8. vue中的v-cloak指令

    v-cloak不需要表达式,它会在vue实例结束编译时从绑定的html元素上移除,经常和display:none;配合使用: <div id="app" v-cloak> ...

  9. 《网页布局基础篇》—浮动布局和float属性

    浮动布局 <html> <head> <meta charset="utf-8"> <title>浮动</title> ...

  10. Linux系统的日志管理、时间同步、延迟命令at

    方便查看和管理 /var/log/messages ?系统服务及日志,包括服务的信息,报错等等 /var/log/secure ? ? ? ? 系统认证信息日志 /var/log/maillog ? ...