方法的定义
- 修饰符
- 返回值的类型
- break和return的区别
-break跳出循环
-return结束方法,返回一个结果 - 参数列表:参数类型,参数名
- 异常抛出 throws
方法的调用
- 自身的调用:递归
- 静态方法static
- 非静态方法
- 形参,实参
- 值传递和引用传递
-JAVA都是值传递 - this关键字:调用本类中的方法或者属性
静态方法与非静态方法
- static静态方法与类一起加载
- 非静态方法与对象有关,当类实例化为一个对象,它才存在
- 调用方法的两种方式:类名调用,对象名调用
- 静态方法可以互相调用
- 非静态方法也可以互相调用
- 静态方法不可以调用非静态方法
- 非静态方法可以调用静态方法
Demo01类
//Demo01类
public class Demo01 {
//main方法
public static void main(String[] args) {
//调用Student类中的静态say()方法
Student.say();
//调用Student类中的非静态say1()方法
//Student.say1();//报错
//解决方法,实例化new这个类
new Student().say1();
//但习惯上new一个对象
//对象类型 对象名字 = 对象值(为实例化的一个对象)
Student student = new Student();
student.say1();
}
//1.当方法a为非静态,方法b也为非静态,a和b可以互相调用
//2.当方法a为静态,方法b也为静态,a和b可以互相调用
//3.当方法a为静态,方法b为非静态,a不可以调用b
//4.当方法a为非静态,方法b也为静态,a内可以调用b
//非静态方法a
public void a(){
b();
}
//静态方法b
public static void b(){
//a();//报错
}
}
Student类
public class Student {
public static void main(String[] args) {
}
//静态方法
public static void say(){
System.out.println("学生的静态方法");
}
//非静态方法
public void say1(){
System.out.println("学生的非静态方法");
}
}
形参,实参的关系
public class Demo02 {
public static void main(String[] args) {
//形参和实参的类型要对应
System.out.println(Demo02.add(1, 2));//类名.方法名
System.out.println(add(1, 2));//方法名
}
//add方法
public static int add(int a, int b){
return a+b;
}
}
值传递和引用传递
引用传递:传递对象,本质还是值传递
//值传递
public class Demo03 {
public static void main(String[] args) {
int a = 1;
change(a);//方法名
Demo03.change(a);//类名.方法名
System.out.println(a);//a = 1
}
//无返回值
public static void change(int a) {
a = 10;//改变形参a为10
}
}
//引用传递:传递对象,本质还是值传递
public class Demo04 {
public static void main(String[] args) {
//new实例化一个对象
Person person = new Person();
//打印对象的属性
System.out.println(person.name);//null
//传递了person对象
change(person);
System.out.println(person.name);//小乔
}
//无返回值,形参为Person类型
public static void change(Person person) {
//person是一个对象,指定的是Person类,可以改变属性
//Person person = new Person();
person.name = "小乔";//改变了person对象的属性name
}
}
//定义一个Person类,有一个属性:name
class Person{
//类属性,变量
String name;//默认为null
}