
文章目录
- 成员变量
- 局部变量
- 成员变量与局部变量的区别
 
- 方法
- 方法的作用
- 方法的声明
 
成员变量
Java中的成员变量是指
类中声明的变量,也称为实例变量或属性。它们与方法一样属于类的成员,不同之处在于,它们存储在对象(堆)中而不是栈中,并且每个对象都有自己的一组值。
成员变量可以用来描述一个对象的状态,例如人的年龄、学生的姓名等。它们可以具有public、private、protected和默认(即没有修饰符)四种访问权限。
在Java中,如果没有显式地初始化成员变量,则它们将自动地初始化为其类型的默认值,如int类型变量默认值为0,引用类型变量默认值为null。
public class Person {
    public String name; //public访问权限
    private int age; //private访问权限
    //构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    //成员方法
    public void sayHello() {
        System.out.println("My name is " + name + ", I'm " + age + " years old.");
    }
}
局部变量
Java中的局部变量是声明在
代码块(比如方法、循环、分支语句等)内部的变量,它们只能在声明它们的代码块内使用。与成员变量不同的是,局部变量不属于对象,而是存储在栈中。
局部变量必须在使用之前进行初始化,否则编译器会报错。一般情况下,在代码块内部第一次赋值即可。
public void sayHello() {
    String name = "Tom"; //局部变量,必须初始化
    int age; //定义局部变量
    System.out.println("My name is " + name);
    if (someCondition) {
        age = 20; //给局部变量赋值
    } else {
        age = 30; //给局部变量赋值
    }
    System.out.println("I'm " + age + " years old.");
}
成员变量与局部变量的区别
成员变量和局部变量都是用于存储数据的变量,但它们有一些关键的区别
-  作用域:成员变量属于类,因此它们的作用域是整个类。而局部变量只存在于方法、循环或代码块中,并且只能在其声明的范围内访问。
-  生命周期:成员变量的生命周期与对象的生命周期相同。也就是说,只要对象存在,成员变量就一直存在。而局部变量只在其声明的代码块内存在,在该代码块执行完毕后就会消失。
-  可见性:成员变量可以有不同的可见性修饰符(public、protected、private等),这些修饰符控制着成员变量对其他类和对象的可见性。而局部变量只能在其所在的代码块内部访问。
-  默认值:当声明成员变量时,如果没有显式地对其进行初始化,则会赋予默认值(例如,整数类型的成员变量默认值为0)。而声明局部变量时,必须显式地进行初始化,否则编译器会报错。
-  存储位置:成员变量存储在堆内存中,而局部变量存储在栈内存中。
方法
方法(Method)是一种执行特定任务的
代码块。它们是定义在类中的函数,可以被其他部分调用。Java中的方法包括两个主要组件:方法头和方法体。方法头指定了方法的名称、参数和返回值类型。方法体是一个代码块,包含了要执行的具体操作。
方法的作用
方法在Java中具有以下主要作用:
-  提高代码的可读性和复用性
 方法可以将代码划分为更小、更具可读性的模块。这不仅使代码易于阅读和理解,也使代码易于维护和修改。此外,方法还可以被多次调用以完成相同或类似的任务,提高了代码的复用性。
-  封装和隐藏实现细节
 方法可以将代码逻辑封装在一起,隐藏实现细节。这样,其他部分只需要知道如何调用该方法,而不需要关心方法内部的实现细节。
-  实现程序的模块化设计
 Java中的方法可以根据功能进行划分,实现程序的模块化设计。每个方法可以专注于实现某个具体的功能,使整个程序结构清晰明了。
-  支持多态性
 Java中的方法支持多态性,即相同的方法名可以被不同的类实现,并且能够根据运行时对象的类型自动选择正确的方法。这种特性是面向对象编程的重要特点之一。
方法的声明
Java中的方法声明主要包括以下部分:
-  访问修饰符
 访问修饰符用于控制方法的可见性,包括public、private、protected和默认(不写任何访问修饰符)四种。
-  返回值类型
 返回值类型指定了方法返回的数据类型。如果方法不返回任何值,则返回类型为void。
-  方法名
 方法名是方法的标识符,用于在程序中调用该方法。
-  参数列表
 参数列表指定了方法接受的参数类型和参数名称。如果方法不需要任何参数,则参数列表为空。
-  方法体
 方法体是一段由花括号包裹的代码块,包含了要执行的具体操作。
Student类
package atuigu03.field_method;
public class Student {
    // 定义学生类,包含姓名、年龄和成绩三个属性
    private String name;
    private int age;
    private double score;
    // 构造方法,初始化学生对象
    public Student(String name, int age, double score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }
    // 获取学生姓名
    public String getName() {
        return name;
    }
    // 设置学生姓名
    public void setName(String name) {
        this.name = name;
    }
    // 获取学生年龄
    public int getAge() {
        return age;
    }
    // 设置学生年龄
    public void setAge(int age) {
        this.age = age;
    }
    // 获取学生成绩
    public double getScore() {
        return score;
    }
    // 设置学生成绩
    public void setScore(double score) {
        this.score = score;
    }
    // 打印学生信息
    public void printInfo() {
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
        System.out.println("Score: " + score);
    }
    public void specialty(String name, String time, String Specialty) {
        System.out.println("姓名:" + name);
        System.out.println("练习时长:" + time);
        System.out.println("特长:" + Specialty);
    }
}
调用
package atuigu03.field_method;
public class StudentTest {
    public static void main(String[] args) {
        // 创建学生对象并初始化
        Student s1 = new Student("蔡徐坤", 30, 99.0);
        // 调用对象的方法
        System.out.println("set前:");
        s1.printInfo();
        s1.setScore(66.0);
        s1.setAge(35);
        System.out.println("set后:");
        s1.printInfo();
        s1.specialty("蔡徐坤", "2.5年", "唱跳rap篮球");
    }
}



















