JAVA中的static用法

尚硅谷笔记 

  1. 和对象无关,只和类相关的称之为静态,
  2. 和类相关的属性称之为静态属性
  3. 和类相关的方法称之为静态方法
  4. 静态语法就是在属性和方法前增加static关键字

在考虑static的使用时,先记住 先有类,再有对象,静态方法可以不依赖于对象使用。

静态属性在元空间提前准备好,先有类(元空间),再有对象(堆)。 

静态方法只能直接访问并调用其他静态方法和静态变量,不能直接访问或调用非静态方法和非静态变量。因为非静态方法和非静态变量属于对象,如果类不存在,那么非静态的对象不一定存在;但静态是与类无关的,它不依赖于类的实例化对象。

成员方法(非静态方法)可以调用静态方法,因为现有类,再有对象。有成员方法说明已经有对象,则一定有类,那么就可以调用类中的静态方法。

静态代码块:是在Java类加载时执行的一段代码块。它以关键字static和花括号{}包围,位于类中的其他成员之外;它会在类的首次加载时被触发,并且只会执行一次(无论调用几次静态)。

代码块:只有在构建对象时,才会执行。

同时,C++中也有static,与JAVA有一些不同。

  1. 静态成员的定义和初始化方式:

    C++:在C++中,可以定义静态变量(static variable)、静态成员函数(static function)。静态成员变量需要在类的声明或实现中添加static关键字,并在类外初始化。

    class MyClass {
    public:
        static int staticVariable;  // 静态成员变量的声明
    };
    
    int MyClass::staticVariable = 0;  // 静态成员变量的初始化

    Java:在Java中,静态成员可以是静态变量(static variable)或静态方法(static method)。静态成员需要在类的声明或构造函数中添加static关键字,并在声明时初始化

    class MyClass {
        public static int staticVariable = 0;  // 静态成员变量的声明和初始化
    }
  2. 调用方式:
    C++:在C++中,静态成员可以通过类名直接访问,也可以通过对象实例访问。通过类名访问时,使用作用域解析运算符::来调用静态成员。通过对象实例访问时,也可以使用成员访问运算符.来调用静态成员,但不推荐这样做。

    int value1 = MyClass::staticVariable;  // 通过类名访问静态成员
    MyClass myObj;
    int value2 = myObj.staticVariable;     // 通过对象实例访问静态成员(不推荐)

    Java:在Java中,只能通过类名访问静态成员,而不能通过对象实例访问。使用类名和.操作符来调用静态成员。

    int value1 = MyClass.staticVariable;  // 通过类名访问静态成员
    MyClass myObj = new MyClass();
    int value2 = myObj.staticVariable;    // 错误!无法通过对象实例访问静态成员
  3. 生命周期:
    C++:在C++中,静态成员的生命周期与整个程序运行时间相同。它们在程序开始时创建,在程序结束时销毁。
    Java:在Java中,静态成员的生命周期与类的加载和卸载过程相关。它们在类加载时被创建,在类被卸载时被销毁。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值