方法
方法是语句的集合((功能块));
-
方法是解决一类问题的步骤的有序组合
-
方法包含于类或对象中
-
方法在程序中被创建,在其他地方被引用
设计方法的原则:保持方法原子性(一个方法只实现1个功能,有利于后期的拓展)
一、方法的定义&调用
1、方法定义
修饰符 返回值类型 方法名(参数类型 参数名) {
…
方法体
…
return 返回值
}
2、方法调用
类名.方法名
对象名.方法名
方法命名:遵守小驼峰规范
ps: 下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test_,例如testPop_emptyStack
实参&行参:
值传递&引用传递:JAVA只有值传递,但是有两类参数传递:
基本类型,运行程序后实参不变,将实参拷贝传递到方法(形参)。
引用类型,运行后实参改变——实际是将引用的值(实参)拷贝到方法内(形参),但引用指向的都是同一个堆内存,所以进行的修改操作同样有效。
二、方法重载
方法名字相同,参数列表不同(参数个数或类型不同)
方法重写:重写继承自父类的方法(在面向对象的继承中会学到)
三、命令行传参(拓展)
给main方法传递参数
public class Demo03 {
public static void main(String[] args) {
//args.length 数组长度
for (int i = 0; i < args.length; i++) {//命令行传参
System.out.println("args["+i+"]:"+args[i]);
}
}
}
在IDEA中直接编译会直接显示 进程已结束,退出代码0
所以我们打开文件根目录 E:\Code\JavaSE\src\com\kang\method ,在文件根目录输入cmd,进入cmd进行编译。
在命令行窗口,输入javac -encoding utf-8 Demo03.java
,编译后,在Demo03.java文件根目录下可以看见多出了一个Demo03.class文件,可以知道已经成功编译完成。
此时我们在,命令行窗口(E:\Code\JavaSE\src\com\kang\method),若运行Demo03,则会报错:找不到或无法加载主类 Demo03。
这是因为Demo03在 src\com\kang\method 目录下,因此我们要回退到 src\ ,此时再输入 java com.kang.method.Demo03
,并在之后加入要传递的参数,点击【Enter】
四、可变参数
可变参数(不定项参数):JDK1.5开始,java支持同类型的可变参数给一个方法;在指定参数类型后加一个省略号(…);必须放在最后一个参数,且一个方法中只支持一个可变参数。
… 必须放在最后一个参数(不定项参数)
例子:
public class Demo04 {
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
demo04.text(1,2,3,4,5,6,45,66);
}
public void text(int x,int... i){//可变参数
System.out.println(Arrays.toString(i));
}
}
五、递归
之后再学习数据结构中再回顾整理
自己调用自己,将复杂问题简化为规模较小的问题来求解
递归头
递归体
递归代码量少,时间复杂度高,所以使用的时候,要考虑效率问题
面试常问、笔试