java中static关键字的作用_java中static关键字的作用

java中static关键字的作用_java中static关键字的作用java中static关键字主要有两种作用:第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关。第二,实现某个方法或属性与类而不是对象关联在一起简单来说,在Java语言中,static主要有5中使用情况:成员变量、成员方法、代码块,内部类和静态导包。基本用法:static修饰成员变量:该成员变量属于类变量,可以通过ClassName.attributeName直接引用,而不…

大家好,又见面了,我是你们的朋友全栈君。

java中static关键字主要有两种作用:

第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关。

第二,实现某个方法或属性与类而不是对象关联在一起

简单来说,在Java语言中,static主要有5中使用情况:成员变量、成员方法、代码块,内部类和静态导包。

基本用法:

static修饰成员变量:该成员变量属于类变量,可以通过 ClassName.attributeName 直接引用,而不需要new出类的实例。

static修饰成员方法:该方法属于类的方法,可以通过 ClassName.methodName 直接引用,而不需要new出类的实例。

static修饰代码块:仅在类初始化的时候执行一次,且加载顺序是严格按照类中静态资源的定义顺序来加载的;静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问。;父类代码块->子类代码块。

static修饰内部类:static不能修饰普通类,只能修饰内部类,被static修饰的内部类的创建方式: new OuterClass.InnerClass()。

static导入包:语法“import static java.lang.Math.*”,这样在类中就可以直接使用Math类中的静态方法而不需要写类名,个人认为,在频繁使用某个类的时候比较方便,但是降低了可读性。并且不建议导入*

下面分别举例说明static的各种用法

static修饰成员变量和成员方法

几个结论:

/***

* Created by ascend on 2017/6/9 13:51.*/

public classTest {public static void main(String[] args) throwsClassNotFoundException {

Class.forName(“net.liebao.test.A”);

}

}classA {static{

System.out.println(“A.static initializer”);

}publicA() {

System.out.println(“A.A”);

}

}

输出:

A.static initializer

结论一:静态资源属于类,但是独立于类,静态资源在类初始化的时候被加载(早于new),比如通过:Class.forName(“xxx”)可以加载一个类的静态资源,但是没有new。

cc106a72cc6dd016f80c9e0b5b52f0d0.png

结论二:静态资源(静态成员变量,静态成员方法,下同)不能访问非静态资源,非静态资源是new时候才会产生,所以不能访问,反之,非静态资源则可以访问静态资源。

c589e828435744d21fc6800948cfe232.png

结论三:静态资源可以访问静态资源,但是需要注意的是,静态资源可以为定义在它之后的静态资源赋值,但是不能访问定义在它之后的静态资源

另外一个常见的用途是static实现单例模式

我们都知道,单例模式的特点是该类只能有一个实例,为了实现这一功能,必须隐藏类的构造函数,即把构造函数声明为private,并提供一个创建对象的方法,由于构造对象被声明为private,外界无法直接创建这个类型的对象,只能通过该类提供的方法来获取类的对象,要达到这样的目的只能把创建对象的方法声明为static,程序实例如下:

classSingleton {private static Singleton instance = newSingleton();//私有化构造函数

privateSingleton(){}public staticSingleton getInstance(){returninstance;

}

}

上面的单例模式是饿汉模式;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156562.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 图解最短路径之弗洛伊德算法(Java实现)「建议收藏」

    图解最短路径之弗洛伊德算法(Java实现)「建议收藏」概述Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。该算法是一种在具有正或负边缘权重(但没有负环)的加权图中找到最短路径的算法,即支持负权值但不支持负权环。弗洛伊德算法采用的是动态规划思想,其状态转移方程如下:其中matrix[i,j]表示i到j的最短距离,k是穷举i到j之间可能经过的中间点,当中间点为k时,……

    2025年6月11日
    4
  • Linux下rpm安装lrzsz

    Linux下rpm安装lrzsz下载yum-yinstallyum-utilsyumdownloader–resolve–destdir=/root/soft/lrzszlrzsz[root@instance-1apocjsh~]#yumdownloader–resolve–destdir=/root/soft/lszrzlrzszLastmetadataexpirationcheck:0:02:48agoonSat19Mar202211:22:41PMCST.lrzs

    2022年6月23日
    122
  • Android+NDK+OpenGLES开发环境配置

    Android+NDK+OpenGLES开发环境配置

    2022年1月6日
    48
  • summary8:GetSystemMetrics()、SetWindowPos()、 ModifyStyleEx()

    summary8:GetSystemMetrics()、SetWindowPos()、 ModifyStyleEx()1.intiWidth=GetSystemMetrics(SM_CXSCREEN);//thewidthofscreenintiHeight=GetSystemMetrics(SM_CYSCREEN);//thehightofscreen::SetWindowPos(this->GetSafeHwnd(),HWND_TOPMOST,iWidth/2-…

    2022年7月19日
    15
  • 引言

    引言

    2022年1月27日
    39
  • 数据分析,主成分分析例题

    数据分析,主成分分析例题已知协方差矩阵求X的各主成分以及主成分的贡献率主成分分析原理:找出几个综合变量来代替原来众多的变量,使这些综合变量能尽可能地代表原来变量的信息量,且彼此之间互不相关统计方法:主成分分析(主分量分析)主成分分析步骤1.根据已知协方差矩阵,求出相应的特征值(特征根)令|kE-A|=0(其中k是特征值),求出的k就是所需要的特征值2.求出对应特征值的特征向量解方程|kE-A|X=0,求X的所有情况(参考高等代数的第三章解线性方程组)求出基本解系,设定自由未知量的值(X是向量)3.对所求出来

    2025年7月12日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号