Java基础之static关键字的用法_Ubuntu_青云站长教程网
欢迎来到站长教程网!
  • 秒到短信接口 免费试用
  • 微信支付宝接口 秒结算
  • 中文网站排名|申请加入
  • 搜索引擎全站查询
  • 查询移动网站权重数据
  • 海外主机 台湾公司直销
  • Ubuntu

    当前位置:主页 > 服务器教程 > Ubuntu >

    Java基础之static关键字的用法

    时间:2019-08-13|栏目:Ubuntu|点击:
  • Java中的static关键字主要用于内存管理。我们可以应用static关键字在变量、方法、块和嵌套类中。 static关键字属于类,而不是类的实例。
            静态(static)可以是:

    变量(也称为类变量)

    方法(也称为类方法)

    代码块

    嵌套类

            修饰变量

    被static修饰的变量称作静态变量或类变量;没有被static修饰的变量,称为实例变量。静态变量在内存中只有一个拷贝(节省内存),JVM只为静态变量分配一次内存,在类加载的过程中完成静态变量的内存分配(存储在“方法区”),可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。对于实例变量,每创建一个类的实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。

    静态成员变量的初始化顺序按照定义的顺序进行初始化,static不可以修饰局部变量,即使静态方法里面也不可以有静态变量,同时也不能引用非静态方法,因为static修饰的变量或方法是在加载类的同时加载的,此时非静态的变量、方法等还未被加载,当然就无法引用了。但是,非静态方法或类却能正常引用静态变量或方法。因为非静态总是在静态之后出现的。

    静态变量并不是所在类的某个具体对象所有,而是该类的所有对象所共有的,静态变量既能被对象调用,也能直接拿类来调用。所以一般在需要实现以下两个功能时使用静态变量:在多个对象之间共享时、方便访问变量时。静态变量不管是否被transient修饰,均不能被序列化。

            修饰方法

    被static修饰的方法称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。静态方法一般用于工具类中,可以直接拿类名调用工具方法进行使用。

    对于静态方法需要注意以下几点:

    它们仅能调用其他的static 方法。

    它们只能访问static数据。

    它们不能以任何方式引用this 或super。

            修饰类

    被static修饰的类称作静态内部类。一般一个普通类是不允许被声明为静态的,但在内部类中可以将其声明为static的,这时外部类可以直接调用内部类,因为静态内部类是在加载外部类的同时加载的,所以并不要实例化外部类就能直接调用静态内部类。静态内部类只能访问外部类的静态成员,不能直接访问外部类的实例变量或实例方法。

            静态块

    static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内。JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们(自动执行),每个代码块只会被执行一次,所以说static块可以用来优化程序性能。当一个类中既有static{}块又有static变量的时候,同样遵循“先定义先执行”的原则。

            静态导包

    使用import static语句代替import静态导入包是JDK1.5中的新特性,可以导入一个类里的一切被static修饰的东西,包括变量、常量、方法和内部类。

    上一篇:Java实现链表的常见操作算法

    栏    目:Ubuntu

    下一篇:Python logging 模块详述

    本文标题:Java基础之static关键字的用法

    本文地址:http://www.jh-floor.com/fuwuqijiaocheng/Ubuntu/20202.html

    您可能感兴趣的文章

    广告投放 | 联系我们 | 版权申明

    重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

    如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

    联系QQ:888888 | 邮箱:888888#qq.com(#换成@)

    Copyright © 2002-2017 青云站长教程网 版权所有 琼ICP备xxxxxxxx号