大家好,今天小编关注到一个比较有意思的话题,就是关于java语言来源的问题,于是小编就整理了3个相关介绍Java语言来源的解答,让我们一起看看吧。
JAVA语言的发展历史?
任职于太阳微系统的詹姆斯•高斯林等人于1990年代初开发J***a语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言,应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。
由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。
随着1990年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以J***a的名称正式发布。J***a伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。J***a语言的发展历史分为以下几个阶段:
1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言。
希望用于控制嵌入在有线电视交换盒、PDA等的微处理器1994年将Oak语言更名为J***a1998年JDK1.2时,更名为J***a 2 Platform分为标准版J2SE,企业版J2EE,微型版J2MEJ***a 既安全、可移植,又可跨平台,而且人们发现它能够解决Internet 上的大型应用问题Internet使J***a成为网上最流行的编程语言J***a对Internet的影响也意义深远B/S的兴起 & C/S的没落
j***a语言***用多种机制来保证可移植性,其中最主要的是?
对于程序可移植性最直接最有效的支持是与平台无关。对于J***A语言来时使用了多种机制来保证可移植性,最主要的是使用虚拟机(virtual machine)和使用虚拟机使用的J***A字节码。由于保证J***A语言的高可移植性,其程序的运行效率被降低,为了弥补这种缺陷,将J***A字节码的设计最大限度接近于机器码。
为什么说j***a里面只有值传递?
先来看个例子:
- String str=“Hello”;
- String ptr=new String(“Hello”);
在这个例子中第1行的字符串对象中存放的是一个字符串的值。在传递这个参数的时候,J***a复制这个字符串的值到函数内部对象中,我们在函数中修改字符串的值,并不能改变外部对象的字符串。也就是所谓的传值了。
第2行的字符串对象中存放的是另一个字符串对象的引用。在传递这个参数的时候,J***a也***这个参数的值到函数内部对象中,只是这一次***的是引用,这样我们在函数中修改字符串的值就会直接改变被引用的字符串。
可见,J***a也可以传递引用。概念上,J***a不区分引用和值,而是把它们称为对象和实例。
值传递(pass by value)是指在调用函数时将实际参数***一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
区别:
值传递和引用传递的区别并不是传递的内容。而是实参到底有没有被***一份给形参。
总结:
J***a中其实还是值传递的,只不过对于对象参数,值的内容是对象的引用,所以就不是引用传递。
无论是值传递还是引用传递,其实都是一种求值策略(Evaluation strategy)。在求值策略中,还有一种叫做按共享传递(call by sharing)。其实J***a中的参数传递严格意义上说应该是按共享传递。
按共享传递,是指在调用函数时,传递给函数的是实参的地址的拷贝(如果实参在栈中,则直接拷贝该值)。在函数内部对参数进行操作时,需要先拷贝的地址寻找到具体的值,再进行操作。如果该值在栈中,那么因为是直接拷贝的值,所以函数内部对参数进行操作不会对外部变量产生影响。如果原来拷贝的是原值在堆中的地址,那么需要先根据该地址找到堆中对应的位置,再进行操作。因为传递的是地址的拷贝所以函数内对值的操作对外部变量是可见的。
简单点说,J***a中的传递,是值传递,而这个值,实际上是对象的引用。
到此,以上就是小编对于j***a语言来源的问题就介绍到这了,希望介绍关于j***a语言来源的3点解答对大家有用。