《Java基本数据类型和引用数据类型.ppt》由会员分享,可在线阅读,更多相关《Java基本数据类型和引用数据类型.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Lesson4主讲人:孙鑫主要内容主要内容n nJavaJava的常用包的常用包n n“=”“=”和和“equals”“equals”的用法的用法n n基本数据类型与引用类型基本数据类型与引用类型n nStringString和和StringBufferStringBuffern n对象的克隆(对象的克隆(cloneclone)n n数组的相关操作数组的相关操作n n封装类封装类n nRuntimeRuntime类与类与ProcessProcess类类n nClassClass类类n n设计模式设计模式Java的常用包的常用包n njava.appletjava.applet:包含一些用于创建
2、:包含一些用于创建JavaJava小应用程序的类。小应用程序的类。n njava.awtjava.awt:包含一些用于编写与平台无关的图形界面:包含一些用于编写与平台无关的图形界面(GUI)(GUI)应用程序的类。应用程序的类。n njava.iojava.io:包含一些用作输入输出:包含一些用作输入输出(I/O)(I/O)处理的类。处理的类。n njava.langjava.lang:包含一些:包含一些JavaJava语言的基本类与核心类,如语言的基本类与核心类,如StringString、MathMath、IntegerInteger、SystemSystem和和RuntimeRuntim
3、e,提供常用的功能,这个,提供常用的功能,这个包中的所有类是被隐式导入的。包中的所有类是被隐式导入的。n :包含用于建立网络连接的类,与:包含用于建立网络连接的类,与java.iojava.io同时使用同时使用完成与网络有关的读写。完成与网络有关的读写。n njava.utiljava.util:包含一些实用工具类和数据结构类。:包含一些实用工具类和数据结构类。“=”和和“equals”的用法的用法n n在Java中,boolean、byte、short、int、long、char、float、double这八种是基本数据类型,其余的都是引用类型。n n“=”是比较两个变量的值是否相等,“eq
4、uals”是比较两个对象变量所代表的对象的内容是否相等。对象的内存分配图对象的内存分配图栈内存堆内存str1str2abcabc0088:44000088:44000088:46600088:4660str1标识的对象str2标识的对象 当我们声明一个引用类型变量时,系统只为该变量分配了引用空间,并未创建当我们声明一个引用类型变量时,系统只为该变量分配了引用空间,并未创建当我们声明一个引用类型变量时,系统只为该变量分配了引用空间,并未创建当我们声明一个引用类型变量时,系统只为该变量分配了引用空间,并未创建一个具体的对象;当用一个具体的对象;当用一个具体的对象;当用一个具体的对象;当用newne
5、w为对象分配空间后,将对象的引用赋值给引用变量。为对象分配空间后,将对象的引用赋值给引用变量。为对象分配空间后,将对象的引用赋值给引用变量。为对象分配空间后,将对象的引用赋值给引用变量。n nString str=“abc”;String str=“abc”;int i=3;int i=3;float f=4.5f;float f=4.5f;char ch=a;char ch=a;boolean b=true;boolean b=true;System.out.println(str+i+f+ch+b);System.out.println(str+i+f+ch+b);n n针对针对Strin
6、gString的的“+”“+”和和“+=”“+=”,是,是JavaJava中唯一被重载中唯一被重载的操作符;在的操作符;在JavaJava中,不允许程序员重载操作符。中,不允许程序员重载操作符。String和和StringBufferString和和StringBuffern nString类对象一个常量对象。String str=“abc”;str=“def”;n n在处理大量字符串的程序中,我们通常用StringBuffer来替代String。数组的内存分配图数组的内存分配图n n基本数据类型一维数组内存分配栈内存堆内存numc0000088:44000088:4400new int3产生
7、的对象数组的内存分配图数组的内存分配图n n基本数据类型一维数组内存分配栈内存堆内存numc000null0088:4400new int3产生的对象num=null;对象数组的内存分配对象数组的内存分配栈内存堆内存studentsnullStudent students;对象数组的内存分配对象数组的内存分配堆内存studentsc0088:44000088:4400new students3产生的对象nullnullStudent students;students=new Student3;null栈内存对象数组的内存分配对象数组的内存分配堆内存studentsc0088:44000088
8、:4400new students3产生的对象nullnullStudent students;students=new Student3;students0=new Student(“lisi”,18);student0标识的Student对象lisi180088:46600088:4660栈内存函数的调用函数的调用n n在Java中,传参时,都是以传值的方式进行。n n对于基本数据类型,传递的是数据的拷贝;对于引用类型,传递的引用的拷贝。函数的调用函数的调用xmainchange栈内存y4(3)3(4)43class StringTestpublic static void change(
9、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
10、.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)n n为了获取对象的一份拷贝,我们可以利用Object类的clone()方法。n n在派生类中覆盖基类的clone()方法,并声明为public。n n在派生类的clone()方法中,调用super.clone()。n n在派生类中实现
11、Cloneable接口。对象的克隆对象的克隆(clone)n n为什么我们在派生类中覆盖Object的clone()方法时,一定要调用super.clone()呢?在运行时刻,Object中的clone()识别出你要复制的是哪一个对象,然后为此对象分配空间,并进行对象的复制,将原始对象的内容一一复制到新对象的存储空间中。数组的相关操作数组的相关操作n n在Java中,所有的数组都有一个缺省的属性length,用于获取数组中元素的个数。n n数组的复制:System.arraycopy()。n n数组的排序:Arrays.sort()。n n在已排序的数组中查找某个元素:Arrays.binar
12、ySearch()。封装类封装类n n针对八种基本数据类型定义的相应的引用类型封装类。针对八种基本数据类型定义的相应的引用类型封装类。Class类类n n在在JavaJava中,每个中,每个classclass都有一个相应的都有一个相应的ClassClass对象。也就是说,对象。也就是说,当我们编写一个类,编译完成后,在生成的当我们编写一个类,编译完成后,在生成的.class.class文件中,文件中,就会产生一个就会产生一个ClassClass对象,用于表示这个类的类型信息。对象,用于表示这个类的类型信息。n n获取获取ClassClass实例的三种方式:实例的三种方式:(1 1)利用对象调
13、用)利用对象调用getClass()getClass()方法获取该对象的方法获取该对象的ClassClass实例;实例;(2 2)使用)使用ClassClass类的静态方法类的静态方法forName()forName(),用类的名字获取,用类的名字获取一个一个ClassClass实例;实例;(3 3)运用)运用.class.class的方式来获取的方式来获取ClassClass实例,对于基本数据实例,对于基本数据类型的封装类,还可以采用类型的封装类,还可以采用.TYPE.TYPE来获取相对应的基本数来获取相对应的基本数据类型的据类型的ClassClass实例。实例。Class类类n n在运行期
14、间,如果我们要产生某个类的对象,Java虚拟机(JVM)会检查该类型的Class对象是否已被加载。如果没有被加载,JVM会根据类的名称找到.class文件并加载它。一旦某个类型的Class对象已被加载到内存,就可以用它来产生该类型的所有对象。n nnewInstance()调用类中缺省的构造方法。Runtime类和类和Process类类n n每一个Java程序都有一个Runtime类的单一实例。n n通过Runtime.getRuntime()获取Runtime类的实例。n nRuntime类是使用单例模式的一个例子。设计模式设计模式n n在我们进行程序设计时,逐渐形成了一些典型问题和问题的解
15、决方案,这就是软件模式。n n每一个模式描述了一个在我们程序设计中经常发生的问题,以及该问题的解决方案。n n当我们碰到模式所描述的问题,就可以直接用相应的解决方法去解决这个问题,这就是设计模式。设计模式设计模式n n单例(Singleton)模式 (1)一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类。(2)单例类的一个最重要的特点是类的构造方法是私有的,从而避免了外部利用构造方法直接创建多个实例。单例类的实现单例类的实现class Singletonprivate static final Singleton st=new Singleton();private Singleton()public static Singleton getInstance()return st;设计模式参考书籍设计模式参考书籍 Java与模式与模式 作者:阎宏 电子工业出版社出版