首页 > 编程语言 >Java语言特点?编译与解释并存?

Java语言特点?编译与解释并存?

时间:2023-04-17 23:24:14浏览次数:35  
标签:解释 Java 语言 机器码 编译 语言特点 多线程

Java语言特点:

· 面向对象(封装,继承,多态);

· 平台无关性( Java 虚拟机实现平台无关性);

· 支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持);

· 支持网络编程并且很方便( Java 语言诞生本身就是为简化网络编程设计的,因此 Java 语言不仅支持网络编程而且很方便);

· 编译与解释并存;

 

Java和C++的区别:

· 多线程

· GC

· 单继承(接口多继承)

· 指针

 

编译与解释并存:

   编译型 :编译型语言,会通过编译器将源代码一次性翻译成可被该平台执行的机器码。一般情况下,编译语言的执行速度比较快,开发效率比较低。常见的编译性语言有 C、C++、Go、Rust 等等。
   解释型 :解释型语言,会通过解释器一句一句的将代码解释(interpret)为机器代码后再执行。解释型语言开发效率比较快,执行速度比较慢。常见的解释性语言有 Python、JavaScript、PHP 等等。

  Java 语言既具有编译型语言的特征,也具有解释型语言的特征。

  因为 Java 程序要经过先编译,后解释两个步骤,由 Java 编写的程序需要先经过编译步骤,生成字节码(.class 文件),这种字节码必须由 Java 解释器来解释执行。

 

  我们需要格外注意的是 .class->机器码 这一步。在这一步 JVM 类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度会相对比较慢。而且,有些方法和代码块是经常需要被调用的(也就是所谓的热点代码),所以后面引进了 JIT(just-in-time compilation) 编译器,而 JIT 属于运行时编译。当 JIT 编译器完成第一次编译后,其会将字节码对应的机器码保存下来,下次可以直接使用。而我们知道,机器码的运行效率肯定是高于 Java 解释器的。这也解释了我们为什么经常会说 Java 是编译与解释共存的语言



标签:解释,Java,语言,机器码,编译,语言特点,多线程
From: https://www.cnblogs.com/cjhtxdy/p/17327918.html

相关文章

  • java内部类
    内部类一般的类都是定义在顶层,位于一个包中,可以称为顶层类。内部类则是指定义在另一个类里面的类。我们将包含了内部类的这个类称为外部类。内部类在定义成员时,比顶层类多了一些限制。有三种内部类:嵌入类:当类前面有static修饰时,称为嵌入类。嵌入类只能和外部类的成员并列,不......
  • 使用JavaScript的原型
    在javascript中,函数可以有属性。每个函数都有一个特殊的属性叫作原型(prototype)。functiondoSomething(){}console.log(doSomething.prototype);运行这段代码之后,控制台上面应该出现了像这样的一个对象。{constructor:ƒdoSomething(),__proto__:{const......
  • 告别StringUtil:使用Java 11的全新String API优化你的代码
    前言  Java11是Java编程语言的一次主要更新,引入了许多新功能和改进。并且在String类中引入了一些新的方法,能够更好地满足开发的需求,提高编程效率。repeat(intcount):返回一个新的字符串,该字符串是由原字符串重复指定次数形成的。isBlank():检查字符串是否为空白字符序......
  • JavaScript 利用 async await 实现 sleep 效果
    constsleep=(timeountMS)=>newPromise((resolve)=>{setTimeout(resolve,timeountMS);});(async()=>{console.log('11111111,'+newDate());awaitsleep(2000);console.log('22222222,'+newDate());await......
  • java接口
    java接口接口是Java中实现多重继承的一种机制。当类继承一个接口时,一般称为实现了这个接口。语法[public]?interface接口名[extends接口名1[,接口名2]*]? {    [public]?[static]?[final]?类型名变量名[=表达式1[,变量名[=表达式2...]?]?]?;  ......
  • Java7
    1.编写一个简单程序,要求数组长度为5,静态赋值10,20,30,40,50,在控制台输出该数组的值packagea;publicclassaaa{publicstaticvoidmain(String[]args){inta[]={10,20,30,40,50};for(inti:a){System.out.println(i);}}}......
  • java最终类和最终方法
    最终类最终类不允许被继承,也就是说不允许成为父类,或者说不允许拥有子类。由于最终类不可能有子类,所以最终类中的所有方法都是最终方法。由于最终类不可能有子类,所以也就不可能存在运行时多态现象(但存在编译时多态,如重载),这样就可以在编译时优化,加快执行速度。  最终方法如......
  • 有关数独问题的解决方法- Java实现
    直接法和位运算发1publicbooleanisValidSudoku(char[][]board){2int[][]line=newint[board.length][board.length];3int[][]colum=newint[board.length][board.length];4int[][]cell=newint[board.length][board.length];5for(inti=......
  • java抽象类和抽象方法
    抽象类语法:   [public]?abstractclass类名[extends父类名]?[implements接口名1,接口名2,...]?  {     [private | protected | public]? [static]?[final]?类型名变量名[ =表达式1 [,变量名[ =表达式2... ]?]?]? ;   [private |......
  • c编译器五个没有参数的宏
    _LINE_十进制整数常量,表示当前源程序代码的行号_FILE_字符串常量,表示当前源文件名_DATE_字符串常员,表示当前日期,格式为:"mmmddyyyy"_TIMESTAMP字符串常量,表示最后一次修改源文件的日期和时间,格式为:DddMmmhh:mm:ssyyyy_STDC_如果编译器与ANSIC兼......