ホームページ  >  記事  >  バックエンド開発  >  PHPの静的変数とJavaの静的変数の違い

PHPの静的変数とJavaの静的変数の違い

WBOY
WBOYオリジナル
2016-06-23 13:13:151132ブラウズ

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 サーバーを再起動して再度開くと、1、2 が再出力されます


php

<?phpclass Count {    private static $count = 0; // 类里定义静态属性    public static function getCount() {        self::$count++;        return self::$count;    }}echo Count::getCount();echo "<br />";echo Count::getCount();
の static static 属性

初めて 1、2 を出力しても、更新は引き続き行われます出力 1、2


比較の概要:

1. Java の静的属性は、Java 仮想マシンの実行中に常に存在し、すべて存在します。ユーザーは静的属性を共有します。

2. php の static 属性は 1 回のリクエスト (php ファイルの実行) に限り、再度リクエスト (php ファイルを実行) すると、static 属性はすぐに消えます。属性は再作成されるため、PHP の静的属性には共有の概念がなく、単一のリクエストに対してのみ有効です。


追加:

さらに、PHP には静的変数の概念もあります。静的属性はクラス内のものであり、静的変数はメソッド内のものです:

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://www.zhihu.com/question/35472851


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。