Java 基础Java 数组方法极致精讲
Posted 敬 之
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 基础Java 数组方法极致精讲相关的知识,希望对你有一定的参考价值。
《Java 零基础入门到精通》专栏持续更新中。通过本专栏你将学习到 Java 从入门到进阶再到实战的全套完整内容,所有内容均将集中于此专栏。无论是初学者还是有经验的开发人员,都可从本专栏获益。
订阅专栏后添加我微信或者进交流群,进群可找我领取 前端/Java/大数据/Python/低代码/云原生 等全套视频课程,同时共同探讨问题、携手共进~
一、Java 数组详解
数组是一种数据类型(引用型),它是相同数据元素的集合,也就是说每一个数组中的元素的数据类型必须是相同的。在这里我们对数组的 声明
、初始化
、访问
、遍历
、复制
和 排序
相关操作进行介绍。
1.1 声明数组
声明数组即定义数组变量,数组必须先经过声明后才能在程序中被使用,声明方式如下:
//声明整型数组a,包含10个元素,每个元素都是int类型,默认值为0
int[] a = new int[10];
//声明浮点型数组b,包含20个元素,每个元素都是double类型,默认值为0.0
double[] b = new double[20];
//声明布尔型数组c,包含30个元素,每个元素都是boolean类型,默认值为false
boolean[] c = new boolean[30];
1.2 初始化数组
数组的初始化其实就是为数组赋值。赋值方式有三种情况。
① 正常声明数组后会默认使用 默认值
为该数组赋值,如 int 型数组 a 如果不进行初始化的话默认赋值为 [0,0,0];
int[] a = new int[3]; //[0,0,0]
② 当数据元素比较少的时候,我们可以直接在声明数组的同时为其赋值,在大括号中输入值并用逗号隔开。但注意这种方式必须是声明的同时赋值,不可分开;
int[] a = 1,2,3; //[1,2,3]
③ 声明并赋值还有另一种写法是这样的,保留 new 关键字。与 ② 的区别是此写法可以将声明与赋值分开。
int[] b; //声明
b = new int[]1,2,3; //赋值[1,2,3]
1.3 访问数组
访问数组即如何去使用数组中的元素。当数组被声明和初始化之后,数组名.length
可获取数组长度,数组名[下标]
可获取数组中的某一个元素,下标从 0 开始,“数组名[0]”代表该数组的第一个元素,“数组名[2]”代表该数组的第三个元素。
int[] a = new int[3]; //[0,0,0]
System.out.println(a[0]); //输出数组a第一个元素的值
a[1] = 100; //赋值数组a的第二个元素为100
a[2] = 200; //赋值数组a的第三个元素为300
//a[3] = 300; //运行时会发生数组下标越界异常,
System.out.println(a[a.length-1]); //输出数组a最后一个元素的值
1.4 遍历数组
遍历也叫迭代,就是将数组中的所有元素从头到尾挨个走一遍。遍历需要使用到 for 循环。
int[] arr = new int[10];
for(int i=0;i<arr.length;i++) //遍历arr数组
arr[i] = 100; //赋值数组的每一个元素为100
System.out.println(arr[i]); //输出数组每一个元素的值
1.5 复制数组
复制数组的第一种方式是使用 arraycopy
关键字,格式为:
System.arraycopy(源数组,源数组的起始下标,目标数组,目标数组起始下标,要复制的元素个数);
如下,将数组 a(第二个元素开始后面的四个元素)复制到数组 b(第一个元素起始)。
public static void main(String[] args)
int[] a = 1,2,3,4,5;
int[] b = new int[6]; //[0,0,0,0,0,0]
//a 源数组
//1 源数组的起始下标
//b 目标数组
//0 目标数组起始下标
//4 要复制的元素个数
System.arraycopy(a,1,b,0,4);
for(int i=0;i<b.length;i++)
System.out.println(b[i]); //[2,3,4,5,0,0]
复制数组的第二种方式是使用类 Arrays
,格式为:
Arrays.copyOf(源数组,目标数组的长度);
在使用 Arrays 之前需要先引入;
如下将数组 a 复制到数组 b。注意一下如果目标数组的长度大于原数组,那么多出来元素将会以默认值赋值;如果目标数组的长度小于原数组,那么多余复制的元素将会被截掉。
public static void main(String[] args)
int[] a = 1,2,3,4,5;
//a 源数组
//6 目标数组的长度
int[] b = Arrays.copyOf(a,6);
for(int i=0;i< b.length;i++)
System.out.println(b[i]); //[1,2,3,4,5,0] 第六个元素为多出来的元素,所以默认为0
1.6 排序数组
排序可以说是数组中最为常用的算法。使用 Arrays.sort(数组);
可对数组进行升序排列。如下是对一个包含 10 个随机数的数组升序排列。
public static void main(String[] args)
int[] arr = new int[10];
for(int i=0;i< arr.length;i++)
arr[i] = (int)(Math.random()*100);
System.out.println(arr[i]);
Arrays.sort(arr); //对数组升序排列
System.out.println("升序后的数组为:");
for(int i=0;i< arr.length;i++)
System.out.println(arr[i]);
二、Java 方法详解
方法也称函数,用于封装一段特定的业务逻辑功能,减少代码的重复,有利于代码维护。通常在设计方法的过程中应尽量独立,也就是说尽量让它 只做一件事情
即可。
方法最明显的特征就是带 ()
,我们经常使用的 println()、Math.random()、arraycopy()、sort() 等等都是 Java 已经为我们封装好的方法。
2.1 定义方法
方法的定义一共需要包含包含五个要素:
要素 | 含义 |
---|---|
修饰词 | public static |
返回值类型 | 方法可以有返回值,也可以无返回值(依业务需求而定) ● 无返回值设计为 void ● 有返回值时设计为特定的数据类型即可 |
方法名 | 方法名的命名规则应见名知义,且使用驼峰命名法 |
参数列表 | 参数列表位于方法名后的括号中,格式为:方法名(参数列表) 方法可以无参,也可以有参,但有参可以使方法更加灵活 参数的书写方法和定义变量是一样的,如 int a,String b |
方法体 | 即业务逻辑的实现, 中的代码 |
方法的标准格式如下:
//标准格式
修饰词 返回值类型 方法名(参数列表)
方法体
//最常见的标准方法就是主方法main
public static void main(String[] args)
......
在方法的定义过程中,要注意每个方法之间都是 并列关系
,主方法 main 是一个方法,我们自己定义的方法也是一个方法,所以自定义方法一定不能放到主方法 main 里面。而当调用自定义方法的时候就需要在 main 中调用了,因为“计算机只认主方法”。
//主方法main
public static void main(String[] args)
say(); //自定义方法在此调用
//自定义方法say
public static void say()
System.out.println("大家好,我是敬 之!");
2.2 调用方法
方法可以被反复多次调用。针对有返回值和无返回值以及有无参数,调用方式稍有区别:
无参无返回值时,直接 方法名();
调用;
//主方法main
public static void main(String[] args)
say(); //调用say
//自定义方法say(无参无返回值)
public static void say()
System.out.println("大家好,我是敬 之!");
有参无返回值时,调用时必须传参,方法名(参数值);
补充:
- 定义方法时的参数为形参
- 调用方法时传入的参数为实参
//主方法main
public static void main(String[] args)
Hello("敬 之"); //调用Hello,有参必须传参且参数类型必须匹配
//自定义方法hello(有参无返回值)
public static void Hello(String name) //加入一个String类型的参数name
System.out.println("大家好,我是"+name+"!");
有参无返回值,且多个参数时,方法名(参数值1,参数值2);
//主方法main
public static void main(String[] args)
Hello("敬 之",23); //调用Hello,有参必须传参且参数类型必须匹配,传两个参
//自定义方法hello(有参无返回值)
public static void Hello(String name,int age) //加入一个String类型的参数name和一个int类型的参数age
System.out.println("大家好,我是"+name+",今年"+age+"岁!");
当无参有返回值的时候,方法中必须通过关键字 return
来返回一个数据,而且 return 返回的数据类型必须与返回值类型匹配。调用这种方法时需要声明一个对应类型的变量用于接收此方法。
//主方法main
public static void main(String[] args)
double a = getNum(); //声明一个double型变量来接收
System.out.println(a); //3.1415
//自定义方法getNum(有返回值,返回值数据类型为double)
public static double getNum()
return 3.1415; //return返回一个double型数据。此语句的含义为结束此方法的同时返回3.1415给调用方
有参有返回值时调用如下;
//主方法main
public static void main(String[] args)
int add = plus(4,5); //声明一个int型变量来接收
System.out.println(add); //9
//自定义方法plus(有参有返回值)
public static int plus(int a,int b) //加入两个int型数据a和b
int num = a+b;
return num;
三、小案例
3.1 找出数组的最大值/最小值
首先声明一个包含 10 个元素的数组,将它们赋值为 0~99 的随机数。我们假设第一个元素为最大值 max,接下来遍历除第一个元素之外的剩余元素,让剩余元素一个一个的与当前设定的最大值 max 进行比较,如果大于 max,则将这个较大的值赋给 max,以此类推,知道将剩余元素全部比较完,最后输出的 max 就是整个数组的最大值。
public static void main(String[] args)
int[] arr = new int[10]; //声明数组arr
for(int i=0;i<arr.length;i++) //遍历数组arr
arr[i] = (int)(Math.random()*100); //为每个元素赋值0-99的随机数
System.out.println(arr[i]); //输出每个元素的值
int max = arr[0]; //假设第一个元素为最大值
for(int i=1;i<arr.length;i++) //遍历除第一个元素之外的剩余元素
if(arr[i]>max) //若剩余元素大于当前的max
max = arr[i]; //则修改max为那个较大的值
System.out.println("该数组中的最大值为"+max);
程序运行效果如下:
找最小值同理,相反操作即可。
3.2 创建一个方法,用于生成十个随机数的数组
//主方法main
public static void main(String[] args)
int[] arr1 = testArray(); //定义同类型的新数组arr1用于接收testArray方法传回来的数组
System.out.println(arr1.length); //输出数组的长度
System.out.println(arr1[2]); //输出数组的第三个元素
//自定义方法testArray(无参有返回值)
public static int[] testArray() //返回值类型为int数组
int[] arr = new int[10];
for(int i=0;i<arr.length;i++)
arr[i] = (int)(Math.random()*100);
return arr;
程序运行效果如下:
对于数组的灵活运用。精讲!
return 语句无非是精中之重,可以说学好返回值,就学好一大半数组
那就先回顾一下
return 语句是 Java 语言中的跳转语句,主要作用:结束被调方法的执行,返回主调方法 ; 返回一个表达式的值 ; 返回值传递的过程其实就是一个赋值的过程,将 return 语句之后的表达式的值赋值给主调方法中用于接收返回值的变量。 方法可以没有返回值,也可以存在返回值,但最多只能存在一个返回值。 值类型变量里存放的时值本身,引用类型变量里存放的时地址。 当 参数是值类型时,形参和实参的取值是不同步的,当参数是引用类型时,形参和实参的取值是同步的。 一,请问?在 程序中,若要存储一位同学的 Java 课程的成绩,如何实现?若要存储三十位同学的Java课程的成绩,如何实现?
这便是Java的数组
数组是一个变量,用于将相同数据类型的数据存储在内存空间中,数组中的所有元素必须属于相同的数据类型
Java中的数组
在Java语言中,存在多种形式的数组
在Java语言中,一维数组的使用类似于变量的使用,分为以下4个步骤:
声明数组
创建数组
初始化数组
引用数组元素
声明数组
声明数组是使用数组的第一步,需要说明数组元素的类型以及数组的名称
数据类型 [] 数组名 ; 或数据类型 数组名 [];
初始化数组
可通过以下三种方式为数组进行初始化
创建后初始化
创建时初始化
默认值初始化
Java中的数组JavaJava中的数组中的数组Java中的数组Java中的数组Java中的数组
以上是关于Java 基础Java 数组方法极致精讲的主要内容,如果未能解决你的问题,请参考以下文章