HelloWorld是每个程序员首次编码对代码世界的美丽问候,所以我借此文作为在csdn博客编写的第一篇博文,以后会经常在此记录自己的编程经历和经验和感悟!希望大家看完每篇文章后有意见的能给与评论,谢谢!
public class HelloWorld{
public static void main(String[] args){
String str = "HelloWorld";
System.out.println(str);
}
}
HelloWorld.java 组成分析:
1个源文件:HelloWorld.java
-------------------------------------------------
4个字节码文件(存放于方法区):
HelloWorld.class\String[].class\String.class\System.class
(程序有4个类,所以编译时,jvm加载相应类的字节码文件)
---------------------------------------------------
5个对象(大部分为堆区,字符串常量对象位于方法区的常量数据区):
System.out\System.in\System.err\"Hello World"\""(空串)
(这里需要注意,程序启动时,会创建三个输入或输出对象,由System调用实例属性进行返回调用,
主方法的形参为字符串数组类型的变量,运行时没有在类名后跟上字符串,就会输入一个空串对象)
-------------------------------------------------
2个局部变量(栈区):String[] agrs\String s
(方法调用时会单独开辟一个栈帧区,局部变量包括方法中的形参都在该方法栈帧中占用内存,
方法使用完后,就会释放掉该方法所开辟栈帧的内存空间)
--------------------------------------------------
3个方法(方法区):System.out.println()\main()\toString()
(方法在jvm内存中方法区中开辟空间)
main方法必须声明的三个标示符:public\static\void
1.main方法声明为static,jvm通过类加载,将main方法置于jvm方法区
2.main方法的访问权限只能设为public,否则jvm找不到入口方法
3.mian方法的返回值为void,jvm不能处理main方法的返回值
注意:
a.main方法中的参数为局部变量
b.栈中对象引用的字节长度为四个字节
c.字符串常量(双引号直接标示的,如"hello")开辟在方法区的常量数据区
d.对象的值:句柄 = 地址 = 引用
e:main方法也可以重载,不推荐这样使用
最后注意:主类是编译时的入口,主方法是解释时的入口