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());
%>
第一次输出1、2
刷新后输出3、4,一直刷新会一直递增。
如果重启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();
第一次输出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