java初学之static

 java中没有全局变量这一说法,只有static和非static变量。如果需要完成类似全局变量的功能,则可以定义static变量PI,再用类方法调用(如Math.PI)即可。——引用

由此我想要好好分析下static变量的特性,先从我熟悉的C++分析起。

static定义静态变量,在C++中,静态存储特性分为三种:外部链接特性、内部链接特性和无链接性。外部链接特性对应在代码块外声明的变量,内部链接性对应在代码块外声明的用static限定符修饰的变量,无链接性对应代码块内声明的用static限定符修饰的变量。

由static修饰的变量,其作用域被限制在其定义区间内; 链接特性则由其定义的位置决定,链接特性主要是为了多个程序或多个文件共享一段数据;第一种其实就是全局变量,程序所有函数均可调用(只可在一个文件中进行定义声明),其定义声明须在代码块外进行,不需关键字修饰,且可在定义声明的同时进行初始化,而引用声明则是在其他代码块内想要引用该全局变量时所需进行的,需要关键字extern修饰,且不可在引用声明时进行变量赋值,当然也可使用::来表示需要引用全局变量;

第二种文件内部静态变量,在本文件中它不会被在其他文件中定义声明的全局变量所替代,有点类似只为该文件内程序所共享的私有数据段;

第三种代码内部静态变量,虽然只在该代码块内使用,但是它在代码块不工作的时候也存在,因此在两个函数调用时其值不变,如果初始化了静态变量,则只在程序启动时执行,后面再调用该函数时则不会像普通变量那样再重新被初始化。

对于java 可以进行类比,由于java一切都是面向对象,因此不存在类之外进行定义变量的情况,因此,C++中的外部链接特性静态变量可以认为是java中的public变量,内部链接特性静态变量可以认为是java中private static 的变量,而无连接性变量则可认为是java方法中所定义的static变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值