I'm unsure of why, and what the “static” tag does
我对Java编程很感兴趣(即使我习惯于用C语言、HTML语言和其他语言)(模糊地)。
我正在尝试创建一个简单的hello world程序,我不知道为什么,也不知道"static"标签做了什么。我试着做了一些研究,我发现静态标签让方法在一瞬间作为一个实例工作,而不是"启动"它(不太理解)。我想知道在哪里,为什么要用它。
另一方面,当我编译时,我发现了如何使它执行,但我的一些朋友告诉我,我需要包含清单,并将其作为.jar运行,(我使用:
1 2
| $ javac Potato.java
$ java Potato |
)
请注意,我想告诉您,我正在努力避免使用第三方软件学习编程(使用标准记事本++和bash)。
谢谢;
编辑:对不起,这是我的第一个问题。
1 2 3 4 5 6
| class Potato {
static String textA ="Hello There";
public static void main (String[] args ){
System. out. println(textA );
}
} |
我得到了这段代码,通过在主方法的内部和外部创建变量texta进行了一些混合。
- 共享一些代码怎么样?
- static表示用static标记的内容与类本身相关,而不是类的实例。简而言之就是这样。
- @戴夫牛顿和私人/公共标签不是一样的吗?
- static不是EDCOX1〔3〕,EDCX1〔4〕或EDCX1〕5均不为EDCX1〔6〕。编出你自己的术语不是一个好主意,只有你知道你所指的是什么。
- 你可能需要读一些关于Java的书。Ijo Java不是这样的东西,你可以学习只是尝试做一些事情,也许阅读夫妇小教程。这里有太多重要的概念和其他东西。即使你在Java上编写一些工作代码,也不太可能是一个好代码。
- 在使用记事本++和命令行时没有任何价值!没有专业人士或工匠会故意这样残废自己,如果你有问题,如果你使用合适的工具,就不会有什么问题,你会在这里找到什么帮助。
- 对不起,这个词是关键字。我开始阅读甲骨文的教程,但习惯依然存在。我之所以使用记事本和命令行,是因为我强迫自己理解为什么和如何使用,而不是因为我想创造出任何新奇的东西;)
- @如果你学会了如何调试一个程序,你会更了解它。
- @Mazunki否,这决定了"正在修改的对象"是否具有私有或公共访问权限。
- @我强烈反对贾罗德·罗伯逊。在我看来,了解IDE为您提供了什么是很重要的,至少在短时间内是如此。不了解类路径,它如何与环境交互等。学习Java更难。对于toy,没有大量库使用的示例程序、文本编辑器和命令行是一个很好的起点。
方法上使用的static修饰符允许您对其类而不是特定实例调用此类方法。
如果你想知道为什么EDOCX1 1总是始终是静态的,请看这里:为什么Java主方法是静态的?
正规方法
定义:
1 2 3 4 5
| public Class ExampleClass {
public void exampleMethod (){
System. out. println("exampleMethod()");
}
} |
用途:
1 2
| ExampleClass exampleClassInstance = new ExampleClass();
exampleClassInstance.exampleMethod(); |
静态法
定义:
1 2 3 4 5
| public Class ExampleClass {
public static void exampleMethod (){
System. out. println("exampleMethod()");
}
} |
用途:
1
| ExampleClass.exampleMethod(); |
同样适用于字段。如果您有一个static字段,它将属于类,而不是单个实例。
例子:
1 2 3 4 5 6 7
| public Class ExampleClass {
public static int a = 1;
}
...
System. out. println(ExampleClass. a); |
- 我明白了,所以我可以用normal方法创建同一个元素的更多实例,通过使用static方法,我只使用"标准的旧的唯一变量"?如果我是对的,我该如何再举一个例子呢?
- Answare帮了很多忙,谢谢。(我也没有投反对票)
- 请注意,方法中形容词"normal"的意思是"不带修饰语"。你的问题表明你对"类的实例"的概念没有清晰的理解。我不能明确说明,我建议你阅读一些基本的Java手册来解决你的疑虑。
- 是的,我明白。我会查一下,谢谢你,N.N.
- @实际上不正确的数字;您可以引用实例中的静态属性/方法,但您不应该这样做,因为这很容易混淆。您是正确的,因为您不能从静态上下文引用实例属性,因为它将毫无意义。
- 感谢@davenewton指出这一点,我删除了我的误导性评论。