Java 为什么我不能在main方法上的类中声明的main方法中直接打印变量值?
为什么main方法允许直接打印静态变量值,而要打印普通整型值,则需要创建对象。Java 为什么我不能在main方法上的类中声明的main方法中直接打印变量值?,java,Java,为什么main方法允许直接打印静态变量值,而要打印普通整型值,则需要创建对象。 虽然这是全局的,但x也在同一个类中被访问,所以我不能直接访问它 回答时,请涵盖内存分配部分 据我了解 静态,因为它是存储在永久生成上的全局变量,那么这个原语intx呢,它不是在私有堆栈上分配的吗?请帮忙 请协助程序内存分配,提前感谢字段上的字段表示该字段由整个类共享,而不仅仅是特定实例。如果没有static,则字段是类实例的一部分(使用new创建) 您的main方法,也就是static,在运行时不会对类产生任何影
- 虽然这是全局的,但x也在同一个类中被访问,所以我不能直接访问它李>
static
,则字段是类实例的一部分(使用new
创建)
您的main
方法,也就是static
,在运行时不会对类产生任何影响。因此,它可以访问用static
声明的类字段(也称为“类变量”),但由于它没有实例,因此无法访问实例字段(也称为“实例变量”)
Test Test=新测试()
创建一个实例,您正在从test
变量引用该实例。该实例有一个字段,x
,因此您可以访问它
在内存分配方面:
- 启动程序时,JVM将为类和各种其他类分配内存,以便它可以调用
(为main
类分配内存包括一小段Test
)y
- 在
中,您通过main
为newtest
的一个实例分配内存(其中包括Test
的一小块内存)x
x
是一个实例的成员-每个Test
对象都有自己的x
,而y
是在所有对象之间共享的。请转到并重新讨论静态关键字
@utkarsh31静态
不是运算符的概念,这是一个关键词。我建议你在发布到SO之前先学习一些基本的Java教程。亲爱的朋友,谢谢你的推荐。我试图在几个论坛上找到,但我不清楚x的内存分配区域,然后我计划发布。
public class Test{
int x = 7;
static int y = 10;
public static void main(String[] args) {
System.out.println("the value of y "+ y);
//compile error on sysout for value x like this,
//System.out.println("the value of x "+ x);
//While in this way i am able to print x, why?
Test test= new Test();
System.out.println("the value of x "+test.x);
}
}