设为首页 收藏本站
开启辅助访问 快捷导航
菜单
猿人部落 主页 资讯 查看内容

各类编程语言中static关键字的用法

2019-7-26 18:08 发布者: year十万为什么 评论 0 查看 1033
近来在各种语言之间往返编程,容易产生杂乱,这里特意整理下: 一. c语言(面向过程) 在c语言中static 可以修饰变量

近来在各种语言之间往返编程,容易产生杂乱,这里特意整理下:

一. c语言(面向过程)

在c语言中static 可以修饰变量跟函数,而且修饰后,只在本文件中可见,别的文件中可以使用同名变量或函数。因此添加static 有利于团队协作中出现定名类似编译辨认的环境。

1. 修饰变量

在先容修饰变量作用之前,读者应该要对c步伐存储结构有肯定的认知,存储结构分析。
(1) 存储方式:

种别 局部变量存储位置 全局变量存储位置
修饰 静态存储区(.data段) 静态存储区(.data段)
不修饰 栈(stack) 静态存储区(.data段)

(2)作用和可见性:

种别 局部变量 全局变量
修饰 函数退出后数据不会打扫 仅在同文件下全局可见
不修饰 函数退出后主动打扫数据 步伐内全局可见

2. 修饰函数

(1)

种别 有无static 可见性
静态函数 有static 静态函数只是在声明他的文件当中可见,不能被其他文件所用。
平凡函数 无static 步伐内可见,默认自带extern

二. 面向对象类语言

在先容语言修饰作用前,先分析一下,语言发展关系:c (面向过程)—> c++ 、c#、java、go、php、python (面向对象), 从中我们可以看出其他面向对象的语言是由c发展而来的,在存储和作用上会有肯定的相似性。由于面向对象有个共同特点就是增长了类,以是下面重要先容 staic 对类的影响。

在使用类成员中,我们通常须要创建一个对象,通过对象来访问类成员。而使用static修饰后会改变访问方式。this被即为本对象,成员函数被static修饰之后,不能使用this。

在运用多种编程语言中,可以发现带static 的 类函数,可以方便被直接调用,而不须要使用new 创建对象。
不外由于类静态函数不能访问非静态函数,因此在某些时间容易产生错误。

1. C++

(1)C++ 继续c语言的面向过程,以是具备c的特性

(2)修饰类成员

语言 作用 可见性 调用格式
变量 静态成员变量是每个类有一份,平凡成员变量是每个实例有一份 变动 <类名>::<类变量>
函数 静态成员函数,可以用类名::函数名举行访问,但无法使用this,仅能访问类的静态数据和静态成员函数。 变动 <类名>::<函数名>或<对象名>.<函数名>

增补注意点:

  • 静态成员函数不能访问非静态(包罗成员函数和数据成员),但黑白静态可以访问静态。
  • 不能将静态成员函数界说为虚函数。
  • 静态成员变量所在是指向其数据范例的指针 ,静态成员函数所在范例是一个“nonmember函数指针”。
  • 为了防止父类的影响,可以在子类界说一个与父类类似的静态变量,以屏蔽父类的影响。

2. JAVA

(1)简介

在java语言中类中的函数被称为方法。
在《Java编程头脑》中有如许一段话:
  “static方法就是没有this的方法在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的条件下,仅仅通过类本身来调用static方法。这实际上正是static方法的重要用途“。这段话固然只是分析白static方法的特殊之处,但是可以看出static关键字的根本作用,简而言之,一句话来形貌就是:
  方便在没有创建对象的环境下来举行调用(方法/变量)。

(2) 其他作用

  • static关键字尚有一个比力关键的作用就是 用来形成静态代码块以优化步伐性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时间,会按照static块的序次来实验每个static块,而且只会实验一次。
class 类名{
    private String test;  
    static{
        test = "test";   
    }     
}
  • static是不答应用来修饰局部变量。
  • static关键字不会影响到变量大概方法的作用域。在Java中可以大概影响到访问权限的只有private、public、protected(包罗包访问权限)

3. 其他语言

  • 根本上大同小异


路过

雷人

握手

鲜花

鸡蛋
收藏 邀请
上一篇:Python等编程语言学习资料分享下一篇:【IT资讯】全新编程语言V发布

相关阅读

一周热门

头条攻略!

日排行榜

相关分类