或许有这样的结果,也只是刚好而已。当年甲骨文收购升阳时婉拒加入新团队的时任副总裁、JAVA
之父 James Gosling,在日前正式加入了 Google 的阵营,想必这将为 Google
跟甲骨文间的专利诉讼案带来些小高潮。另外他本人对于甲骨文大头 Larry
Ellison 的印象似乎没多好,直说他简直就是黑暗王子(Prince of
Darkness),还爆料说当年在两家公司整并的会谈上,提及升阳跟 Google
间可能存在的专利争议时,他隐隐约约看到了甲骨文的律师眼睛亮了起来。而
Google
为何延揽这位大老,目的应该是很清楚了,虽然他本人表示目前尚不清楚自己在
Google 会担任啥工作、做啥事;往后两家公司在 JAVA
专利对垒时,应该会越来越精彩吧!

Android的架构大量的使用JAVA已经不是啥秘密,不过看在甲骨文Oracle眼里可不是很开心;甲骨文并下升阳SUM的那一刻开始,也等同得到JAVA专利,于是这家数据库的史前巨兽在不久前宣布要控告Google
Android,这下小绿人又中刀了。而且这可能不是啥新恩怨,甲骨文除了控告Google侵犯近700份原始码以外,Google
CEO Eric
Schmidt也曾在升阳带过JAVA团队,而且甲骨文表示,Google自5年前就开始有意侵犯他们的权益,不过依照惯例,这出电影可能只能先看预告片,先别急着买爆米花,正片应该还要几年后才会上映吧!

回到面试上,今天聊一下和Java相关的面试题。没错总有那么一些公司在招Android程序员时,比较侧重考察Java基础和能力的。Java的值传递和引用传递问题,相信很多人都被问题过,当然很多时候面试官都不会这么直白的问,他们会给你设计一个方法让你给出执行这个方法后的输出结果。

可以自己思考一下会输出什么结果,为什么。String的对象是不可修改的,如果真正要达到改变字符串的效果,我们需要使用StringBuilder来替代String。

“在Java里面参数传递都是按值传递”这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,所以统称按值传递。

public static void main(String[] args) { String x = new String("goeasyway"); change; System.out.println;} public static void change { x = "even";}

最终联邦陪审团裁定Android操作系统并未侵犯甲骨文的版本,37个Java
API是正常使用。Android程序员开始喷甲骨文,并庆幸我们的饭碗保住了。

看过一些Java教材的话,对这句话应该不陌生:

自2010年起,Google和甲骨文一直就Android系统是否侵犯甲骨文的版权和专利争论不休。其实双方的争论点倒不是Google是否在
Android 中使用了Java
APIs,Google对此也没有否定,因为这样能让数百万的开发者为自己开发应用程式。Google的论点是,APIs不能有版权,它本来就是用来让应用程式间相互交流,而很多公司也会让开发者自由使用。甲骨文对此的态度当然是我不听、我不听、我不听。

简单的说,基本类型是按值传递的,方法的实参是一个原值的复本。类对象是按对象的引用地址传递地址的值,那么在方法内对这个对象进行修改是会直接反应在原对象上的(或者说这两个引用指向同一内存地址)。不过要注意String这个类型,如下代码:

很遗憾,我在实际中发现很多人都不会去重视基础问题,保括一些资深的开发也不太清楚Java还有这两种区分。在之前我呆过的一家公司,有一位女程序员直接在代码里使用一个未经声明的方法,并给这个方法传参数,然后来问我为什么编译不过呢。但这却不妨碍她仍然可以为客户解决问题,可以获得组内的最佳员工评选。所以有很多人并不重视基础的问题,总认为不知道也无防,用的时候有问题自然会报出来,到时候再解决就好了,你知道的也没比我多能耐。我只能说,知道的话确实不比别人多能耐,只是多了一份从容。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章