资讯专栏INFORMATION COLUMN

JAVA学习之路 (五) 类

luqiuwen / 832人阅读

摘要:类的成员方法类的成员方法的定义中的使用之静态变量我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立。静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。

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();
    }
}
成员变量和局部变量

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

作用域不同

局部变量只能在定义它的方法内使用。
成员变量则是可以在整个类内都可以使用。

初始值不同

java会给成员变量一个初始值,
java不会给局部变量一个初始值(必须自己初始化)。

两类变量同名时,局部变量具有更高的优先级

构造方法
var car = new Car();

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

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

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

类的成员方法

1 类的成员方法的定义

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);
    }
}

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

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

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

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

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

总结

静态方法: 能够直接调用静态成员,不可以直接调用非静态成员, 不能够直接调用非静态方法
普通方法, 既可以直接访问静态变量又可以访问非静态变量
Java 中的初始化块和静态初始化块

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

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

来看一个例子

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76709.html

相关文章

  • 开发之路(设计模式:单件模式)

    摘要:单件模式提供这个实例的全局访问点。实现单件模式,需要私有构造器,一个静态方法,一个静态变量。设计到多线程问题,同步会降低程序效率。 拥有独立且唯一的对象 这次讲述的是单件模式,就是整个内容里只有一个实例化唯一对象。这么说可能有点拗口,这么说吧,比方说,线程池,缓存,注册表,日志文件,甚至做JDBC中连接,关闭,增删改查数据库的Connection类(个人命名也许并不一样)、工具类等等...

    Steven 评论0 收藏0
  • 我的阿里之路+Java面经考点

    摘要:我的是忙碌的一年,从年初备战实习春招,年三十都在死磕源码,三月份经历了阿里五次面试,四月顺利收到实习。因为我心理很清楚,我的目标是阿里。所以在收到阿里之后的那晚,我重新规划了接下来的学习计划,将我的短期目标更新成拿下阿里转正。 我的2017是忙碌的一年,从年初备战实习春招,年三十都在死磕JDK源码,三月份经历了阿里五次面试,四月顺利收到实习offer。然后五月怀着忐忑的心情开始了蚂蚁金...

    姘搁『 评论0 收藏0
  • 【全栈之路JAVA基础课程_哲学家就餐问题(20190614v1.2)

    摘要:欢迎进入基础课程博客地址本系列文章将主要针对一些基础知识点进行讲解,为平时归纳所总结,不管是刚接触开发菜鸟还是业界资深人士,都希望对广大同行带来一些帮助。若有问题请及时留言或加。 欢迎进入JAVA基础课程 博客地址:https://blog.csdn.net/houjiyu...本系列文章将主要针对JAVA一些基础知识点进行讲解,为平时归纳所总结,不管是刚接触JAVA开发菜鸟还是业界...

    Mr_houzi 评论0 收藏0
  • 【全栈之路JAVA基础课程_哲学家就餐问题(20190614v1.2)

    摘要:欢迎进入基础课程博客地址本系列文章将主要针对一些基础知识点进行讲解,为平时归纳所总结,不管是刚接触开发菜鸟还是业界资深人士,都希望对广大同行带来一些帮助。若有问题请及时留言或加。 欢迎进入JAVA基础课程 博客地址:https://blog.csdn.net/houjiyu...本系列文章将主要针对JAVA一些基础知识点进行讲解,为平时归纳所总结,不管是刚接触JAVA开发菜鸟还是业界...

    JerryZou 评论0 收藏0
  • 从小白程序员一路晋升为大厂高级技术专家我看过哪些书籍?(建议收藏)

    摘要:大家好,我是冰河有句话叫做投资啥都不如投资自己的回报率高。马上就十一国庆假期了,给小伙伴们分享下,从小白程序员到大厂高级技术专家我看过哪些技术类书籍。 大家好,我是...

    sf_wangchong 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<