往期: JAVA 修炼秘籍第一章:《痛苦的折磨》 JAVA 修炼秘籍第二章:《逐渐魔化》 JAVA 修炼秘籍第三章:《绝地反击》
一、方法
在JAVA中什么是方法呢,方法其实与C语言中的函数是大相径庭的,方法可以帮助我们更清晰的理解代码,并且可以重复使用重复调用,大大减少了代码的重复性。
方法的书写格式如下:
public class Prog{
public static int add(int x,int y){
return x+y;
}
public static void main(String[] args) {
int a=3;
int b=5;
int c=add(a,b);
}
}
通过图片来分析代码:
注释部分: 1.在JAVA的方法书写格式与定义中,方法参数可以没有,如果有一定要指定类型。 2.返回值可以没有,如果没有返回值的方法,写上void。 3.方法定义时的参数为形参,方法调用时的参数为实参,形参是实参的一份临时拷贝。 4.方法的定义必须在类中, 调用位置的上方或者下方都可已。 5.方法只会在被调用时运行,不调用则不会。 6.遇到return语句则直接返回,不会继续函数内部后面的代码。
方法的重载
什么是方法的重载,当我想要计算两个正数数相加需要写一个函数,当我想计算两个小数相加又要写一个函数,两个短整型呢?还是很麻烦,这个时候,我们就需要用到重载,可以大大提升我们的代码清晰度,与简洁。不光可以写两个,可以重载很多个。
代码如下:
public static int add(int x,int y){
return x+y;
}
public static double add(double x,double y){
return x+y;
}
public static void main(String[] args) {
int a=10;
int b=20;
double c=2.5;
double d=10.3;
System.out.println(add(a,b));
System.out.println(add(c,d));
}
输出结果为:30 12.8。 注释部分: 1.可以看到两个add函数的实现大致相同,他们的作用也相同,不同的点在于他们的参数类型不同,返回值不同。 2.方法名相同。 3.返回值不做要求。 4.参数列表不同,参数个数与参数类型。 5.必须在一个类中。
方法递归
一个方法在执行的过程中调用自身, 就称为递归,递归的程序的执行过程不太容易理解, 要想理解清楚递归, 必须先理解清楚 “方法的执行过程”, 尤其是 方法执行结束 之后, 回到调用位置继续往下执行。
代码部分:计算n的阶乘
public static int factor(int n){
if(n==1){
return 1;
}
return n*factor(n-1);
}
public static void main(String[] args) {
int n=5;
System.out.println(factor(n));
}
注释部分: 1.自身调用自身。 2.要有终止条件。 3.自己能推到出递归公式。
赠送一张图片方便理解:
一定要认真学习并且习惯使用递归,因为在后面一些数据结构中二叉树等都是需要用递归来实现的,递归YYDS,用多了就不难了。
二、数组
在JAVA中数组的使用是非常方便的,数组是多个相同类型的批量创建,数组的定义如下,然后来介绍一下数组的存储形式。
代码如下:
public static void main(String[] args) {
int[] arr={1,2,3,4,5};
}
注释部分: 1.上面代码转换为中文-》数据类型[ ] 数组名={初始化数据}。 2.这样就用一行代码创建了5个类型为 int 的变量。 3.JAVA中的数组都是在堆上创建的,数组名只是保留了地址。 4.JAVA中栈上的地址是拿不到的,堆上的地址可以拿到,但是不是真的,但是可以看作是真实的。 5.数组的的内存形式如下图所示:
获取数组长度与访问数组
在JAVA中获取数组长度非常简单,随时随地获取,非常简单
代码如下:
public static void main(String[] args) {
int[] arr={1,2,3,4,5};
System.out.println(arr.length);
System.out.println(arr[1];
}
注释部分: 1.数组名.length就可以直接计算出当前数组的长度,打印结果为5. 2.数组名[下标],可以直接访问下标所对应的数字,数组的下标是从0开始的,不是1
拷贝数组与以字符串的形式打印数组
拷贝数组其实可以手动实现,也可以使用方便快捷的库方法直接调用,这里介绍这两种数组操作的快捷方法,可以去放心大胆的刷题,自己实现也非常容易. 代码如下:
import java.util.Arrays;(1)
public static void main(String[] args) {
int[] arr1={1,2,3,4,5,6};(2)
int[] arr2=new int[arr1.length];(3)
System.out.println(Arrays.toString(arr1));(4)
arr2=Arrays.copyOf(arr1,arr1.length);(5)
System.out.println(Arrays.toString(arr2));(6)
}
注释部分:(按照代码中(数字)来分析) (1).调用包,使用库方法; (2).创建数组1; (3).创建空数组2,长度为数组1的长度. (4).输出arr1这个库方法是以字符串的形式打印数组,格式为Arrays.toSring(数组名); (5).拷贝数组,将arr1中的内容拷贝到arr2中,格式Arrays.copyOf(被拷贝数组名,拷贝长度); (6)与(4)相同.
数组内容梳理完成,还有二维数组,二维数组与数组大同小异,随处可见,这里就不多比比了,再见.
|