Java 无法理解这里静态概念的工作原理
我有java代码: 公共类Test1 { 公共静态字符串参数[] { t、 t; } 公共静态无效t { int i=0; i++; System.out.printlni; } } 这将产生以下输出:Java 无法理解这里静态概念的工作原理,java,c++,static,Java,C++,Static,我有java代码: 公共类Test1 { 公共静态字符串参数[] { t、 t; } 公共静态无效t { int i=0; i++; System.out.printlni; } } 这将产生以下输出: 1 1 1 我不能与C++代码匹配: 包括 使用名称空间std; int静态t; int main { T T T } 整型静态t { int i=0; i++; coutJava和CPP的入口点要求是不同的。Java要求main是静态的,作为入口点 不要用这种方式比较语言 此外,i的值将
1
1
1
<>我不能与C++代码匹配:
包括
使用名称空间std;
int静态t;
int main
{
T
T
T
}
整型静态t
{
int i=0;
i++;
coutJava和CPP的入口点要求是不同的。Java要求main是静态的,作为入口点 不要用这种方式比较语言
此外,i的值将始终为1,因为它是一个方法局部变量。将i设为静态会得到不同的结果。在Java中,静态方法与类关联,可以在没有实例的情况下调用。因此,也无法访问实例变量 在C++中,静态关键字有多种含义,依赖于上下文的静态成员函数,通常是C++中的类方法,与上面描述的java静态方法非常类似。 但是,int main和int static t都不是成员函数。它们是自由函数,与任何类都不关联。声明自由函数static会给它提供内部链接。这意味着它对其他编译单元.cpp文件中的函数不可见 静态或非静态函数不会影响t在两个版本的代码中的工作方式。您总是打印一个局部变量并递增它。由于该变量没有静态存储时间关键字static的另一个用途,也不是对象实例的成员,而是一个自动局部变量,因此它会尽快销毁当函数调用结束时,因此递增的值永远不会用于任何事情。另一方面,如果变量被声明为静态的,那么您将得到输出1 2 3
在Java中,没有自由函数或具有静态存储持续时间的局部变量。static关键字在所有语言中的含义都不相同。在Java中,当JVM调用main方法时,被调用的类不存在对象,因此它必须是静态的,以便允许从类中执行此操作。您希望看到什么输出?y你基本上是在问为什么Basic中的10 GOTO 10会产生一个无限循环,而在[任何其他语言]中只会产生语法错误?java和C++ C++,它比较苹果和大象。读它的静态含义在C++中似乎与java是一致的。实际上,我认为这不是静态C++类方法。实际上它是一个C静态函数,因为C++代码实际上没有定义一个类,因此,主和T都只是函数,而不是方法。java java的java入门是一个静态的概念,为什么如果C++的入口点条件是静态的,为什么C++没有静态的main?任何链接都可以。@ ListOtMead,因为Java是这样设计的。o在java语言中,使用不同的Java语言,使用OOP的特性来做一些事情。@ SUITITKUMARGHUNDIXIIT——一种静态方法与类关联而不是与实例关联。因此,在不创建类的情况下调用main方法,必须使其在Javain C++中静态化,主函数是顶层不属于CLA的。如果主函数被声明为静态,这将使它对链接器是不可见的,它将是模块内部的。我认为这对于应用程序入口点是不合法的。我有一个预感,实际上OP实际上是针对静态int i=0;在C++函数内部。这将提供他期望的差异。实际上,你的直觉是SOM。ewhat correct.我在这个问题中也考虑了这个代码,但我想首先让我们比较这两个代码…在这种情况下,您将看到输出为1 2 3
1
1
1