zoukankan      html  css  js  c++  java
  • Java学习笔记-12.传递和返回对象

    1.Clone()方法产生一个object,使用方法后必须产生的object赋值。

    Vector v2 = (Vector)v.clone();

    2.Clone()方法在object中是保护类型方法,如果自己创建的类需要使用Clone()方法的话需要自己重新写一个,并且继承Cloneable接口。

    package tweleve;
    
    import java.util.*;
    
    class MyObject implements Cloneable {
        int i;
    
        MyObject(int ii) {
            i = ii;
        }
    
        public Object clone() {
            Object object = null;
            try {
                object = super.clone();
            } catch (CloneNotSupportedException e) {
                System.out.println("MyObject can't clone");
            }
            return object;
        }
    
        public String toString() {
            return Integer.toString(i);
        }
    }
    
    public class LocalCopy {
        static MyObject g(MyObject v) {
            v.i++;
            return v;
        }
    
        static MyObject f(MyObject v) {
            v = (MyObject) v.clone();
            v.i++;
            return v;
        }
    
        public static void main(String[] args) {
            MyObject aMyObject = new MyObject(11);
            MyObject bMyObject = g(aMyObject);
            if (aMyObject == bMyObject)
                System.out.println("a==b");
            else
                System.out.println("a!=b");
            System.out.println("a=" + aMyObject);
            System.out.println("b=" + bMyObject);
            MyObject cMyObject = new MyObject(31);
            MyObject dMyObject = f(cMyObject);
            if (cMyObject == dMyObject)
                System.out.println("c==d");
            else
                System.out.println("c!=d");
            System.out.println("c=" + cMyObject);
            System.out.println("d=" + dMyObject);
    
        }
    
    }

    3.如果希望一个类能够克隆那么需要有下列步骤:(1)实现Cloneable接口

                                                                                 (2)覆盖Clone()方法

                                                                                 (3)在自己的Clone()方法中调用super.clone()

                                                                                 (4)在自己的clone()中捕获违例 

    4.String类中所有能修改String的方法其实都创建和返回了一个新的String类,原来的String类是没有改变的,包括+和+=,StringBuffer比String操作字符串时更有效。

    package tweleve;
    
    import java.sql.Ref;
    
    import org.omg.CORBA.SystemException;
    
    public class Stringer {
        static String upcase(String s){
             return s.toUpperCase();
        }
        
        public static void main(String[] args){
            String qString=new String("howdy");
            System.out.println(qString);
            String qq=upcase(qString);
            System.out.println(qq);
            System.out.println(qString);
        }
    
    }

  • 相关阅读:
    应急响应之如何发现隐藏的Webshell后门
    从失败终止到崩溃
    DumpConfigurator Utility工具
    使例外成为例外(而不是异常)
    用于可视化虚拟内存使用情况和GC堆使用情况的工具。
    关于EEMessageException异常
    c#/C++混合编程的一个问题
    关于std::__non_rtti_object异常
    仅通过转储来排除内存泄漏
    调试器不应该改变行为
  • 原文地址:https://www.cnblogs.com/junshijie/p/7070901.html
Copyright © 2011-2022 走看看