网站首页 > java教程 正文
数组与方法
数组按照使用可以分为一维数组/二维数组/多维数组.
1.数组的概述
数组是相同数据类型的有序集合
数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每个数据称作一个数组的元素,每个数组元素可以通过一个索引(或者下标)来访问它们.
数组的三个特点:
数组的长度是确定的. 数组当被创建时,它的大小就是不可以改变的.
数组元素必须是相同类型,不允许出现混合类型
数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型
2.一维数组
(1) 声明方式
方式一
.
方式二
.
简写方式
.
(2) 数组中元素的表示方法
数组的声明以及简单输出
.
对于数组的访问采用"数组名称[索引或者下标]"的方式,索引从0开始计数,假设程序中取出的内容超过了这个下标范围,例如:score[3]程序运行会存在以下的异常错误提示信息:
.
提示的内容为数组索引超出绑定的异常(经常说的数组越界异常),这个是未来你们初学者经常出现的问题,请引起重视.此外,我们发现以上的程序运行的结果的内容都是"0",这是因为声明的数组是整型数组.
默认初始化数据:数组元素相当于对象的成员变量,默认值跟成员的规则是一样的,重点记忆!
系统将按照如下规则分配初识值:
数组元素的类型是基本类型中的整数类型(byte,short,int和long),则数组元素的值为0
数组元素的类型是基本类型中的浮点类型(float,double),则数组元素的值为0.0
数组元素的类型是基本类型中的字符类型(char),则数组元素的值为'\u0000'(空格)
数组元素的类型是基本类型中的布尔类型(boolean),则数组元素的值为false
数组元素的类型是引用数据类型(类,接口和数组),则数组元素的值为null
为数组中的元素赋值并进行输出
声明整型数组,长度为5,通过for循环赋值1,3,5,7,9的数据
.
数组长度的取得
.
.
(3) 数组的初始化方式
动态初始化
之前练习的就是使用的动态初始化方式
.
静态初始化
.
.
(4) 课堂练习
已知一个字符数组char[] letterArray = new char[26],请动态初始化数据为A~Z
.
请求数组中最大和最小值
.
对整数数组按照由小到大的顺序进行排序
.
(5) 数组的问题
数组一定要初始化吗?
在之前我们说在使用Java数组之前必须要先初始化数组(即在使用数组之前,必须先创建数组).实际上,如果真正掌握了Java数组中的分配机制,那么可以完全换一个方式来初始化数组.
始终记住:Java的数组变量只是引用类型的变量,它并不是数组对象本身,只是让数组变量指向有效的数组对象,程序中即可使用该数组变量
.
既然数组内容可以进行引用传递,那么就可以把数组作为方法中的参数,而如果一个方法想接收参数,则对应的参数类型必须是数组
使用方法接收数组
.
使用方法修改数组的内容
.
3.二维数组
之前定义的数组只有一个"[]",表示一维数组,如果有两个"[]"就是二维数组,其实本质上不存在多维数组的概念,其实就是一维数组中有嵌套了数组而已
一维数组表格表示
索引 0 1 2 3 4 5 数据 10 20 30 40 50 60 二维数组表格表示int[3][6]
索引 0 1 2 3 4 5 0 3 4 5 6 7 8 1 10 20 30 50 40 60 2 111 222 333 444 555 666 二维数组的定义
动态初始化
数据类型[][] 数组名 = new 数据类型[行数][列数];
静态初始化
数据类型[][] 数组名 = new 数据类型[[]{{值1,值2},{值1,值2,值3...},{值1...}};
遍历二维数组
.
4.Java新特性对数组的支持
(1) 可变参数
在调用一个方式,必须根据方法的定义传递指定的参数,但是在JDK1.5之后产生了新的概念--可变参数(即方法中可以接收的参数不再是固定的,而是随着需要传递的)
a.可变参数的定义格式
.
方法中传递可变参数之后, 实际上参数是以 数组 的形式保存下来的,关键点
b.使用可变参数定义的方法
.
代码分析:
通过main方法里的调用,可以看出来这个可变参数既可以是没有参数(空参数),也可以是不定长的。看到这里估计都能明白,这个不定长的参数其实和数组参数挺像的。事实上,也确实是这么回事儿。编译器会在悄悄地把这最后一个形参转化为一个数组形参,并在编译出的class文件里作上一个记号,表明这是个实参个数可变的方法。请看代码:
.
c.发现问题
问题1:看看是不是这个可变参数就是数组类参数?
.
问题2:可变参数能否接收数组呢?
.
错误的示例代码
.
代码分析:
通过这两端代码可以看出来,[重点知识]可变参数是兼容数组类参数的,但是数组类参数却无法兼容可变参数!
问题3:可变参数可以放置在形参中的任意位置吗?
.
代码分析:
可变参数类型必须作为参数列表的最后一项,而不能放在定长参数的前面。
问题4:重载方法的优先级问题?
.
代码分析:
控制台的数据结果为: 22222
这里需要记住:能匹配定长的方法,那么优先匹配该方法。含有不定参数的那个重载方法是最后被选中的。
留在最后的一句话: main方法的参数就是一个数组类型的,那么它其实也是可以改成不定参数类型
d.可变参数的总结
只能出现在参数列表的最后;
... 位于变量类型和变量名之间,前后有无空格都可以;
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
如果一个是两个方法是重载,一个是可变参数,一个是固定参数,然后我们调用方法如果故常长度的能满足,那么有优先调用固定长度的,
###(2) foreach输出
数组的输出一遍都会使用for循环,但是在JDK1.5后为了方便数组的输出,提供了foreach的语法,格式如下
.
简单示例代码
.
扩展说明:
可以反编译class文件,我们会看到增强(加强)for循环的语法结构为:
.
猜你喜欢
- 2024-09-25 再说,数组(数组mem)
- 2024-09-25 数据结构基础-数组(数据结构数组思维导图)
- 2024-09-25 编程专题:JAVA语法基础(一维数组)
- 2024-09-25 2.基本语法(数组)(数组的基本用法)
- 2024-09-25 灵魂拷问:如何检查 Java 数组中是否包含某个值?
- 2024-09-25 JAVA中数组(一)(java数组菜鸟教程)
- 2024-09-25 java数据类型之数组,有关数组的18个问题
- 2024-09-25 java基础回顾(五)——java数组(java里面数组)
- 2024-09-25 java数组,全新的认识数组,你真的学好数组了吗?
- 2024-09-25 Java中的数组(JAVA中的数组名的值是首元素的地址吗)
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)