Java初学者打印字符串
错误:无法对非静态字段名进行静态引用 . 这是我尝试过的一段代码,复制粘贴但不起作用您有两个选项Java初学者打印字符串,java,Java,错误:无法对非静态字段名进行静态引用 . 这是我尝试过的一段代码,复制粘贴但不起作用您有两个选项 创建HelloWorld的实例并使用newHelloWorld()。name 使name静态并使用HelloWorld.name 将您引用的字符串设置为静态: public class HelloWorld { String name = "asad"; public static void main(String []args){ System.out.prin
HelloWorld()。name
name
静态并使用HelloWorld.name
将您引用的字符串设置为静态:
public class HelloWorld {
String name = "asad";
public static void main(String []args){
System.out.println("hello world" + name);//Display the string
}
}
您可以将名称设置为静态,也可以将其放入主方法中:
public class HelloWorld {
static String name = "asad";
public static void main(String []args){
System.out.println("hello world" + name);//Display the string
}
}
您只能在静态方法中调用静态属性。
HelloWorld
是一个类。您可以创建该类的多个实例
下面是制作该类的两个实例的示例
public class HelloWorld {
static String name = "asad";
public static void main(String []args){
System.out.println("hello world" + name);//Display the string
}
}
现在,name
被声明为实例字段。这意味着HelloWorld
的每个实例将有1个
现在,
main
方法是一种静态方法。这意味着只有一个主方法周期。对于HelloWorld
的每个实例,您不会得到不同的main方法。(main也是一种特殊的静态方法,用作程序的入口点)
当您尝试从main
调用name
时,您的程序没有任何name
实例可供参考。如果您声明了多个HelloWorld
对象,它将不知道要使用哪个name
如果只想从
main
调用name
,可以将name
设为静态字段。记住,static
意味着每个程序只有一个name
HelloWorld helloWorld1 = new HelloWorld();
HelloWorld helloWorld2 = new HelloWorld();
您有三种选择:
new HelloWorld()。name
名称
更改为静态
或类字段name
的声明移动到main()
简短回答:使
name
static;i、 e:
public static void main(String []args){
String name = "asad";
System.out.println("hello world" + name);
}
详细回答:您需要理解静态和非静态之间的区别<代码>静态属性和方法附加到类。这意味着它们在没有类实例的情况下可用,更重要的是,它们在所有实例之间共享(因为它们属于类本身)
另一方面,非静态属性和方法只属于类的实例。这些是属于类的特定实例的东西
您面临的问题是main
是static
。由于类本身调用了main
,它不知道name
是什么,因为name
附加到实例。因此,name
在静态上下文中是未定义的
除了使name
静态之外,另一种方法是强制创建类的实例,然后以这种方式引用name
:
static String name = "asad";
但这不是很好的风格。您需要仔细考虑哪些属性/方法需要是静态的,哪些不需要。静态属性引入了另一个折痕,即您现在拥有共享状态,如果您不小心,这可能会导致有趣或不受欢迎的行为。您的问题是main是静态的,这意味着它的存在不需要您初始化它所在的类。但是,您试图打印的字符串不是静态的,这意味着它只有在初始化类时才存在。编译器发现可以在不创建对象的情况下调用main(因为它是静态的),这意味着它将无法访问要打印的字符串,因为它不存在,所以它会抱怨。您需要使您试图打印的字符串也是静态的
new HelloWorld().name;
您必须使
name
成为一个静态变量:static String name=“asad”代码>。这是一个非常小的错误。简单的答案是使name
static。我建议你阅读静态变量。你需要先了解静态变量和非静态变量-可能重复@ErrorAnswer-我强烈建议更改你的用户名:P。人们在投票给你的评论/答案:Pthanks之前会三思而后行。为什么System.out.println()不能打印一个非静态变量请这样想:静态意味着它永远不会改变,所以一个非更改的方法打印一些改变了的内容会让java.Thanx感到困惑。这真的很有帮助
static String name = "asad";
public static void main(String []args){
System.out.println("hello world" + name);
}
public static void main(String []args){
String name = "asad";
System.out.println("hello world" + name);
}
static String name = "asad";
new HelloWorld().name;
static String name = "asad";