JAVA学习之路 (五) 类

java类的学习

先上一个代码

package bankCard;
import java.util.Scanner;

// 银行卡类
public class bankCard {
    // 静态变量
    static String host = "www.gcsn.site";
    // 成员变量
    private static int ID; // 账号
    private double blance; // 余额
    
    // 构造函数
    public bankCard() {
        // 无参构造函数
    }
    public bankCard(int id, double money) {
        //有参构造函数
        ID = id;
        blance = money;
    }
    
    // 成员函数(共有) / 成员方法
    public double intId() {
        // 存钱
        System.out.println("请输入您要存的钱数,只能是整钱");
        Scanner write_in = new Scanner(System.in);
        // 局部变量
        double money = write_in.nextInt();
        this.blance +=money;
        System.out.println("您的ID卡号为"+ID+"的账户存入"+money+"元余额为"+blance);
        
        return blance;
    }
    // 成员函数(共有)
    public double outId() {
        // 取钱
        System.out.println("请输入您要取出的钱数,只能是整钱");
        Scanner write_in = new Scanner(System.in);
        double money = write_in.nextInt();
        if(money > blance) {
            System.out.println("您的余额不足!当前余额为"+blance);
        }else {
            this.blance -=money;
            System.out.println("您的ID卡号为"+ID+"的账户取出"+money+"元,剩余余额为"+blance);
        }
        
        return blance;
    }
    
    public static void main(String [] args) {
        // 推荐使用类来访问
        System.out.println("static-----" +bankCard.host);
        System.out.println("static-----" +host); // 静态成员函数可以直接访问静态变量
        bankCard b1 = new bankCard(1234, 2000.00);
        b1.intId();
        b1.outId();
    }
}

成员变量和局部变量

clipboard.png

clipboard.png

成员变量和局部变量的区别

  • 作用域不同
局部变量只能在定义它的方法内使用。
成员变量则是可以在整个类内都可以使用。
  • 初始值不同
java会给成员变量一个初始值,
java不会给局部变量一个初始值(必须自己初始化)。
  • 两类变量同名时,局部变量具有更高的优先级

构造方法

var car = new Car();

// 通常我们都会new 实例化一个对象,其实new后面跟的就是构造方法
使用new + 构造方法 来实例化一个新的对象。
构造方法是定义在类中的,用来初始化一个对象。
构造方法必须于类名相同,且没有返回值。

当没有构造方法时,系统会自动添加一个无参的构造方法;
如果自定义了一个构造方法,那么系统将不会为我们创建无参的构造方法了,也就无法调用无参的构造方法。

构造方法的重载:
方法名相同,但是参数不同的多个方法,调用的时候会根据不同的参数来选择相应的构造函数。

clipboard.png

类的成员方法

1 类的成员方法的定义

clipboard.png

Java 中的 static 使用之【静态变量】

我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立。然而在某些时候,我们更希望【该类所有的对象共享同一个成员】。此时就是 static 大显身手的时候了!!

Java 中被 static 修饰的成员称为【静态成员或类成员】。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问~~

  • 静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收!~~
public class HelloWorld {
    
    // 定义静态变量,保存班级名称
    static String host = "www.gcsn.site";

    public static void main(String[] args) {
        HelloWorld.host = 'www.baidu.com';
        // 访问静态变量,输出班级名称
        System.out.println("static-----" +HelloWorld.host);
    }
}

clipboard.png

Java 中的 static 使用之【静态方法】

与静态变量一样,我们也可以使用 static 修饰方法,称为【静态方法或类方法】。其实之前我们一直写的 main 方法就是静态方法。

clipboard.png

1. 静态方法可以直接调用静态变量,但是不能直接调用非静态变量

clipboard.png

如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。如

clipboard.png

2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,

clipboard.png

3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。

clipboard.png

总结

静态方法: 能够直接调用静态成员,不可以直接调用非静态成员, 不能够直接调用非静态方法
普通方法, 既可以直接访问静态变量又可以访问非静态变量

Java 中的初始化块和静态初始化块

clipboard.png

如果使用 static 修饰初始化块,就称为静态初始化块。

静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
  • 来看一个例子

clipboard.png

clipboard.png

原文地址:https://www.cnblogs.com/twodog/p/12136232.html