一、什么是方法?
System.out.println()//System是一个类,out是一个对象,println()就是一个方法
方法是语句的集合
命名规则:首字母小写+驼峰命名规则
Ex. 加法
Demo01
//加法
public int add(int a, int b) {
return a + b;
}
此时在main方法里直接调用不了,改为:
public class Demo01 {
//main方法
public static void main(String[] args) {
int sum = add(1, 2);
System.out.println(sum);
}
//加法
public static int add(int a, int b) {
return a + b;
}
}
设计方法的原则:一个方法只完成一个功能(原子性)
二、方法的定义
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;//return还用来终止方法
}
方法名中的参数是形参,用来定义,等同于占位符
三、方法的调用
对象名.方法名(实参列表)
java都是值传递
四、方法的重载
Demo01
重载就是在一个类中,有相同的函数名称,但形参不同的函数
public class Demo01 {
public static void main(String[] args) {
int sum1 = add(1, 2);
System.out.println(sum1);
double sum2 = add(1.1, 2.2);
System.out.println(sum2);
}
public static int add(int a, int b) {
return a + b;
}
public static double add(double a, double b) {
return a + b;
}
public static int add(int a, int b, int c) {}
...
}
方法的重载的规则:
- 方法名称必须相同;
- 参数列表必须不同(个数不同、类型不同或参数排列顺序不同等);
- 方法的返回类型可以相同也可以不相同;
- 仅仅返回类型不同不足以成为方法的重载。
实现理论:方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法;如果匹配失败,则编译器报错。
五、命令行传递参数
CommandLine
在cmd中
C:\Users\xieyueting\Desktop\javaSE\code\JavaSE\Method\src>javac -encoding UTF-8 CommandLine.java
C:\Users\xieyueting\Desktop\javaSE\code\JavaSE\Method\src>java CommandLine
C:\Users\xieyueting\Desktop\javaSE\code\JavaSE\Method\src>java CommandLine this is
args[0]: this
args[1]: is
六、可变参数
也可以叫作不定项参数
在方法声明中,在指定参数类型后加一个省略号(...)
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
public class Demo03 {
public static void main(String[] args) {
Demo03 demo03 = new Demo03();
demo03.test(1,2,3,4,5);
}
public void test(int x,int... i){
System.out.println(i[0]);//输出2
}
}
Ex. 排序
Demo03
public class Demo03 {
public static void main(String[] args) {
printMax(5.2,4,9,6.3,12.2,7.0);
printMax(new double[]{1,2,3});
}
//排序
public static void printMax(double... numbers){
if(numbers.length == 0){
System.out.println("No argument passed!");
return;
}
double result = numbers[0];
for(int i = 1; i < numbers.length; i++){
if(result < numbers[i]){
result = numbers[i];
}
}
System.out.println(result);
}
}
七、递归
方法自己调用自己
递归结构包含两个部分:
-
递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
-
递归体:什么时候需要调用自身方法。
Demo04
public class Demo04 {
public static void main(String[] args) {
Demo04 test = new Demo04();
test.test();
}
public void test(){
test();
}
}
/*会报错死循环:
Exception in thread "main" java.lang.StackOverflowError*/
Ex. 阶乘
Demo05
public class Demo05 {
public static void main(String[] args) {
int result1 = f(1);
int result2 = f(2);
int result3 = f(5);
System.out.println(result1);
System.out.println(result2);
System.out.println(result3);
}
public static int f(int n) {
if(n==1){
return 1;
}else {
return n*f(n-1);
}
}
}
java都是使用栈机制
能不用递归就不用递归,占大量空间内存
标签:java,Day6,System,int,static,println,方法,public From: https://www.cnblogs.com/tse121/p/18687477