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

本系列导航:剑指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'}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容