static为什么可以修饰类?

 我来答
合访彤my
2018-05-28 · TA获得超过9945个赞
知道小有建树答主
回答量:88
采纳率:100%
帮助的人:3.2万
展开全部

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

}

public class TestStaticClass {
public static void main(String[] args) {
// 不需要new一个OutClass
new OuterClass.InnerClass();

}


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

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

// foo.h
static int a = 123;
// foo.cpp
#include "foo.h"
int foo_func() { return a++; }
// bar.cpp
#include "foo.h"
int bar_func() { return a++; }

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

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

int get_global_id()
{
static int seed = 0;
return seed++;
}

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

-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

提交
取消

辅 助

模 式