java补充.ppt
补充函数的调用xmainchange栈内存栈内存y4(3)3(4)43class StringTestpublic 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(x,y);System.out.println(x=+x);System.out.println(y=+y);xy函数的调用ptmainchange栈内存堆内存Point类的对象pt0088:46600088:46600088:4660class StringTestpublic 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(x=+pt.x);System.out.println(y=+pt.y);class Pointint x,y;对象的克隆(clone)为了获取对象的一份拷贝,我们可以利用Object类的clone()方法。在派生类中覆盖基类的clone()方法,并声明为public。在派生类的clone()方法中,调用super.clone()。在派生类中实现Cloneable接口。对象的克隆(clone)为什么我们在派生类中覆盖Object的clone()方法时,一定要调用super.clone()呢?在运行时刻,Object中的clone()识别出你要复制的是哪一个对象,然后为此对象分配空间,并进行对象的复制,将原始对象的内容一一复制到新对象的存储空间中。数组的相关操作在Java中,所有的数组都有一个缺省的属性length,用于获取数组中元素的个数。数组的复制:System.arraycopy()。数组的排序:Arrays.sort()。在已排序的数组中查找某个元素:Arrays.binarySearch()。封装类针对八种基本数据类型定义的相应的引用类型封装类。基本数据类型基本数据类型封装类封装类booleanBooleanbyteByteshortShortintIntegerlongLongcharCharacterfloatFloatdoubleDoubleClass类在Java中,每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息。获取Class实例的三种方式:(1)利用对象调用getClass()方法获取该对象的Class实例;(2)使用Class类的静态方法forName(),用类的名字获取一个Class实例;(3)运用.class的方式来获取Class实例,对于基本数据类型的封装类,还可以采用.TYPE来获取相对应的基本数据类型的Class实例。Class类在运行期间,如果我们要产生某个类的对象,Java虚拟机(JVM)会检查该类型的Class对象是否已被加载。如果没有被加载,JVM会根据类的名称找到.class文件并加载它。一旦某个类型的Class对象已被加载到内存,就可以用它来产生该类型的所有对象。newInstance()调用类中缺省的构造方法。Runtime类和Process类每一个Java程序都有一个Runtime类的单一实例。通过Runtime.getRuntime()获取Runtime类的实例。Runtime类是使用单例模式的一个例子。设计模式在我们进行程序设计时,逐渐形成了一些典型问题和问题的解决方案,这就是软件模式。每一个模式描述了一个在我们程序设计中经常发生的问题,以及该问题的解决方案。当我们碰到模式所描述的问题,就可以直接用相应的解决方法去解决这个问题,这就是设计模式。设计模式单例(Singleton)模式 (1)一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类。(2)单例类的一个最重要的特点是类的构造方法是私有的,从而避免了外部利用构造方法直接创建多个实例。单例类的实现class Singletonprivate static final Singleton st=new Singleton();private Singleton()public static Singleton getInstance()return st;