方法: 一系列有序的集合解决特定的问题。解决问题的一系列步骤。
修饰符 返回值类型 方法名(参数类型参数名){
...
方法体
...
return 返回值
}
修饰符: 目前阶段 public
返回值类型: 本质上来说还是个数据类型.
方法名: 方法的名字(方便被使用,命名规则和变量一样)
参数类型: 本质上来说还是个数据类型
参数: 相当于原料 本质就是变量
方法体: 操作过程
retrun: 关键字,必须放在返回值前面。如果代码执行到return后面的代码就不执行了
返回值: 做饭的结果
常见的方法类型
public static void main(String[] args) {
Demo02 demo02 = new Demo02(); //创建对象 对象名也是变量名
String nameIt = demo02.nameIt("米", "粒");
System.out.println(nameIt);
demo02.talk("米粒");
String goGirlFriend = demo02.goGirlFriend();
System.out.println(goGirlFriend);
demo02.say();
}
1 有参有返回值
public String nameIt(String firstName, String secondName) {
return firstName + secondName;
}
2 有参无返回值
public void talk(String name) {
System.out.println("今天" + name + "表现不错加10分");
}
3 无参有返回值
public String goGirlFriend() {
return "米粒";
}
4 无参无返回值
public void say() {
System.out.println("米粒,有人喜欢你!");
}
方法使用: 就是将方法里面的代码执行一遍。
1 方法想要执行,必须要被调用。对象调用方法
2 new一个对象
3 new这个方法所在的类+()
4 调用格式 对象名,方法名(xx)
形参:就是占位置的参数,没有实际意义(定义方法的时候,参数就叫形参)
实参:方法调用的时候使用的参数就是实参,确定的一个数据,不需要前面再加数据类型
方法调用的时候
基本数据类型做参数: 传递的是 值的拷贝
引用数据类型做参数: 传递的是地址值
成员变量:方法外面的变量
局部变量:方法里面定义变量就是局部变量(包含参数)
区别: 1 成员变量可以不用赋初始值;他有默认值;
局部变量如果不赋初始值,直接报错
2 位置不一样
3 局部变量前面不可以加修饰
如果方法里面的局部变量和成员变量名字一样,我们该怎么区别:
成员变量前面加 this, 这个方式在static修饰的方法里面没有用
如果方法使用一个变量的时候,先找局部变量,如果没有,再找成员变量,如果还没有,就报错
构造方法
public 类名(){
}
和普通方法比较:
1 不写返回值类型(void也不写)
2 方法名和类名相同(首字母大写)
3 可以有参数
作用:
1 创建对象
2 初始化成员变量
方法重载: 在同一个类里面,方法名相同,参数列表不同,和返回值、修饰符无关
1、在同一个类里面
2、方法名相同
3、参数列表不同 (参数类型、参数个数不一样)
构造方法也可以重载
练习:1 求两个数的和 求三个数的和
import java.util.Scanner;
public class Text02_2 {
public static void num(int num1, int num2){
int addnum = num1 + num2;
System.out.println(addnum);
}
public static void sum(double sum1,double sum2,double sum3){
double addsum = sum1+sum2+sum3;
System.out.println(addsum);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Text02_2 text022 = new Text02_2();
System.out.println("求两个数的和");
Text02_2.num(scanner.nextInt(),scanner.nextInt());
System.out.println("求三个数的和");
Text02_2.sum(scanner.nextDouble(),scanner.nextDouble(),scanner.nextDouble());
}
}
练习2:使用学员对象数组作为参数,实现学员成绩修改
如果学员成绩低于60分,整体提高5分
public void addScore(Student[] students){
for (int i = 0; i < students.length; i++) {
if (students[i].score<60){
students[i].score += 5;
}
}
}
public static void main(String[] args) {
Student student1 = new Student("张三", 18, 50);
Student student2 = new Student("张三", 18, 10);
Student student3 = new Student("张三", 18, 20);
Student student4 = new Student("张三", 18, 30);
Student student5 = new Student("张三", 18, 40);
Student student6 = new Student("张三", 18, 60);
Student[] students = {student1,student2,student3,student4,student5,student6};
Text01 text01 = new Text01();
System.out.println(Arrays.toString(students));
text01.addScore(students);
System.out.println(Arrays.toString(students));
}
public class Student {
String name;
int age;
int score;
public Student(String name, int age, int score) {
this.name = name;
this.age = age;
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
}
}