Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法理解这里静态概念的工作原理_Java_C++_Static - Fatal编程技术网

Java 无法理解这里静态概念的工作原理

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的值将

我有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,因为它是一个方法局部变量。将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