java数组语法_Java 基本语法----数组
数组
数组概述
数组是多个相同类型数据的组合,实现对这些数据的统一管理。
数组属引用类型,数组型数据是对象(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 基本语法----数组相关推荐
- java byte数组 初始化_Java根据byte数组,生成文件
根据byte数组,生成文件 自己写的小案例,找个地方记录一下 package com.seesun2012.utils; import java.io.BufferedOutputStream; im ...
- java二维数组添加元素_Java二维数组与动态数组ArrayList类详解
java二维数组 java 语言中提供的数组是用来存储固定大小的同类型元素. 1.二维数组初始化和声明 数组变量的声明,和创建数组可以用一条语句完成,如下所示: int a[][] = new int ...
- java 多线程语法_Java基础语法之多线程学习笔记整理
众所周知,利用好多线程机制,可以大大提高系统整体的并发能力以及性能,而且线程间的切换和调度的成本小.因此,多线程是Java学习者必须掌握的语法重点.本文为大家整理了进程和线程.实现多线程方式.设置和获 ...
- java交换二维数组行列_java二维数组行列
培训系列AmberXie 求二维数组行列之和把二维数组 a 各行之和分别放入 b... 二维数组例题答案[技巧] [例 1]编写程序,利用二维数组在窗体上输出如图 5x5...如果没有 max 为行列 ...
- java二维数组坐标_Java 二维数组
二维数组的定义 二维数组本质上是以数组作为数组元素的数组,即"数组的数组". 因为数组只能保存一行数据.在生活中,比如坐标等等,我们需要用二维数组来表示.通过行号和列好来定位数据. ...
- java二维数组试题_Java二维数组及习题总结
二维数组 二维数组:就是一个由行和列组成的一个矩阵(Matrix):在这个矩阵中访问元素时,是根据元素的行角标和列角标所确定的. 二维数组在内存中的存储:无论是二维数组,还是多维数组,它们本身就是一个 ...
- java对象类型数组赋值_java声明对象数组
java如何对象创建数组并初始化 急夜影驱动编程小编今天和大家分享答案 /** * 功能:声明一个学生类 * @author qqliweng * 时间:2009-10-22 * 版本:V1.0 */ ...
- java 设置数组长度_java如何增加数组长度
遇到一个面试题:在不使用list的add方法的情况下,动态的添加元素(大概是这个样子): ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,需学习arraylist的相关知识(ht ...
- java 数组求和_java 实现随机数组输出及求和实例详解
导读热词 java 实现随机数组输出及求和 问题描述: 随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中. 设计思路: 使用java.util中的 ...
最新文章
- 怎么查询redis缓存的数据_阿里开发十年写出这份「Redis简明教程」+「Redis实战」请你查收...
- 洛谷3605 Promotion Counting
- 的训练过程_指外翻的人在训练的过程中,要不要拉伸收肌?
- python策略模式包含角色_详解Python设计模式之策略模式
- 基于XML和注解的Spring Bean管理
- android模拟器脚本,安卓模拟器脚本制作工具
- win的反义词_趣味记忆—小学英语必须掌握的120组反义词
- 计算机科学考研难不难,计算机考研有多难
- swing在java中什么意思_“swing”是什么意思,JAVA初学者:swing是什么
- 【创作中心】自定义模板的使用
- workman+thinkPHP 即时通讯
- unity3d 中添加视频
- Origin画图技巧之回归(标准值与预测值)
- 关于64位UBUNTU硬盘安装方式详解,和提示找不到vmlinuz的分析
- Java设计安全的登录接口
- java.io.IOException: unexpected end of stream on https://xxx.xxx.xxx.xxx:84/
- java 字符串中截取英文部分
- Atitit 几大研发体系对比 Stage-Gate体系 PACE与IPD体系 敏捷开发体系 CMMI体系 艾龙 著 1. 3. 1.5:业界领先的研发管理体系简介	2	1 2. 《产品及生命周期
- https双向认证訪问管理后台,採用USBKEY进行系统訪问的身份鉴别,KEY的证书长度大于128位,使用USBKEY登录...
- Word文档结构图的生成and结合文档结构图生成目录
热门文章
- jquery控制只监听数字_无源!模拟!颜值高!简单实用!TC Level Pilot监听音量控制器...
- SalttSack自动化运维(二)——环境安装及部署
- python字符编码讲解_python 字符编码讲解
- db2 springboot 整合_springboot的yml配置文件通过db2的方式整合mysql的教程
- 2014东师计算机应用基础离线作业,2014秋东师 计算机应用基础 离线作业及答案...
- vue 子页面调用父页面的参数_js父页面调用子页面数据时,子页面通过父页面传过来的参数回调父页面具体方法_html/css_WEB-ITnose...
- python套接字编程_Python套接字编程(1)——socket模块与套接字编程
- python中setup什么意思_Python unittest中setUp()和setUpClass()有什么区别?
- 遗传算法 python包_遗传算法 (Genetic Algorithm)
- cass插件_南方CASS专题系列,全套教程+视频讲解+插件汇总,全部打包速带走