java孙鑫 第四课 Java 的常用包与数组的复制与排序

本文详细解析了Java中基本数据类型与引用类型的参数传递机制,并通过实例展示了对象克隆的具体实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

函数的调用:

   java中,传参数时都是以值传递方式经行的。基本数据类型都是传递的数据拷贝,引用类型传递的都是引用的拷贝。看看下面这个输出的什么呢?

class StringTest

{

   public static void change(int x,int y)

   {

      x=x+y;

      y=x-y;

      x=x-y;

   }

   public static void main(String[] args)

   {

      int x= 3;

      int y= 4;

      change(3,4);

      System.out.println("x= "+x+" ;  y= "+y);

   }

}输出结果为x= 3 y= 4  原因就是传递给change(34)中的值只是一个拷贝,而并非xy。所以xy的值就并没有交换咯。

下面是引用类型值传递:

class StringTest

{

   public static void change(int x,int y)

   {

      x=x+y;

      y=x-y;

      x=x-y;

   }

   public static void change(Point pt)

   {

      pt.x=pt.x+pt.y;

      pt.y=pt.x-pt.y;

      pt.x=pt.x-pt.y;

   }

   public static void main(String[] args)

   {

      Point pt=new Point();

      pt.x=3;

      pt.y=4;

      change(pt);

      System.out.println("pt.x= "+pt.x+" ;  y= "+pt.y);

   }

}

class Point

{

   int x;

   int y; 

}  //输出结果是pt.x=4  pt.y=3

这时就出现了一个问题,有时候我们需要改变一下某个对象中的变量值,但是又不需要影响对象中值的改变,这时怎么办,你说复制一个对象???可行么?复制一个的话,其实复制的是对象的引用,所以当你更改变量值时原始对象变量值也改变了。这时就需要用到java中的对象克隆clone了。

对象的克隆(clone):

   1为了获取对象的一份拷贝,我们可以使用Objeact对象中的clone()方法

   2 但是注意在派生类中要覆盖基类中的clone()方法,并申明为public

   3 在派生类clone()方法中需要调用super.clone()方法

   4 同时需要在派生类中实现Cloneable接口

例如,

class Student

{

   String name;

   int age;

   Student(String name,int age)

   {

      this.name=name;

      this.age=age;

   } 

}

要实现Student类可以复制应该像下面这样:

class Student implements Cloneable //实现Cloneable接口

{

   String name;

   int age;

   Student(String name,int age)

   {

      this.name=name;

      this.age=age;

   } 

   //实现clone方法,注意要定义成public

   public Object clone()

   {

      Object o=null;

      try

      {

        o.super.clone;  //实现super.clone()调用并捕捉异

      }

      catch(CloneNotSupportedException e)

      {

        System.out.println(e.toString());

      }

      return o;

}

数组的相关操作:

1 java中所有数组都有个默认的属性就是length

2 数组的复制:System.arrrayCopy()方法实现

3 数组的排序:Arrays.sort() 注意:Arrays类在util包中

4 在已排序的数组中查找某个元素:Arrays.binarySearch()

   当然,如果你使用System.arrayCopy()复制了一个数组,然后对复制的数组进行更改,原来那个数组相应值也会改变的哦。又回到以前的内容了哈,原因是数组是引用类型,所以复制只是复制的对象引用而已。

   在使用Arrays.sort()方法对对象类型排序的时候,该对象类要实现comparable接口,并实现其中的conparayTo()方法。例子请看第四课h

封装类:第四课h 12853

Class  第四课I 7186

   newInstance()调用类中缺省的构造方法

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值