php static静态属性、java static属性变量的区别

java的static静态属性:

<%!
static class Count {
    private static int count = 0;
    public static int getCount() {
        count++;
        
        return count;
    }
}
%>
<%
out.print(Count.getCount());
out.print("<br />");
out.print(Count.getCount());
%>

113845_YVfV_1159195.png

第一次输出1、2

113943_i38X_1159195.png

刷新后输出3、4,一直刷新会一直递增。

114127_xCXe_1159195.png

如果重启tomcat server后再次打开,重新输出1、2

 

php的static静态属性

<?php
class Count {
    private static $count = 0; // 类里定义静态属性
    public static function getCount() {
        self::$count++;
        return self::$count;
    }
}

echo Count::getCount();
echo "<br />";
echo Count::getCount();

114710_Oax8_1159195.png

第一次输出1、2,刷新依然会输出1、2

 

对比总结:

1. java程序是常驻内存的,程序运行期间,static属性一直存在,除非重启。

2. php程序为每次请求创建一个内存,static属性只针对一次请求,php文件执行完毕,该static属性也立刻消亡,再次请求会重新创建内存。

 

补充:

另外,php还有一个static静态变量的概念。静态属性是类里的东西,静态变量是函数里的东西(和 C 一样):

function count() {
    static $count = 0; // 方法里定义静态变量
    $count++;
    return $count;
}

echo count();
echo "<br />";
echo count();
echo "<br />";
echo count();

第一次输出1、2、3,刷新后依然输出1、2、3,说明php的静态变量和静态属性一样,也是只对单次请求有效。

 

参考:

http://huangqiqing123.iteye.com/blog/1921934

http://www.zhihu.com/question/35472851

 

转载于:https://my.oschina.net/banbo/blog/647268

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值