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 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 基本语法----数组相关推荐
- Java基本语法——数组
数组(Array)是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理 数组的常见概念 数组名 下标(或索引) 元素 数组的长度 数组概述 数组本身是引用 ...
- Java基础语法(数组)
第4天 Java基础语法 今日内容介绍 u 流程控制语句(switch) u 数组 第1章 流程控制语句 1.1 选择结构switch switch 条件语句也是一种很常用的选择语句,它和if条件语句 ...
- java基础语法入门到类型转换问题,运算符,数据输入,数组,方法概述,Debug模式,以及10个小案例的详细介绍。
java基础语法 目录 java基础语法 1. Java概述 1.1 Java语言发展史(了解) 1.2 Java语言跨平台原理(理解) 1.3 JRE和JDK(记忆) 1.4 JDK的下载和安装(应 ...
- java基本语法、数组、查找、排序
java基本语法.数组.查找.排序 b站韩顺平java基础 java的特点 java的跨平台性:java一次编译可以到处执行,.java文件经过一次编译后变成.class文件(字节码文件)然后再经 ...
- Java的语法结构和数组
Java的语法结构和数组 在此之前我们学习了Java的开发,了解了Java的一些基础知识,现在让我们一起来探讨一下Java语言的选择结构.循环结构.数组以及二重循环. 一.选择结构 选择结构就是根据判 ...
- java基本语法(三)——一维数组和二维数组
数组是最常见的数据结构,每个数组元素存放一个数据,通过数组元素的索引来访问数组元素. 一维数组 数组的定义 java支持两种方式来定义数组 1) type[] arrayName; 2) type a ...
- java数组循环动态赋值_04、Java基础语法(循环嵌套、break、continue、方法、方法的重载、数组动态初始化)...
复习: 流程控制语句 - 顺序结构 - 分支结构 - if-else - switch - 循环结构 - for - while - do...while ctrl + alt + L 格式化代码 & ...
- java二维数组矩阵_java使用二维数组开发五子棋
主要使用到的技术: java基础语法 java面向对象思想 java数组,二维数组 java异常处理 主要步骤和思路: 1,制作一个棋盘类.棋盘类里面有行属性,列属性,二维数组属性. 有一个打印棋盘的 ...
- 1.3 Java二维数组详解
为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来.二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列.下面 ...
- Java中遍历数组使用foreach循环还是for循环?
这篇文章主要介绍了Java中遍历数组使用foreach循环还是for循环?本文着重讲解for语句的语法并给出使用实例,同时总结出尽量使用foreach语句遍历数组,需要的朋友可以参考下 从JDK1.5 ...
最新文章
- oracle10gr2 x86,Oracle10gR2 On RHEL5 x86安装技术文档(英文原版)
- 青源LIVE第29期|清华叉院高阳:使用1/500数据掌控Atari游戏-EfficientZero算法详解
- 部署CFCA_RA本地测试环境
- Android Studio下载及安装3.0版本
- 模型评估——定量分析预测的质量
- WinZip命令行详解
- MyEclipse 6.0 注册码
- Codeforces Round #584 (Div. 1 + Div. 2)
- vue开发移动端h5使用 lib-flexible移动端适配
- Tableau Desktop 最新版安装教程
- 詹姆斯·高斯林接下来要做什么?
- 最后一课——没有拥抱,已成永远
- 如何给扑克洗牌才能更公平?
- linux引导程序下载,SysLinux 4.05 下载 功能强大的引导加载程序
- 论文学习笔记 PrivateDrop: Practical Privacy-Preserving Authentication for Apple AirDrop
- php退款,PHP实现微信申请退款流程的方法
- 《上瘾:让用户养成使用习惯的四大产品逻辑》读书笔记摘录
- uniapp手机号一键登录
- 计算机组成原理第五章知识总结
- 英语作文计算机国际会议开幕词,英语作文会议开幕词
热门文章
- 程序员思维释放(一):打破常态
- unity newtonsoft 反序列化报空_基于Unity3D的大地形研究(2):资源序列化与材质加载...
- java mainclass_java – 无法加载Main-Class清单属性
- python-学生管理系统--5 统计学生总人数功能
- maven库的查询和配置
- 帆软高级函数应用之报表函数
- JumpList中Recent类别和自定义类型
- 做跨境电商,先要有个靠谱的商城系统
- 《IPv6安全》——2.3 IPv6网络勘察
- [翻译] SSKeychain