static为什么可以修饰类?

 我来答
妖感肉灵10
2022-12-13 · TA获得超过6.4万个赞
知道顶级答主
回答量:101万
采纳率:99%
帮助的人:2.4亿
展开全部

Java里面static一般用来修饰成员变量或函数。但有一种特殊用法是用static修饰内部类,普通类是不允许声明为静态的,只有内部类才可以。被static修饰的内部类可以直接作为一个普通类来使用,而不需实例一个外部类(见如下代码)
publicclassOuterClass{
publicstaticclassInnerClass{
InnerClass(){
System.out.println("=============我是一个内部类'InnerClass'=============");
}

}

publicclassTestStaticClass{
publicstaticvoidmain(String[]args){
//不需要new一个OutClass
newOuterClass.InnerClass();

}


static有三个个完全不同的含义:

一·用在全局变量,表明这个变量在每个编译单元有独自的实例:

//foo.h
staticinta=123;
//foo.cpp
#include"foo.h"
intfoo_func(){returna++;}
//bar.cpp
#include"foo.h"
intbar_func(){returna++;}

二·如果你分别编译foo.cpp和bar.cpp,再把它们链接在一起,全局变量a会有两份,那两个函数会操纵不一样的a实例。

三·用在函数里的局部变量,表明它的生存周期其实是全局变量,但仅在函数内可见:

intget_global_id()
{
staticintseed=0;
returnseed++;
}

如果错误,加上这个选项即可:

-Wl,--whole-archive-lpthread-Wl,--no-whole-archive

而且这个问题目前只在ubuntu上有,在Redhat系平台上不需要这么做。

Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式