java和PHP之间使用静态的区别?
在java和PHP之间使用静态的区别?,java,php,static,Java,Php,Static,在Java中,我读到,静态函数只能访问静态函数或静态变量。我试图找出在PHP和java中使用静态的区别 在PHP中是否也存在同样的问题 我们可以在PHP中的静态函数中调用非静态函数 在PHP中,我们可以在静态函数中调用非静态函数吗 是但未通知。作为$this关键字在静态上下文下不可用。但是,您可以使用static/self关键字执行此操作,但这将导致严格的标准通知 严格标准:不应调用非静态方法A::foo() 静态地 所以最好不要这样做 我想是一样的 顺便说一句,编辑静态函数(没有正确读取…)
Java
中,我读到,静态函数
只能访问静态函数
或静态变量
。我试图找出在PHP和java中使用静态的区别
PHP
中是否也存在同样的问题李>
PHP
中的静态函数
中调用非静态函数
$this
关键字在静态上下文下不可用。但是,您可以使用static
/self
关键字执行此操作,但这将导致严格的标准通知
严格标准:不应调用非静态方法A::foo()
静态地
所以最好不要这样做
class Scope {
public function mynonstatic() {
}
public static function mystatic() {
$s = new Scope();
return $s->mynonstatic();
} }
记住,静态方法实际上只是一个范围缩小的全局函数。它们是有用的,但如果没有充分的理由,就不应该创建它们
这里的来源:第一个静态是一个关键字。
它在声明变量或函数名之前使用
Java中的静态变量是什么?
Java中的静态变量是属于类的变量,在执行开始时只初始化一次。它是属于类而不是对象(实例)的变量。静态变量只在执行开始时初始化一次。在初始化任何实例变量之前,将首先初始化这些变量
*类的所有实例共享的单个副本
*静态变量可以通过类名直接访问,不需要任何对象
public class Demo{
public static void main(String args[]){
Student s1 = new Student();
s1.showData();
Student s2 = new Student();
s2.showData();
//Student.b++;
//s1.showData();
}
}
class Student {
int a; //initialized to zero
static int b; //initialized to zero only when class is loaded not for each object created.
Student(){
//Constructor incrementing static variable b
b++;
}
public void showData(){
System.out.println("Value of a = "+a);
System.out.println("Value of b = "+b);
}
//public static void increment(){
//a++;
//}
}
静态变量
PHP的一个特性是在变量完成执行并释放内存后删除该变量。有时,即使在函数执行完成之后,我们也需要存储一个变量。因此,变量作用域的另一个重要特征是静态变量。我们在变量之前使用static关键字来定义一个变量,这个变量称为static variable
静态变量仅存在于局部函数中,但在程序执行离开作用域后,它不会释放内存。通过一个例子来理解它:
<?php
function static_var()
{
static $num1 = 3; //static variable
$num2 = 6; //Non-static variable
//increment in non-static variable
$num1++;
//increment in static variable
$num2++;
echo "Static: " .$num1 ."</br>";
echo "Non-static: " .$num2 ."</br>";
}
//first function call
static_var();
//second function call
static_var();
?>
//Output:
Static: 4
Non-static: 7
Static: 5
Non-static: 7
//输出:
静态:4
非静态:7
静态:5
非静态:7
类A{public function foo(){print(
foo A”);}公共静态函数条(){static::foo();}}
以上是否有效?是的,我也发现与您相同。因此,在PHP和Java中使用static是不一样的。您将得到一个警告,您不应该这样做。您可以看到演示。在PHP中,您将收到警告,它将执行。但在java中,这将是编译时错误。你不能这样做。因此,PHP和Java@Rahul,我同意这一点,是的,我看到你会得到一个编译错误,但PHP没有编译器对吗?这只是一个解释。我将编辑答案。我编辑我的答案是因为我认为这个问题谈论的是静态变量。。。我不会抹掉我的答案,因为它可以带来一些额外的答案……很好,你明确了架构(特别是内存)的区别,但如果你引用了其他答案[]请给他们一个链接,以便其他人可以详细研究这个问题。您可以在PHP和Java中从静态方法调用非静态方法——您只需要提供调用它的对象。