方法的定义
Java方法是语句的集合,它们在一起执行一个功能。
1.方法是解决一类问题的步骤的有序代码组合
2.方法包含于类中
3.方法在程序中被创建,在其他地方被引用
优点:1. 使程序变得更简短而清晰。2. 有利于程序维护。3. 可以提高程序开发的效率。4. 提高了代码的重用性
方法的定义规则
方法的命名规则:
方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。
下划线可能出现在方法名称中用以分隔名称的逻辑组件。
方法怎么写?
方法包含一个方法头和一个方法体。 下面是一个方法的所有部分:
修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
返回值类型 :方法可能会返回值。 如没有,则为void。
方法名:方法的实际名称。 方法名和参数表共同构成方法签名。
参数类型:就是参数的数据类型。
方法体:方法体包含具体的语句,定义该方法的功能。
方法中的返回值return
return:结束方法的。
return的结果要和返回值类型相对应。
返回值是什么类型,return就是什么类型。
如果没有返回值,那么不需要return。
注意:1、若当前方法没有返回值类型,即返回值类型是void,那么当前方法中可以不写return
2、return即表示结束一个方法,也可以将返回值返回给调用当前方法的调用者
3、return返回值时一次只能返回一个值,不可以返回多个值
4、一个方法中可以有多个return,但被执行的只能有一个,所以需要判断
方法的四种写法
无参无返回值
public class Demo02 {
public void say(){
System.out.println("hello");}
public static void main(String[] args) {
Demo02 demo02 = new Demo02(); // demo02就是对象,本质还是一个变量
demo02.say();
}
}
无参有返回值
public class Demo02 {
public String grilFriend(){
return "小马哥";}
public static void main(String[] args) {
Demo02 demo02 = new Demo02();
String friend = demo02.grilFriend();
System.out.println(friend);
}
}
有参无返回值
public class Demo02 {
public void showFriend(String name){
System.out.println("老马的对象是:"+name);
}
public static void main(String[] args) {
Demo02 demo02 = new Demo02();
demo02.showFriend("小马哥");
}
}
有参有返回值
public class Demo02 {
public int add(int a,int b){
int c = a + b;
return c;
}
public static void main(String[] args) {
Demo02 demo02 = new Demo02();
int add = demo02.add(4, 5);
System.out.println(add);
}
}
注意:在一些其它语言中方法指过程和函数
一个返回非void类型返回值的方法称为函数
一个返回void类型返回值的方法叫做过程
方法的调用
方法的调用
1 方法想要执行,必须要调用。
2 方法是谁执行的?方法是对象执行的。
3 对象是哪里来的?对象是new出来的, new+方法所在的类名(); new + 构造方法()。
4 对象调用方法: 对象.方法名(参数)。
5 方执行的本质就是: 方法里的代码跑了一边。方法每被调用一次, 方法里的代码就执行一次。
6 定义方法,其实就是在定义规则。这个在方法调用的时候很关键,我们在定义方法的时候,定义好了参数的数据类型,那么调用的时候,必须要和定义的一样。
常见错误
常见错误一:调用方法时不能指定实参类型
常见错误二:形参和实参数据类型不一致!数量也要一致。
两种变量
成员变量:不在方法里的变量就是成员变量
局部变量:在方法里面的变量就是局部变量(包含参数上的变量)
成员变量和局部变量的区别:
1 .成员变量定义在类中,整个类中都可以访问。
2 .局部变量定义在方法中,只能在方法中使用。
3 .成员变量可以不给初始值,因为有默认值,局部变量必须有初始值否则报错(除了参数)。
4 .如果成员变量和局部变量名字一样:成员变量前面可以加this,this代表当前对象。
5. 我们在方法里面使用变量的时候,如果方法里面有,就用自己的,如果没有就用成员变量的,如果成员变量没有,就报错。
6. 作用域不同:成员变量的作用域在整个类内部都是可见的,而局部变量的作用域仅限于定义它的方法。
7. 初始值不同:Java会给成员变量一个初始值,不会给局部变量初始值。
两种数据类型
基本数据类型
如果基本数据类型作为方法的参数:其实就是将基本数据类型的值,拷贝了一份副本给了方法,方法中对这个副本的修改,不会影响到原来的值。
引用数据类型
如果引用数据类型作为方法的参数:其实就是将引用数据类型的地址,拷贝了一份副本给了方法,方法中对这个副本的修改,会影响到原来的值。
基本数据类型和引用数据类型传参时的区别
基本数据类型,操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值。
引用数据类型(类、数组和接口),赋值是把原对象的引用(可理解为内存地址)传递给另一个引用。
构造方法
- 创建对象,new + 构造方法。
- 初始化成员变量(给成员变量赋值)。
作用:对象初始化。
注意:系统提供默认无参构造方法。
有参构造方法
public class Student {
public String name;
public int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
}
无参构造方法
public class Student {
public String name;
public int score;
public Student(){
}
}
方法重载
1.同一个类中。
2. 方法名相同。
3.参数列表不同(参数个数不一样,参数的类型不一样)。
4.与修饰符和返回值无关。
注意事项: 构造方法也可以重载。
构造方法重载
同一个类中:1.自定义构造方法。2.方法名相同。3.参数项不同。4.与返回值,访问修饰符无关。
此时系统不再提供默认无参构造方法。
this关键字如何使用
1.调用属性2.调用方法3.调用构造方法