回顾方法以及加深
方法的定义- 修饰符
- 返回类型
- break,continue,return的区别。
- return代表方法的结束,返回一个结果
- 方法名:注意规范就OK 见名知意
- 参数列表:(参数类型,参数名)…
- 异常抛出:疑问,后面讲解
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tJodnlzi-1632918392282)(D:JAVA学习图片java面向对象 1.png)]
- 在Love_amy中调用amy02的类
- 若是static调用则是:类名.方法名
- 若无static调用则需要:实例化这个类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WgjHK8M4-1632918392284)(D:JAVA学习图片java面向对象 2.png)]
public class Love_amy { //静态方法:加了 static的方法 //非静态方法 public static void main(String[] args) { //有static时的调用:类名.方法名 //调用方法 //实例化这个类 new amy02().amy(); //或者是 //对象类型 对象名=对象值; amy02 amy02=new amy02(); } }
- 两个方法都不是静态
public class amy02 { public void a(){ b(); } public void b(){ }- 此时a可以调用b,b也可以调用a
- 两个都是静态方法
public class amy02 { public static void a(){ b(); } public static void b(){ } }- 此时a也可以调用b,b也可以调用a
- 两个中一个是静态方法 一个不是静态方法
public class amy02 { public static void main(String[] args) { } public static void a(){ b(); } public void b(){ } }[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gjfQpgyI-1632918392286)(D:JAVA学习图片java面向对象 3.png)]
- 发现会报错
- 原因:static是和类一起加载的没有static时是类实例化之后才存在的
- 可以理解为一个存在的东西调用一个不存在的东西所以会报错。
形参和实参
-
public class amy02 { public static void main(String[] args) { new amy02().add(1,2); } public int add(int a,int b){ return a+b; } } -
当方法为静态时
-
public class amy02 { public static void main(String[] args) { int add=amy02.add(1,2); } public static int add(int a,int b){ return a+b; } }实际参数和形式参数的类型要对应
-
值传递和引用传递 值传递
public class amy02 {
public static void main(String[] args) {
int a=1;
System.out.println(a);
amy02.change(a);
System.out.println(a);
}
public static void change(int a){
a=10;
}
}
- 运行该代码发现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fBLOFhlw-1632918392288)(D:JAVA学习图片java面向对象 4.png)]
- 思考走了change后为什么还是返回了1?
- 把实参传给了方法的a但是方法中的a是形参,但是他的返回值是空,用DeBug可以观察a的变换这就是值传递。
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MJoJb3Ft-1632918392290)(D:JAVA学习图片java面向对象 5.png)]
-
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lFcNJRAS-1632918392291)(D:JAVA学习图片java面向对象 6.png)]
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4EMPZAjN-1632918392292)(D:JAVA学习图片java面向对象 7.png)]
引用传递
public class amy02 {
public static void main(String[] args) {
person person = new person();
System.out.println(person.name);//null
amy02.change(person);
System.out.println(person.name);//YYY
}
public static void change(person person) {
//peoson 是一个对象:指向的是person这个类---->person person=new person();这个是具体的人可以改变属性
person.name="YYY";
}
}
//定义了一个person类,有一个属性:name
class person{
String name;//null
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RQ460vAh-1632918392292)(D:JAVA学习图片java面向对象 8.png)]



