Java 数组、方法的定义和使用
一、Java 数组,方法学习思维导图
二、数组
数组是用一个标识符(变量名)和一组下标来代表的一组具有相同数据类型的数据元素的集合。这些数据元素在计算机中存储中占用一片连续的存储空间,其中每个数组元素在数组中的位置是固定的,可以通过下标的编号加以区别,可以通过标识符和下标访问每一个数组元素。
在 Java 中,数组是一个特殊的对象,属于引用类型,数组中元素序号从 0 开始,通过下标操作符引用
1、一维数组
(1)一维数组声明:确定数组名 + 数组维度 + 数组元素数据类型
元素的数据类型:Java 中基本数据类型(如 int、char、double等)、引用数据类型(如类(class)、接口(interface)等)。
一维数组定义格式:数据类型 数组名[ ] ; 或 数据类型[ ] 数组名 ;
[code]int arr[] ;//声明一个名为 arr 的整型数组 double[] dArray ;//声明一个名为 dArray 的浮点型双精度数组
(2)一维数组初始化
数组是引用数据类型,要在使用前先初始化再使用,否则会 NullPointerException (运行时异常 RunTimeException )。Java 数组的初始化可以直接指定初值或者用 new 运算符的方式实现。
动态初始化——声明并且开辟空间
数据类型[ ] 数组名称 = new 数据类型 [长度] ;
- 数组通过下标索引来取得元素,下标默认从0开始。
- 数组下标超出数组长度,报数组越界异常(运行时异常)。
- 数组中每个元素都有默认值,默认值是该数据类型默认值。
- 数组名称.length -> 取得数组长度。
[code]int arr = new int[3] ;//用 new 初始化 数组 arr ,数组长度为 3
注:Java 数据类型有默认初始值:整型默认值为 0 ;浮点型默认值为 0.0 ;布尔型默认值为 false ;字符型默认值 \u0000 。
静态初始化——直接指定初值
简化格式:数据类型[ ] 数组名称 = {值,值,...} ;
完整格式(推荐使用,方便使用匿名数组):数据类型[ ] 数组名称 = new 数据类型{值,值,...} ;
- 在数组定义时直接设置内容,根据值的个数确定数组长度,且长度不可修改。
- 匿名数组:没有任何栈内存指向的数组。
[code]int[ ] data = new int{1,2,3,4} ;//静态初始化完整格式
(3)for-each 循环
JDK1.5 提供 for-each 循环。
for-each 循环适用于数组遍历,仅仅限于数组内容的读取,要修改数组内容还是使用常规的 for 循环。
[code]for(int x : data){ System.out.print(x+" ") ; }
2、二维数组
动态初始化:数据类型[ ][ ] 数组名称 = new 数据类型[行个数][列个数] ;
[code]int[ ][ ] data = new int[3][4] ;
静态初始化:数据类型[ ][ ] 对象数组 = new 数据类型[ ][ ]{ {值,值,...}, {值,值,...}, ...} ;
[code]int[][] data = new int[][]{{1,2,3},{4,5,6},{7,8,9,10}} ;
3、数组实用类 Arrays
在 java.util 包中,有一个用于操作数组的实用类——java.util.Arrays。它提供了一种静态方法完成数组的常用操作。
int binarySearch(type[ ] a, type key):用于查找 key 元素在 a 数组中出现的索引。如果数组中不包含 key 元素值,返回 -1 。调用该方法时,要求数组中元素已经按升序排列。
给数组赋值:通过fill方法。
对数组排序:通过sort方法,按升序。
比较数组:通过equals方法比较数组中元素值是否相等。
查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。
e.g java.util.Arrays.sort(数组名称) ; 此方法支持所有基本数据类型,内部使用双轴快速排序。
具体使用教程:Arrays
三、方法
1、方法定义及声明
Java中方法的定义(前提:直接在主方法中调用的方法):一段可以被重复调用的代码块。可以与 C语言 中函数类比。
方法声明:
[code]public static 方法返回值 方法名称([参数类型 变量...]){ ... 方法体代码 ;//方法体包含具体的语句,定义该方法的功能。 ... return 返回值 ;//如果有返回值 }
举例:
[code]public class Test1{ public static void main(String[] args){ System.out.println(add(5,5)); } public static int add(int x,int y){ return x+y; } }
一般方法具体教程:Java 方法
2、方法重载
(1)方法重载定义:方法名称相同,参数的个数、顺序、类型不同,与方法返回值无关。
(2)编码规范:重载函数的返回值类型一定保持相同。
[code]public class Test{ public static void main(String[] args) { System.out.println(add(5,5)); System.out.println(add(5,5,55)); } public static int add(int x,int y){ return x+y; } public static int add(int x,int y,int z){ return x+y+z; } }
根据传递参数的个数调用的方法不同。
3、方法递归
定义:指的是一个方法自己调用自己的方式。递归方法的特点:
- 方法必须有递归的结束条件
- 方法在每次递归处理的时候一定要作出一些变更
[code]public class Test{//递归实现从1到100的叠加 public static void main(String[] args) { System.out.println(sum(100)); } public static int sum(int num){ if (num == 1) { return 1; } else { return num+sum(num-1); } } }
四、数组与方法互操作
(1)方法接收数组
[code]public class ArrayDemo{ public static void main(String[] args) { int[] data = new int[] {1,2,3,4,5} ; printArray(data) ; // 其效果等价于 int[] temp = data ; } public static void printArray(int[] temp) { for (int i = 0 ; i<temp.length ; i++) { System.out.println(temp[i]) ; } } }
(2)方法返回数组
[code]public class ArrayDemo{ public static void main(String[] args) { int[] data = init() ; printArray(data) ; } // 定义一个返回数组的方法 public static int[] init(){ return new int[] {1,2,3,4,5} ; // 匿名数组 } public static void printArray(int[] temp) { for (int i = 0 ; i<temp.length ; i++) { System.out.println(temp[i]) ; } } }
现在的数组上发生了引用传递,那么就意味着方法在接收数组后也可以修改数组。
(3)方法修改数组
[code]public class ArrayDemo{ public static void main(String[] args) { int[] data = init() ; bigger(data) ; printArray(data) ; } // 定义一个返回数组的方法 public static int[] init(){ return new int[] {1,2,3,4,5} ; // 匿名数组 } // 将数组中每个元素的值扩大5倍 public static void bigger(int[] arr){ for (int i =0 ; i<arr.length ; i++) { arr[i]*=5 ; // 每个元素扩大5倍 } } public static void printArray(int[] temp) { for (int i = 0 ; i<temp.length ; i++) { System.out.println(temp[i]) ; } } }
- java方法的定义以及数组的使用
- Java中的方法定义与数组使用
- java中方法的定义与使用,数组笔记
- JAVA数组的定义及使用方法
- java数组的定义与使用方法
- java数组的定义与使用方法
- 2015.4.20.21.03_数组_2014.4.20.21.03_ JAVA数组的定义及使用方法_0.03
- Java中数组的定义及使用方法
- java中数组的定义及使用方法
- JAVA数组的定义和使用方法实例
- JAVA数组的定义及使用方法
- java中数组的定义及使用方法(推荐)
- java数组定义方法
- 11_5_3给people添加GetOldest()方法,使用上面定义的重载运算符,返回一个Age最大的对象数组
- 关于java中可变长参数的定义及使用方法详解
- JAVA数组的遍历,使用了新的遍历方法foreach
- protobuf extensions(extend)的消息定义及Java使用方法
- Java面向对象-方法的定义及简单使用
- javascript数组的定义及其属性和方法的使用
- java数组定义与初始化,类型转换,instanceof的使用