前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每日一题(2)

每日一题(2)

作者头像
KEN DO EVERTHING
发布2019-01-17 15:10:54
4360
发布2019-01-17 15:10:54
举报
文章被收录于专栏:KEN DO EVERTHINGKEN DO EVERTHING

上题回顾与解析

1.

代码语言:javascript
复制
//Student类中含有String name成员变量,此处在构造函数初始化name
Student stu1 = new Student("小明");
Student stu2 = stu1;
//stu1改名字
stu1.setName("小张");

思考:stu2.getName() = ?(这个问题基本不用思考,主要看第二题)

2.

代码语言:javascript
复制
Integer i1 = 1;
Integer i2 = i1;
i1 = 2;

思考:i2 = ? i2是否会跟着i1改变?为什么?

第一题:stu1和stu2指向同一对象,stu1指向的对象中的值改变,stu2指向的对象显然也会改变。 第二题:这里需要区分stu1.setName("小张");i1 = 2;的区别

  1. stu1.setName("小张");改变对象内成员的值
  2. i1 = 2;相当于让i1指向一个新的对象,这里=其实调用了Integer的valueOf(int)方法,该方法返回了一个Integer对象(相关阅读:java面试|精选基础题(2)中的1.装箱与拆箱)
  3. Integer是不可变类,其他的7种基本类型的包装类和String同样也是。 不可变类是当类的实例一经创建,其内容便不可改变,即无法修改其成员变量。

答案很显然了吧,执行i1 = 2后,i1指向了另一个Integer对象,并没有也不能改变原对象的值。

每日一题

代码语言:javascript
复制
 public static int test(){
        int i = 1;
        try{
            i = 1/0;
            i++;
        }catch (Exception e){
            return ++i;
        }finally {
            return i++;
        }
    }

思考:返回值是多少?

end~thanks!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java从心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档