数组

数组概述

数组是多个相同类型数据的组合,实现对这些数据的统一管理。
数组属引用类型,数组型数据是对象(Object),数组中的每个元素相当于该对象的成员变量。
数组中的元素可以是任何数据类型,包括基本类型和引用类型。

一维数组声明

一维数组的声明方式: type var[] 或 type[] var
例如:
  int a[];
  int[] a1;
  double b[];
  Mydate []c; //对象数组
Java语言中声明数组时不能指定其长度(数组中元素的数), 例如: int a[5]; //非法

数组元素的引用

Java中使用关键字 new 创建数组对象
定义并用运算符 new 为之分配空间后,才可以引用数组中的每个元素;
数组元素的引用方式:数组名[数组元素下标]
  数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];
  数组元素下标从0开始;长度为n的数组合法下标取值范围: 0 - n-1;

  如int a[]=new int[3]; 可引用的数组元素为a[0]、a[1]、a[2]
每个数组都有一个属性 length 指明它的长度,例如:a.length 指明数组 a 的长度(元素个数)

数组元素的默认初始化

数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化
例如:
public class Test {
  public static void main(String argv[]) {
    int a[]= new int[5]; 
    System.out.println(a[3]); //a[3]的默认值为0
  }
}

数组元素的默认初始值

创建基本数据类型数组

Java中使用关键字new 创建数组对象

public class Test {public static void main(String args[]) {int[] s;s = new int[10];for ( int i=0; i<10; i++ ) {s[i] =2*i+1;System.out.println(s[i]);}}
}

创建对象数组

1、

class MyDate{private int day;private int month;private int year;public MyDate(int d, int m, int y){day = d; month = m; year = y;}public void display(){System.out.println(day + "-" + month + "-" + year);}
}

2、

public class Test {public static void main(String args[]) {MyDate[] m;m = new MyDate[10];for ( int i=0; i<10; i++ ) {m[i] =new MyDate(i+1, i+1,1990+i);m[i].display();}}
}

数组初始化

动态初始化:数组定义与为数组元素分配空间并赋值的操作分开进行。

    int a[];a = new int[3];a[0] = 3;a[1] = 9;a[2] = 8;MyDate dates[];dates = new MyDate[3];dates[0] = new MyDate(22, 7, 1964);dates[1] = new MyDate(1, 1, 2000);dates[2] = new MyDate(22, 12, 1964);

静态初始化:在定义数组的同时就为数组元素分配空间并赋值。

    int a[] = { 3, 9, 8};MyDate dates[] = {new MyDate(22, 7, 1964),new MyDate(1, 1, 2000),new MyDate(22, 12, 1964)};

练习

1、数组的常见操作

    //1. 数组的声明//int    i = 0;int [] a = null; //推荐使用此种方式进行声明. int b [] = null;//注意: Java语言中声明数组时不能指定其长度(数组中元素的数)//int [5] c = null;//注意: 若没有为数组变量分配指向的内存空间, 就调用其属性, 会在运行时发生 "空指针异常"//System.out.println(a.length); //2. 为数组分配内存空间a = new int[10];//3. 获取数组的长度System.out.println(a.length);  //10//5. 对数组元素进行初始化for(int i = 0; i < a.length; i++){a[i] = 100 + i;}//4. 访问数组的元素: 数组名[数组元素下标]. 注意: 下标从 0 开始, 所以最大值是 lengh - 1, 而不是length;//数组元素会进行默认的初始化: for(int i = 0; i < a.length; i++){System.out.println(a[i]);}//若访问数组的下标超过合法范围, 则在运行时会抛出ArrayIndexOutOfBoundsException//a[10] = 10;//数组的静态初始化int [] c = {1, 2, 3, 4, 5};int [] d = new int[]{2, 3, 4, 5, 6};for(int i = 0; i < d.length; i++){System.out.println(d[i]);}//声明一个二维数组int [][] aa = new int[5][];//对二维数组的元素进行初始化: 二维数组的元素是一个一维数组!//遍历需要使用嵌套的 for 循环. for(int i = 0; i < aa.length; i++){aa[i] = new int[i + 1];for(int j = 0; j < aa[i].length; j++){aa[i][j] = 1 + i * j;}}//对二维数组进行遍历for(int i = 0; i < aa.length; i++){for(int j = 0; j < aa[i].length; j++){System.out.print(aa[i][j] + "  ");}System.out.println(); }

2、从键盘读入学生成绩,找出最高分,并输出学生成绩等级。
  成绩>=最高分-10 等级为’A’ 成绩>=最高分-20 等级为’B’
  成绩>=最高分-30 等级为’C’ 其余 等级为’D’
  提示:先读入学生人数,根据人数创建int数组,存放学生成绩。

  /*** 2.从键盘读入学生成绩,找出最高分,并输出学生成绩等级。*        成绩>=最高分-10  等级为’A’   成绩>=最高分-20  等级为’B’*         成绩>=最高分-30  等级为’C’   其余     等级为’D’*   提示:先读入学生人数,根据人数创建int数组,存放学生成绩。*///1. 创建 Scanner 类Scanner scanner = new Scanner(System.in);//2. 读入要录入的学生人数System.out.print("请输入学生人数");int count = scanner.nextInt();//3. 创建一个 int 类型的数组, 用于存放学员的成绩, 数组的长度为 2 所录入数值int [] scores = new int[count];//4. 利用循环录入学生的成绩, 同时得到最高分. 把学生成绩录入到 3 声明的数组中.int highScore = 0;for(int i = 0; i < scores.length; i++){scores[i] = scanner.nextInt();if(scores[i] > highScore){highScore = scores[i];}}//5. 遍历 3 声明的数组, 根据最高分, 获取学生的升级等级. for(int i = 0; i < scores.length; i++){if(scores[i] >= highScore - 10){System.out.println("student " + i + " score is " + scores[i] + "  grade is A");}else if(scores[i] >= highScore - 20){System.out.println("student " + i + " score is " + scores[i] + "  grade is B");}else if(scores[i] >= highScore - 30){System.out.println("student " + i + " score is " + scores[i] + "  grade is C");}else{System.out.println("student " + i + " score is " + scores[i] + "  grade is D");}}

多维数组

二维数组举例:
int [][] a = {{1,2},{3,4,0,9},{5,6,7}};

Java中多维数组被做为数组的数组处理
Java中多维数组的声明和初始化应按从高维到低维的顺序进行
  int t [][] = new int [4][];//t有4行,第一个维数不空即可
  t[0] = new int[5]; //每一行都是一个有5个元素的一维数组
  t[1] = new int[5];
  int t1[][] = new int [][4]; //非法

Java中多维数组不必须是规则矩阵形式
  int[][] tt = new int[4][];
  tt[0] = new int[2];
  tt[1] = new int[4];
  tt[2] = new int[6];
  tt[3] = new int[8];

  int tt[][] = new int[4][5]; //tt是一个4行5列的二维数组

  int [][] aa = new int[4][];

  aa[0] = new int[5];

  aa[1] = new int[1];

  aa[2] = new int[3];

  //…

多维数组初始化

静态初始化
  int intArray[][] = {{1,2},{2,3},{3,4,5}};
  int intArray1[3][2] = {{1,2},{2,3},{4,5}};
  //illegal,等号左边不能指定维数
动态初始化
  int a[][] = new int[4][5];
  int b[][] = new int[3][]
  b[0] = new int[2];
  b[1] = new int[3];
  b[2] = new int[5];

数组排序

Java.util.Arrays类的 sort() 方法提供了数组元素排序功能:

 1 import java.util.*;
 2 public class Sort {
 3     public static void main(String[] args) {
 4         int [] number = {5,900,1,5,77,30,64,700};
 5         Arrays.sort(number);
 6
 7         for(int i = 0; i < number.length; i++)
 8             System.out.println(number[i]);
 9     }
10 }

使用二维数组打印 10 行的杨辉三角, 杨辉三角实际上是二项式展开式的系数

/*** 1                       (a+b)^0* 1  1                    (a+b)^1* 1  2  1                 (a+b)^2* 1  3  3  1              (a+b)^3 * 1  4  6  4  1* 1  5  10 10 5  1* ...* 1. 什么是杨辉三角: 二项式展开式的系数* 2. 为什么使用的是 二维数组: 因为杨辉三角由行和列组成, 每一行是一个一维数组, 而杨辉三角则是有一维数组组成的数组, 即二维数组. * 3. 杨辉三角的具体特点: * 3.1 第 n 行有 n 个元素(n >= 1)* 3.2 每一行的第一个元素和最后一个元素都是 1* 3.3 不等于 1 的那些元素的值为上一行的对应列和对应列的前一列的元素的和.
*///1. 先声明一个二维数组: 二维数组有 10 个元素int [][] yh = new int[10][];//2. 对二维数组的元素进行初始化: 第 i 个元素(i 从 0 开始) 为长度为 i + 1 的一维数组.for(int i = 0; i < yh.length; i++){//二维数组的每一个元素是一维数组, 而一维数组时引用类型, 其默认值为 null//System.out.println(yh[i]);
            yh[i] = new int[i + 1];//3. 对具体的每一个元素进行初始化(是 1 的元素): yh[i][0] = 1, yh[i][i] = 1yh[i][0] = 1;yh[i][i] = 1;//4. 对具体的每一个元素进行初始化(不是 1 的元素): yh[i][j] = yh[i-1][j] + yh[i-1][j-1]; //   (i > 1 && j > 0 && j < i)if(i > 1){for(int j = 1; j < i; j++){yh[i][j] = yh[i-1][j] + yh[i-1][j-1];}}}//打印for(int i = 0; i < yh.length; i++){for(int j = 0; j < yh[i].length; j++){System.out.print(yh[i][j] + "\t");}System.out.println();}

转载于:https://www.cnblogs.com/justdoitba/p/7220840.html

Java 基本语法----数组相关推荐

  1. Java基本语法——数组

    数组(Array)是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理 数组的常见概念 数组名 下标(或索引) 元素 数组的长度 数组概述 数组本身是引用 ...

  2. Java基础语法(数组)

    第4天 Java基础语法 今日内容介绍 u 流程控制语句(switch) u 数组 第1章 流程控制语句 1.1 选择结构switch switch 条件语句也是一种很常用的选择语句,它和if条件语句 ...

  3. java基础语法入门到类型转换问题,运算符,数据输入,数组,方法概述,Debug模式,以及10个小案例的详细介绍。

    java基础语法 目录 java基础语法 1. Java概述 1.1 Java语言发展史(了解) 1.2 Java语言跨平台原理(理解) 1.3 JRE和JDK(记忆) 1.4 JDK的下载和安装(应 ...

  4. java基本语法、数组、查找、排序

    java基本语法.数组.查找.排序 b站韩顺平java基础 java的特点 ​ java的跨平台性:java一次编译可以到处执行,.java文件经过一次编译后变成.class文件(字节码文件)然后再经 ...

  5. Java的语法结构和数组

    Java的语法结构和数组 在此之前我们学习了Java的开发,了解了Java的一些基础知识,现在让我们一起来探讨一下Java语言的选择结构.循环结构.数组以及二重循环. 一.选择结构 选择结构就是根据判 ...

  6. java基本语法(三)——一维数组和二维数组

    数组是最常见的数据结构,每个数组元素存放一个数据,通过数组元素的索引来访问数组元素. 一维数组 数组的定义 java支持两种方式来定义数组 1) type[] arrayName; 2) type a ...

  7. java数组循环动态赋值_04、Java基础语法(循环嵌套、break、continue、方法、方法的重载、数组动态初始化)...

    复习: 流程控制语句 - 顺序结构 - 分支结构 - if-else - switch - 循环结构 - for - while - do...while ctrl + alt + L 格式化代码 & ...

  8. java二维数组矩阵_java使用二维数组开发五子棋

    主要使用到的技术: java基础语法 java面向对象思想 java数组,二维数组 java异常处理 主要步骤和思路: 1,制作一个棋盘类.棋盘类里面有行属性,列属性,二维数组属性. 有一个打印棋盘的 ...

  9. 1.3 Java二维数组详解

    为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来.二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列.下面 ...

  10. Java中遍历数组使用foreach循环还是for循环?

    这篇文章主要介绍了Java中遍历数组使用foreach循环还是for循环?本文着重讲解for语句的语法并给出使用实例,同时总结出尽量使用foreach语句遍历数组,需要的朋友可以参考下 从JDK1.5 ...

最新文章

  1. oracle10gr2 x86,Oracle10gR2 On RHEL5 x86安装技术文档(英文原版)
  2. 青源LIVE第29期|清华叉院高阳:使用1/500数据掌控Atari游戏-EfficientZero算法详解
  3. 部署CFCA_RA本地测试环境
  4. Android Studio下载及安装3.0版本
  5. 模型评估——定量分析预测的质量
  6. WinZip命令行详解
  7. MyEclipse 6.0 注册码
  8. Codeforces Round #584 (Div. 1 + Div. 2)
  9. vue开发移动端h5使用 lib-flexible移动端适配
  10. Tableau Desktop 最新版安装教程
  11. 詹姆斯·高斯林接下来要做什么?
  12. 最后一课——没有拥抱,已成永远
  13. 如何给扑克洗牌才能更公平?
  14. linux引导程序下载,SysLinux 4.05 下载 功能强大的引导加载程序
  15. 论文学习笔记 PrivateDrop: Practical Privacy-Preserving Authentication for Apple AirDrop
  16. php退款,PHP实现微信申请退款流程的方法
  17. 《上瘾:让用户养成使用习惯的四大产品逻辑》读书笔记摘录
  18. uniapp手机号一键登录
  19. 计算机组成原理第五章知识总结
  20. 英语作文计算机国际会议开幕词,英语作文会议开幕词

热门文章

  1. 程序员思维释放(一):打破常态
  2. unity newtonsoft 反序列化报空_基于Unity3D的大地形研究(2):资源序列化与材质加载...
  3. java mainclass_java – 无法加载Main-Class清单属性
  4. python-学生管理系统--5 统计学生总人数功能
  5. maven库的查询和配置
  6. 帆软高级函数应用之报表函数
  7. JumpList中Recent类别和自定义类型
  8. 做跨境电商,先要有个靠谱的商城系统
  9. 《IPv6安全》——2.3 IPv6网络勘察
  10. [翻译] SSKeychain