「java的编译期和运行期」java的编译期和运行期的区别

博主:adminadmin 2023-01-25 21:33:07 343

今天给各位分享java的编译期和运行期的知识,其中也会对java的编译期和运行期的区别进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

JAVA中有哪些东东是编译期运行和运行期运行的

我的理解是:编译器运行的东东是代码是否否何规范,类似于你写个void写错了写成vod这时编译器就会报错提醒你;

而运行期运行的就是代码的逻辑关系了,比如说你使用一个数组,未对他进行初始化分配空间,运行时就会出现空指针异常。

理解的较浅,不知能否帮到你。

Java创建对象是在编译时还是在运行时?

运行期。编译好的java程序(即.class文件)需要运行在JVM中。程序,无论代码还是数据,都需要存储在内存中。JVM为java程序提供并管理所需要的内存空间。JVM内存分为"堆"、"栈"、"方法区"三个区域,分别用于存储不同数据。首先JVM会检查创建这个对象的类是否是一个以前从没有见过的类型,如果不是,JVM将为其分配内存,如果是,java虚拟机将调用具体的ClassLoader找到对应的.class文件,并将这个文件的内容读到内存中去。

1)堆:

1.1)用于存储所有new出来的对象(包括成员变量)。

1.2)垃圾:没有任何引用所指向的对象。

垃圾回收器(GC)不定时到内存中清扫垃圾,

并不一定一发现垃圾就立刻回收,

回收过程是透明的(看不到的),

通过调用System.gc()可以建议虚拟机尽快调度GC来回收。

1.3)内存泄漏:不再使用的内存没有被及时的回收。

建议:不再使用的对象,及时将引用设置为null。

1.4)成员变量的生命周期:

创建对象时存储在堆中,对象被回收时一并被回收。

2)栈:

2.1)用于存储正在调用的方法中的所有局部变量(包括参数)

2.2)JVM会为每一个正在调用的方法分配一块对应的栈帧,

栈帧中存储方法中的局部变量(包括参数),

方法调用结束时,栈帧被清除,局部变量一并被清除。

2.3)局部变量的生命周期:

调用方法时存在栈中,方法结束时与栈帧一并被清除。

3)方法区:

3.1)用于存储.class字节码文件(包括方法)。

3.2)方法只有一份,通过this来区分具体的对象。

既然对象在堆中创建,因此Java创建对象是在运行时,而不是编译时。

求教JAVA编译与运行的区别。

编译只是编译成了字节码,就是可执行的.class文件

运行时识别,主要是java的RTTI(运行时类型识别)机制和反射机制,而两者之间的区别在于:

”对RTTI来说,编译器在编译期打开和检查.class文件。(换句话说,我们可以用“普通”的方式调用一个对象的所有方法。),而对于反射机制来说,.class文件在编译期是不可获取的,所以是在运行期打开和检查.class文件。“

但是同样的,反射也需要加载这个类的Class对象,所以那个类的class对象对于jvm必须是可取的的,比如在本地机器上,或者通过网络取得,比如取得一串字节串。

具体的内容可以参考《Thinking

in

java》的”类型识别“那一章,讲的比较详细的

java编译和运行。

当你一段代码写完之后一般会经历两个阶段:

1、编译阶段

使用指令:javac

这个阶段,Java编译器(也就是JVM:java虚拟机,后称JVM),首先把你的代码加载完成,然后开始检查语法。如果出现语法错误则提示错误。这个阶段提示的错误我们一般称为编译器错误!

2、运行阶段

使用指令:java

这个阶段,JVM将执行java代码,这个时期出现的错误我们一般称为运行期错误!

编译器错误一般都是语法错误!运行期错误一般都是程序内部(或者程序逻辑)错误!

你说的这个错误就是语法错误!

java规定了在静态方法中不能调用非静态的方法。这个错误已经被整合到了语法错误里面!

请问java中的编译期和运行期有什么区别?

编译期和运行期进行的操作是不相同的,编译器只是进行语法的分析,分析出来的错误也只是语法上的错误,而运行期在真正在分配内存··

比如说你写一个while循环,一直往栈里写,编译器是不会出错的,可是运行期就会出现栈满的错误··

Java代码的编译期绑定和运行期绑定是什么意思

如果打包成jar的话很好如果是exe的话就有点麻烦了可参考:想要把java生成可执行文件需要第三方软件的支持,不过在没有安装JDK的机器上是不可能运行JAVA程序的,哪怕是编译成为exe文件。将Java应用程序本地编译为EXE的几种方法(推荐使用JOVE和JET)1.从获得一个TowerJ编译器,该编译器可以将你的CLASS文件编译成EXE文件。2.利用微软的SDK-Java4.0所提供的jexegen.exe创建EXE文件,这个软件可以从微软的网站免费下载,地址如下:7.Instantiations公司的JOVE/jove/ejovesystem.htmJOVE公司合并了以前的SuperCede,一个优秀的本地编译器,现在SuperCede已经不复存在了。8.JToEXEBravoZuluConsulting,Inc开发的一款本地编译器,本来可以从该公司的网页上免费下载的,不过目前在该公司的主页上找不到了。

关于java的编译期和运行期和java的编译期和运行期的区别的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。