为什么java程序员不喜欢笔试_99%的java程序员都遇到过的笔试题

先说明,这道理的几个选项其实都不严谨,正确的输出应该是:goodand gbc

这里咱们忽略空格,所以答案就是B,主要的是本道题考察的是Java语言中传参方式和不可变类的知识。

不可变类(Immutable class)是指当创建了这个类的实例以后,就不允许修改它的值了,也就是说,一个对象一旦被创建出来后,在其正规生命周期中,他的成员变量就不能被修改。有点类似于常量,就是只允许其他程序进行读操作,而不允许其他程序对其进行修改操作。

在Java类库中,所有基本类型的包装类都是不可变类,比如:Integer,Long,Float等public final class Integer extends Number implements Comparable {}public final class Long extends Number implements Comparable {}public final class Short extends Number implements Comparable {}public final class Float extends Number implements Comparable {}

除此之外,String类也是不可变的,public final class String implements java.io.Serializable, Comparable, CharSequence {}

有人会疑问下面的代码:public static void main(String[] args) {        String string=new String("hello");        string=string+" world";System.out.println(string);}

运行结果:hello world

表明上看,string=string+" world";的作用好像是修改了String类型对象的值,其实非也,String string=new String("hello");语句声明了一个变量string指向了String类型对象的引用,这个对象的内容是hello。这里string=string+" world";并没有修改new String("hello")这个对象的值,而是string指向了另外一个String类型的对象,该对象内容为 hello world。原来的那个字符串还在内存中,不曾被修改过。

在Java语言中,除了8种原始的数据类型byte、short、double、long,int,float,char和boolean外,其他的类型都是对象,在方法调用的时候,传递的都是引用。引用从本质上来讲也是按值传递,只不过传递的这个值是对象的引用而已,因此,在方法调用的时候,对形参引用所指对象属性值的修改可见。但是对引用值本身的修改对实参是不可见的。

关键词:参数传递,形参,实参,不可变类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值