你真的了解HelloWorld嘛?

2017-05-24  本文已影响0人  代码小姑娘

HelloWorld解析

你真的了解HelloWorld嘛?

方法区

栈(方法执行的工作空间)

堆(存对象)

public class HelloWorld{

//static:通过类找到此main方法并调用

//public:使得JVM能找到并使用此main方法

//void: JVM不需要返回值

public static void main(String[]args){

//定义一个String类型局部变量变量名为s      String s;

s=”HelloWorld”;

//这里调用System.out(输出流)的println()时会自动调用已经覆写了的toString(),所以输出的结果不是对象的地址而是对象的值。                  System.out.println(”ssaid:”+s);

        }

}

文字解析HelloWorld1.

五个文件:一个源文件(HelloWorld.java),四个字节码文件(HelloWorld.class, String[].class , String.class , System.class)

2.   五个对象:一个字符串数组对象(args),一个常对象(s),三个流对象(System.in, System.out , System.error)

3.   三个方法:main(), println() , toString()

4.   零个属性:类中没有定义变量

5.   两个局部变量:args, s

6.   说明:字符串数组String[] ,堆中有的是空数组对象,new String[0]中有对象但是没有值。

GC作用于堆。

代码区包括类代码和共享代码,数据区包括静态数据区也叫常量池和缓冲数据区(包括整型Integer -128~+127 ,字符串对象)

栈中的方法执行空间包括断点调试,临时变量,数据局部变量等等。

主类是编译器的入口,main方法是JVM的入口。

C语言的缺点:内存需要自己去管理,变量不赋值会导致系统崩溃,指针太麻烦;优点是效率高。

Java以牺牲效率为代价来提高安全性,自动释放内存。静态的继承编译时知道,动态的继承执行时才知道。

Java是先编译再解释。JVM的上层模块相同,下层与系统相接的地方不同。

JVM(虚拟机)的个数与系统的个数相同。这就是一次编写到处运行的原因。JVM是相同的,然后将.Class文件解释为相应的机器指令。

在编译与解释中,.java与.class文件都不会变化,JVM是变化的。

Java源代码与字节码与机器无关,JVM与机器有关。

GC:垃圾回收机制,优点是更好的回收使用内存,缺点是效率不高。

内存泄漏是指内存使用不当导致系统崩溃。Java的GC机制只能适当的改善问题,不能避免内存泄漏问题。

环境变量配置的原因:

Path:……bin,找到javajavac等命令

Classpath:……lib,找到标准库中的类(不能省略)

JAVA_HOME:针对tomcat配置的,确定jdk的位置。

Java中一般只有一个主类是公有,其他的类都是默认的。

JVM是由硬件和软件模拟的计算机。

方法区分为代码区和数据区。堆中一般存放对象,对象都有属性和方法(一般都有四个字节)栈中主要包括形参,局部变量,断点,堆空间的地址,方法区空间的地址以及临时数据。

实例方法通过对象调用除了常对象在方法区的常数据区中开辟空间,其他的对象都在堆中开辟空间。

String与String[]是两个不同的类  

上一篇 下一篇

猜你喜欢

热点阅读