了解下JAVA的废除Java神话之参数按传址体例传送
net网页编程程序员的大部门代码都靠控件拖拽完成的,虽然java也有,但是无论从美观和速度上都没发和.net网页编程比。java程序员都是代码完成的,所以java程序员常戏称.net网页编程程序员是操作员,呵呵。在分歧的java旧事组中,参数是传值仍是传址一向是一个常常被狡辩的话题。曲解的中央是以下两个现实:
对象是传援用的
参数是传值的
这两个可以同时建立吗?一个字:是!在java中,你历来没有传送对象,你传送的仅仅是对象的援用!一句话,java是传援用的。但是,当你传送一个参数,那末只要一种参数传送机制:传值!
一般,当程序员会商传值和传援用时,他们是指言语的参数传送机制,c++同时撑持这两种机制,因而,之前利用过c++的程序员入手下手仿佛不克不及断定的java是怎样传参数的。java言语为了事变变得复杂只撑持参数传值的机制。
java中的变量有两品种型:援用范例和原始范例。当他们被作为参数传送给办法时,他们都是传值的。这是一个十分主要的不同,上面的代码典范将申明这一点。在持续前,我们有需要界说一下传值和传援用。
传值意味着当参数被传送给一个办法大概函数时,办法大概函数吸收到的是原始值的正本。因而,假如办法大概函数修正了参数,受影响的只是正本,原始值坚持稳定。
关于java中的参数传送的凌乱是由于良多java程序员是从c++变化过去的。c++有援用和非援用范例的变量,而且分离是经由过程传援用和传值失掉的。java言语有原始范例和对象援用,那末,依照逻辑,java关于原始范例利用传值而对援用范例是传援用的,就像c++一样。究竟,你会想到假如你正在传送一个援用,那末它必定是传援用的。这是一个很勾引人的设法,可是是毛病的!
在c++和java中,当函数的参数不是援用时,你传送的是值得正本(传值)。可是关于援用范例就分歧了。在c++中,当参数是援用范例,你传送的是援用大概内存地点(传援用),而在java中,传送一个援用范例的参数的了局只是传送援用的正本(传值)而非援用本身。
这是一个十分主要的区分!java不思索参数的范例,一概传送参数的正本。仍旧不信?假如java中是传援用,那末上面的典范中的swap办法将互换他们的参数。由于是传值,因而这个办法不是像希冀的那样一般事情。
classSwap
{
publicstaticvoidmain(Stringargs[])
{
Integera,b;
inti,j;
a=newInteger(10);
b=newInteger(50);
i=5;
j=9;
System.out.println("BeforeSwap,ais"+a);
System.out.println("BeforeSwap,bis"+b);
swap(a,b);
System.out.println("AfterSwapais"+a);
System.out.println("AfterSwapbis"+b);
System.out.println("BeforeSwapiis"+i);
System.out.println("BeforeSwapjis"+j);
swap(i,j);
System.out.println("AfterSwapiis"+i);
System.out.println("AfterSwapjis"+j);
}
publicstaticvoidswap(Integeria,Integerib)
{
Integertemp=ia;
ia=ib;
ib=temp;
}
publicstaticvoidswap(intli,intlj)
{
inttemp=li;
li=lj;
lj=temp;
}
}
<p>
C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱. 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 是一种为 Internet发展的计算机语言 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
页:
[1]