数组

数组概述

数组是多个相同类型数据的组合,实现对这些数据的统一管理。

数组属引用类型,数组型数据是对象(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 classTest {public static voidmain(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、

classMyDate{private intday;private intmonth;private intyear;public MyDate(int d, int m, inty){

day= d; month = m; year =y;

}public voiddisplay(){

System.out.println(day+ "-" + month + "-" +year);

}

}

2、

public classTest {public static voidmain(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();

}

}

}

数组初始化

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

inta[];

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 = newScanner(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 classSort {3 public static voidmain(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] = 1

yh[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();

}

java数组语法_Java 基本语法----数组相关推荐

  1. java byte数组 初始化_Java根据byte数组,生成文件

    根据byte数组,生成文件 自己写的小案例,找个地方记录一下 package com.seesun2012.utils; import java.io.BufferedOutputStream; im ...

  2. java二维数组添加元素_Java二维数组与动态数组ArrayList类详解

    java二维数组 java 语言中提供的数组是用来存储固定大小的同类型元素. 1.二维数组初始化和声明 数组变量的声明,和创建数组可以用一条语句完成,如下所示: int a[][] = new int ...

  3. java 多线程语法_Java基础语法之多线程学习笔记整理

    众所周知,利用好多线程机制,可以大大提高系统整体的并发能力以及性能,而且线程间的切换和调度的成本小.因此,多线程是Java学习者必须掌握的语法重点.本文为大家整理了进程和线程.实现多线程方式.设置和获 ...

  4. java交换二维数组行列_java二维数组行列

    培训系列AmberXie 求二维数组行列之和把二维数组 a 各行之和分别放入 b... 二维数组例题答案[技巧] [例 1]编写程序,利用二维数组在窗体上输出如图 5x5...如果没有 max 为行列 ...

  5. java二维数组坐标_Java 二维数组

    二维数组的定义 二维数组本质上是以数组作为数组元素的数组,即"数组的数组". 因为数组只能保存一行数据.在生活中,比如坐标等等,我们需要用二维数组来表示.通过行号和列好来定位数据. ...

  6. java二维数组试题_Java二维数组及习题总结

    二维数组 二维数组:就是一个由行和列组成的一个矩阵(Matrix):在这个矩阵中访问元素时,是根据元素的行角标和列角标所确定的. 二维数组在内存中的存储:无论是二维数组,还是多维数组,它们本身就是一个 ...

  7. java对象类型数组赋值_java声明对象数组

    java如何对象创建数组并初始化 急夜影驱动编程小编今天和大家分享答案 /** * 功能:声明一个学生类 * @author qqliweng * 时间:2009-10-22 * 版本:V1.0 */ ...

  8. java 设置数组长度_java如何增加数组长度

    遇到一个面试题:在不使用list的add方法的情况下,动态的添加元素(大概是这个样子): ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,需学习arraylist的相关知识(ht ...

  9. java 数组求和_java 实现随机数组输出及求和实例详解

    导读热词 java 实现随机数组输出及求和 问题描述: 随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中. 设计思路: 使用java.util中的 ...

最新文章

  1. 怎么查询redis缓存的数据_阿里开发十年写出这份「Redis简明教程」+「Redis实战」请你查收...
  2. 洛谷3605 Promotion Counting
  3. 的训练过程_指外翻的人在训练的过程中,要不要拉伸收肌?
  4. python策略模式包含角色_详解Python设计模式之策略模式
  5. 基于XML和注解的Spring Bean管理
  6. android模拟器脚本,安卓模拟器脚本制作工具
  7. win的反义词_趣味记忆—小学英语必须掌握的120组反义词
  8. 计算机科学考研难不难,计算机考研有多难
  9. swing在java中什么意思_“swing”是什么意思,JAVA初学者:swing是什么
  10. 【创作中心】自定义模板的使用
  11. workman+thinkPHP 即时通讯
  12. unity3d 中添加视频
  13. Origin画图技巧之回归(标准值与预测值)
  14. 关于64位UBUNTU硬盘安装方式详解,和提示找不到vmlinuz的分析
  15. Java设计安全的登录接口
  16. java.io.IOException: unexpected end of stream on https://xxx.xxx.xxx.xxx:84/
  17. java 字符串中截取英文部分
  18. Atitit 几大研发体系对比 Stage-Gate体系 PACE与IPD体系 敏捷开发体系 CMMI体系 艾龙 著 1. 3. 1.5:业界领先的研发管理体系简介 2 1 2. 《产品及生命周期
  19. https双向认证訪问管理后台,採用USBKEY进行系统訪问的身份鉴别,KEY的证书长度大于128位,使用USBKEY登录...
  20. Word文档结构图的生成and结合文档结构图生成目录

热门文章

  1. jquery控制只监听数字_无源!模拟!颜值高!简单实用!TC Level Pilot监听音量控制器...
  2. SalttSack自动化运维(二)——环境安装及部署
  3. python字符编码讲解_python 字符编码讲解
  4. db2 springboot 整合_springboot的yml配置文件通过db2的方式整合mysql的教程
  5. 2014东师计算机应用基础离线作业,2014秋东师 计算机应用基础 离线作业及答案...
  6. vue 子页面调用父页面的参数_js父页面调用子页面数据时,子页面通过父页面传过来的参数回调父页面具体方法_html/css_WEB-ITnose...
  7. python套接字编程_Python套接字编程(1)——socket模块与套接字编程
  8. python中setup什么意思_Python unittest中setUp()和setUpClass()有什么区别?
  9. 遗传算法 python包_遗传算法 (Genetic Algorithm)
  10. cass插件_南方CASS专题系列,全套教程+视频讲解+插件汇总,全部打包速带走