剑指offer第二版-1.赋值运算符函数

作者: ryderchan | 来源:发表于2017-06-06 22:32 被阅读292次

    本系列导航:剑指offer(第二版)java实现导航帖

    面试题1:赋值运算符函数

    题目要求:
    为自定义类添加赋值运算符函数,考察一些细节点的书写。

    package chapter2;
    /**
     * Created by ryder on 2017/6/6.
     * 赋值运算符函数
     * 1.对于传入的参数,不应该被修改,使用final修饰;
     * 2.如果两个对象相同或值相等,不进行操作,直接返回;
     * 3.返回值最好为this,这样可以使赋值链接起来。
     * 一个缺点:此赋值从左到右进行,a=b=c等价于a=c,b不会被赋值;
     * 而如果是String的=运算,a,b都会被赋成c的值。
     */
    public class P25_AssignmentOperator {
        public static class MyString{
            private String data;
            public MyString(String data) {
                this.data = data;
            }
            public MyString assign(final MyString another){
                if(this==another || this.data.equals(another.data))
                    return this;
                else{
                    this.data = another.data;
                    return this;
                }
            }
            @Override
            public String toString() {
                return "MyString{" +
                        "data='" + data + '\'' +
                        '}';
            }
        }
        public static void main(String[] args) {
            MyString s1 = new MyString("a");
            MyString s2 = new MyString("b");
            MyString s3 = new MyString("c");
            System.out.println(s1.assign(s2).assign(s3));
            System.out.println("s1:" + s1);
            System.out.println("s2:" + s2);
            System.out.println("s3:" + s3);
        }
    }
    

    运行结果

    MyString{data='c'}
    s1:MyString{data='c'}
    s2:MyString{data='b'}
    s3:MyString{data='c'}
    

    相关文章

      网友评论

        本文标题:剑指offer第二版-1.赋值运算符函数

        本文链接:https://www.haomeiwen.com/subject/fninfxtx.html