经过了好几天的复习之后,可能还会遗留一点点知识没有学到,但是也没有办法啦,遇到再补充吧~ 今天学习的内容是 Java 中的方法,也有人叫它函数~(函数与方法是一个东西哈)
方法是一种动作,是可以重复调用的代码段。比如我这里有几块木头,我每次想找个地方坐的时候我就把他们拿出来摆好然后坐着,但是如果我每次都要拿出来摆一下,是不是会很麻烦吗?所以我们会选择把它做成一个椅子,每次坐的时候可以直接拿椅子来坐着,省去了一块块木头摆放的繁琐。这就是方法的方便之处,我有 100 行代码,这里我需要用,我就得写 100 条,我换一个地方需要用我又得写 100 条,这样就会很麻烦,所以我们可以选择将这 100 行代码定义成一个方法,我每次用的时候只需要写这个方法就可以了~
# 方法的定义与声明
[修饰符] <void|返回值类型> 方法名([参数列表]) {
方法体
[return 返回值]
}
【注意】[] 中括号里面的内容是可以省略的。如果没有返回值,那么方法名前面应写 void,如果有返回值,那么写返回值类型。
public class test {
public static void main(String[] args) {
printHelloWorld();
printHelloWorld();
}
static void printHelloWorld() {
System.out.println("Hello World");
System.out.println("I'm Ahanwhite!");
System.out.println("Nice to meet you.");
}
}
像这样,如果重复使用的一段代码比较长的话,使用方法会更方便哦~
方法的重载
方法的重载就是同样的方法名,但是参数(的类型和个数)不同。通过传递参数的个数和不同的类型可以完成不同功能的方法调用。比如我给一个参数就需要做非运算,给两个参数就要做短路与运算:
public static void main(String[] args) {
boolean a = operator(1>2);
boolean b = operator(2>1,1>2);
System.out.println("first="+a+"\nsecond="+b);
}
static boolean operator(boolean b) {
return !b;
}
static boolean operator(boolean a, boolean b) {
return a&&b;
}
用两个变量拿到返回值,输出:
第一个 operator 调用的是一个参数的方法做非运算,第二个 operator 调用的是两个参数的方法 做短路与运算。(非和短路与看不懂的回去翻运算符哈哈哈)
这个就是方法的重载了~
那我们看一个用了很久很久的重载方法:
System.out.println(1+2);//参数1+2为int型参数
System.out.println("1"+2);//参数"1"+2为String型参数
System.out.println(1<2);//参数1<2为boolean型参数
不知道你发现没有呢 (¬ω¬。)
【注意】方法重载只能是参数上的变化,比如参数类型不同、参数个数不同。不能是返回值的变化等。比如这就不叫方法重载了:
static boolean operator(boolean b) {
return !b;
}
static String operator(boolean a, boolean b) {
return a+""+b;
}
方法的结束
一般情况下,可以使用 return 来结束一个方法(如果直接在 return 后面写会报错)
因为报错,我们换一种方式来进行代码测试:
public class test {
public static void main(String[] args) {
operator();
System.out.println("方法已结束");
}
static void operator() {//返回值为空
System.out.println("return前");
if (true) {
return; //因为方法返回值为空,所以这里就不能写返回值了,但是可以使用return,然后用输出语句来测试
}
System.out.println("return后");
}
}
so,输出结果为:没有 return 后的输出,说明方法在 return 执行就结束了方法,没有执行输出 return 后一行。
递归调用
递归调用是个很特殊的调用方式,叫自己调自己 (๑╹◡╹)ノ"""
比如(计算 1 加到 100):
public class test {
public static void main(String[] args) {
int a = operator(100);
System.out.println("1加到100的结果为"+a);
}
static int operator(int num) {
if (num == 1) {
return 1;
}else {
return num + operator(num-1);
}
}
}
输出结果就不用说了 (~ ̄▽ ̄)~ 5050 是肯定的啦~ 有兴趣自己尝试一下哟
常用输出语句
- 换行输出
System.out.println(123);
System.out.println(456);
//输出结果为两行,一行为123,一行为456
- 不换行输出
System.out.print(123);
System.out.print(456);
//输出结果为一行,为123456
- 字节流输出
通常情况下,一个数字或字母占一个字符,一个汉字占 2 个字符。
System.out.write(97);
//出处为a,不换行
- 按格式输出
System.out.printf("%+9.4f",1.23456);
//输出结果为 +1.2345
//"%" 表示进行格式化输出,"%" 之后的内容为格式的定义。
//"+" 表示输出的数带正负号。
//"9.2" 中的 9 表示输出的长度,2 表示小数点后的位数。
//"f" 表示格式化输出浮点数。
//"1.23456" 表示要输出的东西。
这里代码转自百度百科,还有其他输出格式请自行前往:百度百科—printf()
常用的输出语句
这里仅列出一个最常用的 Scanner 类:
首先我们需要导入 Scanner 包,它在 java.awt 包下:
// 可以导入util所有包
import java.util.*;
//也可以单独到如Scanner单独一个类
// import java.util.Scanner;
导包之后方可正常使用,使用时我们需要先创建一个引用类型的变量,类型为 Scanner。再通过对这个变量进行操作。初始化变量时需要传入参数:System.in 这个我们之后学到 I/O 流再讲吧~~
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String favor = scanner.nextLine();
System.out.println("请输入你的年龄:");
int age = scanner.nextInt();
以上,阿里嘎多,20190424 from ahanwhite。