[技术分享] javascript与java的不同之处

 作者:网络  浏览数:

先声明一点,JavaScript和Java从名字上看虽然很像,但不是同一种语言。

讲个故事:话说很久很久以前,有一个叫网景(Netscape)的,十月怀胎,他生了个儿子,很开兴,给儿子取名livescript。Livescript很勤奋,帮大叔大婶干了好多活,也给他爸赚了很多钱。突然一天sun生了个儿子:java,java很厉害,人气鼎盛,隐隐有登上王位的态势。他爸眼珠子一转,就想:java这是要上天啊,我得趁机发一笔!于是,他叫来儿子,嘴角一翘,露出一个意味深长的笑容,说到“儿子,你看java的名字多炫酷,以后你就跟他姓了。”于是,从此JavaScript便这样出现在了大家面前,大叔大婶都在背后议论:“哎,这不会是隔壁java的私生子吧,要不叫他来帮我们干活试试”,就这样JavaScript改名字后,日子过得还可以,接了不少活。老网景看着他儿子,一边数钱一边开心的笑笑,为自己的英明沾沾自喜“哈哈,只是改了个名字而已,效果居然不错,java果然厉害。得让儿子稍微学着点java兄,至少是在外表的衣着装扮上面,里面还是得流着我老网的血。”

这就是JavaScript和Java为什么名字很像的原因,虽然名字很像但是本质上区别大了去了。

二者的区别体现在:

  1. 它们是两个公司开发的不同的两个产品,Java是SUN公司推出的新一代面向对象的程序设计语言,特别适合于Internet应用程序开发,而JavaScript是Netscape公司的产品,其目的是为了扩展Netscape Navigator功能,而开发的一种可以嵌入Web页面中的基于对象和事件驱动的解释性语言。
  2. JavaScript是基于对象的,而Java是面向对象的,即Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象。JavaScript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。它是一种基于对象和事件驱动的编程语言。因而它本身提供了非常丰富的内部对象供设计人员使用。
  3. 两种语言在其浏览器中所执行的方式不一样。Java的源代码在传递到客户端执行之前,必须经过编译,因而客户端上必须具有相应平台上的仿真器或解释器,它可以通过编译器或解释器实现独立于某个特定的平台编译代码的束缚。JavaScript是一种解释性编程语言,其源代码在发往客户端执行之前不需经过编译,而是将文本格式的字符代码发送给客户,由浏览器解释执行。
  4. 两种语言所采取的变量是不一样的。Java采用强类型变量检查,即所有变量在编译之前必须作声明。JavaScript中变量声明,采用其弱类型。即变量在使用前不需作声明,而是解释器在运行时检查其数据类型。
  5. 代码格式不一样。Java是一种与HTML无关的格式,必须通过像HTML中引用外媒体那么进行装载,其代码以字节代码的形式保存在独立的文档中。JavaScript的代码是一种文本字符格式,可以直接嵌入HTML文档中,并且可动态装载。编写HTML文档就像编辑文本文件一样方便。 第六,嵌入方式不一样。在HTML文档中,两种编程语言的标识不同,JavaScript使用 <script>...</script> 来标识,而Java使用<applet> ... </applet>来标识。
  6. 静态绑定和动态绑定。Java采用静态联编,即Java的对象引用必须在编译时的进行,以使编译器能够实现强类型检查。JavaScript采用动态联编,即JavaScript的对象引用在运行时进行检查,如不经编译则就无法实现对象引用的检查。

语言特点:

弱类型:

JavaScript在变量声明的时候并不严格区分数据类型,(var 变量名),不像java那样严格(类型:变量名)。也就说,Javascript视众生平等,在他眼里大家都是人,而在java眼里众生皆有不同,男人、女人、人妖什么的……

基于这个特性,javascript在很多时候会都可以写的比java简洁,比如函数的声明等。

动态语言:

java在定义了一个数组的长度以后就不能再改变了,但是javascript却可以。并且java一个数组只能放同一种类型,但javascript可以在一个数组内加不同数据类型的数据。可以说Java比较死心眼,javascript则比较灵活。

脚本语言:

Java等后台语言都是编译后执行的,但是javascript却是边编译边执行。

数据类型

基础数据类型:

Java有八大数据类型:byte,short,int,long,float,double,char,Boolean。感觉javascript把上面的整理成了三种原始类型:number,string,boolean。另外还有两个特殊的原始类型是:null和undefined。

变量

Java:数据类型 变量名=值;

Javascript:var 变量名=值;数组

Java:

  类型[] 数组名=new 类型[数量];

  类型[] 数组名=new 类型[]{元素1,元素2…};

Javascript:

  var 数组名=[];

var 数组名=new Array();

函数:

Java:返回值类型 函数名(类型 参数1,类型 参数2…){}

Javascript:function 函数名(参数1,参数2…){}

相关文章