1、第一章第一章 Java Java语言概述语言概述华中科技大学华中科技大学IBM技术中心技术中心 2008华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center主要内容提要主要内容提要JavaJava程序的开发环境程序的开发环境 JavaJava程序相关问题程序相关问题 JavaJava语言的主要特性语言的主要特性 JavaJava语言的发展历史语言的发展历史 JavaJava程序的开发过程程序的开发过程 华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.CenterJava语言的发展历史语言的发展历史I
2、nternetInternet迅猛发展迅猛发展JavaJava语言正式问世语言正式问世被美国著名杂志被美国著名杂志PC PC MagazineMagazine评为评为19951995年十大优年十大优秀科技产品之一秀科技产品之一James GoslingJames Gosling领导的领导的GreenGreen小小组开发了面向数组开发了面向数字家电的字家电的OakOak语语言言推出了推出了Java2Java2平平台。性能上有所台。性能上有所提高,而且对提高,而且对JavaJava的基本模的基本模式进行了完善,式进行了完善,并提供了更为丰并提供了更为丰富的富的APIAPI 199119951998
3、华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.CenterJava2 的版本划分的版本划分华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.CenterJavaJava语言的主要特性语言的主要特性平台无关性平台无关性简单性简单性面向对象面向对象 分布式、动态性、分布式、动态性、可靠性、安全性可靠性、安全性 多线程多线程华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.CenterJavaJava程序相关问题程序相关问题JavaJava虚拟机虚拟机JavaJava虚拟
4、机虚拟机在真实机器中用软件模拟实现在真实机器中用软件模拟实现的一种抽象的机器。(的一种抽象的机器。(JavaJava虚拟机规范)虚拟机规范)JavaJava虚拟机主要由五个部分组成:指令系统、虚拟机主要由五个部分组成:指令系统、寄存器、栈、存储区、碎片回收区寄存器、栈、存储区、碎片回收区 解释和执行解释和执行JavaJava程序编译后产生的字节码程序编译后产生的字节码 华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.CenterJavaJava程序相关问题程序相关问题Java APIJava API Java APIJava API是是JavaJav
5、a系统提供的预先定义好的软件组件的集系统提供的预先定义好的软件组件的集合,它们提供了许多可供程序员调用的常用功能合,它们提供了许多可供程序员调用的常用功能 丰富的丰富的APIAPI为程序员提供了极大的方便,但也是学习的难为程序员提供了极大的方便,但也是学习的难点点 要学会使用要学会使用Java APIJava API手册手册(The Java 2 Platform API The Java 2 Platform API SpecificationSpecification)http:/ Computer Tech.CenterJavaJava程序相关问题程序相关问题 Java程序的运行机制程序
6、的运行机制源代码可执行代码目标码编译连接运行源代码字节码编译解释执行传统语言的运行机制Java语言的运行机制华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.CenterJavaJava程序相关问题程序相关问题JavaJava程序类型程序类型 JavaJava应用程序(应用程序(Java ApplicationJava Application)是独立完整的程序是独立完整的程序 在命令行调用独立的解释器软件即可运行在命令行调用独立的解释器软件即可运行 主类必须有主类必须有mainmain方法,这也是程序的入口方法,这也是程序的入口 Java Java小程
7、序小程序 Java AppletJava Applet是指在客户端运行的是指在客户端运行的JavaJava小程序,一小程序,一般来说客户端是指用户所使用的浏览器般来说客户端是指用户所使用的浏览器 Java ServletJava Servlet是在服务器端执行的是在服务器端执行的JavaJava小程序,小程序,为了能够支持为了能够支持ServletServlet的运行,服务器端必须安装包含的运行,服务器端必须安装包含JavaJava虚拟机的服务器软件,这种能够支持服务端小程虚拟机的服务器软件,这种能够支持服务端小程序的服务器一般被称为应用服务器序的服务器一般被称为应用服务器 华中科技大学华中科
8、技大学IBM技术中心技术中心HUST&IBM Computer Tech.CenterJavaJava开发环境开发环境JDK/J2SDKJDK/J2SDK(Java Developer KitJava Developer Kit)JDK1.02JDK1.02 JDK1.1.xJDK1.1.x JDK1.2/J2SDK1.3/J2SDK1.4/JDK5.0(J2SDK1.5)JDK1.2/J2SDK1.3/J2SDK1.4/JDK5.0(J2SDK1.5)JavaJava集成开发环境(集成开发环境(IDEIDE)NetBeansNetBeans JBuilderJBuilder EclipseE
9、clipse JCreatorJCreator Forte for JavaForte for Java Visual J+Visual J+WSAD WSAD 华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.CenterJDKJDK的安装与设置的安装与设置从从http:/ 本的本的JDKJDK(本课程采用(本课程采用J2SDK1.3J2SDK1.3以上版本)以上版本)在在WindowsWindows平台上运行安装程序,以安装平台上运行安装程序,以安装JDKJDK设置设置PATHPATH(文件路径)参数。由于(文件路径)参数。由于JDKJDK提供提供
10、的实用程序都在安装目录下的子目录的实用程序都在安装目录下的子目录binbin下,下,为了能在任何目录下直接使用文件名调用为了能在任何目录下直接使用文件名调用这些程序,必须设置操作系统的文件路径这些程序,必须设置操作系统的文件路径参数参数 华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center环境设置环境设置在Windows环境下,为了快速进入指定目录的命令行窗口,可在注册表中增加项目:HKEY_CLASSES_ROOTDirectoryshell进入命令行command默认值设为:cmd /k cd%1华中科技大学华中科技大学IBM技术中心技术
11、中心HUST&IBM Computer Tech.CenterJDKJDK的目录结构的目录结构binbin目录中包含了所有目录中包含了所有JDK5.0JDK5.0提提供的实用程序供的实用程序demodemo目录中包含了目录中包含了JDK5.0JDK5.0自带的自带的实例程序实例程序inculdeinculde目录中包含了一些支持目录中包含了一些支持Java nativeJava native方法的方法的CC+CC+头文件头文件jrejre目录中包含了目录中包含了JavaJava运行环境运行环境所需的所有文件,这个目录中所包所需的所有文件,这个目录中所包含的含的javajava运行环境是运行环境
12、是JDKJDK私有的,私有的,它只为它只为JDKJDK的实用程序提供支持的实用程序提供支持liblib目录中包含了目录中包含了JavaJava开发环境开发环境所需的库文件,它们以所需的库文件,它们以jarjar文件的文件的形式保存形式保存samplesample目录中包含的是体现目录中包含的是体现JDK5.0JDK5.0新特性的一些例程新特性的一些例程 华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.CenterJDKJDK实用程序简介实用程序简介 javacjavac:JavaJava编译器,将编译器,将JavaJava源代码编译为字节码;源代码编
13、译为字节码;javajava:JavaJava解释器,用来解释执行解释器,用来解释执行JavaJava程序的字节码文件;程序的字节码文件;appletviewer(appletviewer(小程序浏览器小程序浏览器):一种执行:一种执行HTMLHTML文件上的文件上的JavaJava小程序类的小程序类的JavaJava浏览器;浏览器;javadocjavadoc:根据:根据JavaJava源代码及其说明语句生成的源代码及其说明语句生成的HTMLHTML文档;文档;jdbjdb:JavaJava调试器,可以逐行地执行程序、设置断点和检调试器,可以逐行地执行程序、设置断点和检查变量;查变量;jav
14、ahjavah:产生可以调用:产生可以调用JavaJava过程的过程的C C过程,或建立能被过程,或建立能被JavaJava程序调用的程序调用的C C过程的头文件;过程的头文件;javapjavap:JavaJava反汇编器,显示编译类文件中的可访问功能反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。和数据,同时显示字节代码含义。华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.CenterJavaJava程序的开发过程程序的开发过程 编辑源代码编辑源代码 编译源代码文件编译源代码文件运行程序运行程序 华中科技大学华中科技大学IBM
15、技术中心技术中心HUST&IBM Computer Tech.CenterJavaJava程序的开发过程程序的开发过程编辑源代码编辑源代码 一般情况下,我们可以使用系统平台下的任何文本编辑器一般情况下,我们可以使用系统平台下的任何文本编辑器进行源代码的编辑,在进行源代码的编辑,在WindowsWindows平台下常用的是平台下常用的是WindowWindow系系统自带的统自带的“记事本记事本”程序或程序或“写字板写字板”程序程序 JavaJava源码大小写敏感源码大小写敏感 JavaJava源码文件的扩展名:源码文件的扩展名:.java.java JavaJava源程序文件也不能随意命名,其文
16、件名必须与程序中源程序文件也不能随意命名,其文件名必须与程序中主类的类名完全相同,包括大小写在内主类的类名完全相同,包括大小写在内 public class MyFirstJavaApp public static void main(String args)System.out.println(“This is My First Java Application!”);华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.CenterJavaJava程序的开发过程程序的开发过程编译源代码编译源代码使用使用JDKJDK实用程序实用程序javacjavac对
17、源代码文件进行编译对源代码文件进行编译 C:MyJavajavac MyFirstJavaApp.java 如果系统提示符再次出现并且没有任何消息产生,那如果系统提示符再次出现并且没有任何消息产生,那么编译便成功了么编译便成功了 如果有系统报错消息产生,则表示程序编译出错,程如果有系统报错消息产生,则表示程序编译出错,程序员必须阅读报错信息,并根据这些信息对程序进行序员必须阅读报错信息,并根据这些信息对程序进行修改修改程序成功编译后,在与源代码文件同一目录下会程序成功编译后,在与源代码文件同一目录下会生成一个新的文件,其文件名与源代码文件名相生成一个新的文件,其文件名与源代码文件名相同,扩展名
18、为同,扩展名为“.class”“.class”。这个文件就是源代码。这个文件就是源代码文件编译产生的程序字节码文件文件编译产生的程序字节码文件 MyFirstJava.class华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.CenterJavaJava程序的开发过程程序的开发过程运行程序运行程序 要执行一个要执行一个JavaJava程序程序非常简单,只需在字非常简单,只需在字节码文件所在目录下节码文件所在目录下输入下列命令就可以输入下列命令就可以了了:java java 字节码文件名字节码文件名第第2章章 面向对象的编程概念面向对象的编程概念华中科
19、技大学华中科技大学IBM技术中心技术中心 2006华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center主要内容提要主要内容提要什么是接口什么是接口 什么是继承什么是继承 什么是类什么是类 什么是消息什么是消息 什么是对象什么是对象 华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center面向对象面向对象 vs.vs.面向过程面向过程面向对象(面向对象(OOPOOP)Object-Oriented Object-Oriented ProgrammingProgramming 用类用类classcl
20、ass封装数据以及与数据相关的操作封装数据以及与数据相关的操作 用类的继承性来实现类的重用性用类的继承性来实现类的重用性 多态性多态性 面向面向“对象对象”,由对象提供服务,由对象提供服务面向过程(面向过程(POPPOP)Procedure-Oriented Procedure-Oriented ProgrammingProgramming 以功能为组织单元以功能为组织单元 通过数据结构来描述具体的问题通过数据结构来描述具体的问题 数据在功能数据在功能(函数函数)之间以参数的形式被传送之间以参数的形式被传送华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tec
21、h.Center现实世界中的对象现实世界中的对象现实世界是由对象构成的现实世界是由对象构成的现实世界中任何实体都可以看作是对象现实世界中任何实体都可以看作是对象 现实世界中的对象有两个共同特征:现实世界中的对象有两个共同特征:状态状态 行为行为 华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center软件对象(软件对象(ObjectObject)软件对象是现实世界对象的抽象软件对象是现实世界对象的抽象软件对象同样具有状态和行为软件对象同样具有状态和行为定义:对象是变量和相关方法的软件组合定义:对象是变量和相关方法的软件组合变量变量方法方法华中科技
22、大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center现实对象现实对象软件对象软件对象方法方法叫叫咬咬吃吃是否饿了:否是否饿了:否名字:小名字:小Q颜色:黑颜色:黑华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center封装(封装(EncapsulationEncapsulation)封装性体现了面向对象程序设计的一个特性,将封装性体现了面向对象程序设计的一个特性,将方法和数据组织在一起,隐藏其具体实现而对外方法和数据组织在一起,隐藏其具体实现而对外体现出公共的接口体现出公共的接口 模块化模块化 隐藏信息
23、隐藏信息变量变量方法方法华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center消息(消息(MessageMessage)复杂的行为必须通过对象之间的交互来实复杂的行为必须通过对象之间的交互来实现现软件对象与其它对象进行交互与通讯是通软件对象与其它对象进行交互与通讯是通过互发消息来实现的过互发消息来实现的 对象B对象 A消息华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center消息的组成消息的组成消息的目的对象消息的目的对象要执行的方法的名称要执行的方法的名称方法所需参数方法所需参数你的车你的车
24、你你换档(低档)换档(低档)华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center消息的性质消息的性质同一对象可接收不同形式的多个消息,产同一对象可接收不同形式的多个消息,产生不同的响应生不同的响应同一个消息可以发给不同的对象,所做出同一个消息可以发给不同的对象,所做出的响应可以截然不同的响应可以截然不同发送方不需要知道接受方如何对请求予以发送方不需要知道接受方如何对请求予以响应的响应的华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center类(类(ClassClass)定义定义:类是蓝图或原型,
25、它定义了所有某种类的:类是蓝图或原型,它定义了所有某种类的对象的共有的变量和方法对象的共有的变量和方法类是具有共同属性和行为的对象的抽象与集合类是具有共同属性和行为的对象的抽象与集合私有的实现细节私有的实现细节公共公共API华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center实例(实例(InstanceInstance)定义:定义:特定类所描述的一个特定类所描述的一个具体具体对象对象华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center对象、类与实体的关系对象、类与实体的关系对象类计算机逻辑的
26、实现映射计算机世界实例化抽象实体抽象数据类现实世界概念世界抽象华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center继承(继承(InheritanceInheritance)广义地说,继承是指能够直接获得已有的性质和特广义地说,继承是指能够直接获得已有的性质和特性,而不必重复定义它们。在面向对象的软件技术性,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动地共享父类中定义的数据和方中,继承是子类自动地共享父类中定义的数据和方法的机制。法的机制。共性部分继承部分个性部分父类子类华中科技大学华中科技大学IBM技术中心技术中心HUST&IB
27、M Computer Tech.Center单重继承与多重继承单重继承与多重继承单重继承:一个子类只有一个唯一确定的单重继承:一个子类只有一个唯一确定的父类父类 单重继承所构成的类的关系结构是一棵树单重继承所构成的类的关系结构是一棵树多重继承:一个子类可以有多个不同的父多重继承:一个子类可以有多个不同的父类类 多重继承所构成的类的关系结构是一个格多重继承所构成的类的关系结构是一个格JavaJava语言仅支持单重继承语言仅支持单重继承华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center继承的作用继承的作用使软件系统具有开放性使软件系统具有开放性
28、更好地进行抽象与分类更好地进行抽象与分类实现代码的复用实现代码的复用提高可维护性提高可维护性华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center类型(类型(TypeType)在面向数值的编程中,类型通常用作数据在面向数值的编程中,类型通常用作数据的表示。在的表示。在JavaJava这样的强类型语言中,在这样的强类型语言中,在编译期,每一个变量和表达式都有一个类编译期,每一个变量和表达式都有一个类型与之相对应型与之相对应JavaJava中的类型:基本类型、类、接口中的类型:基本类型、类、接口华中科技大学华中科技大学IBM技术中心技术中心HUST
29、&IBM Computer Tech.Center接口(接口(InterfaceInterface)接口和类一样也是一种类型,也同样包含一些方接口和类一样也是一种类型,也同样包含一些方法的定义。但与类不同的是:接口中所定义的所法的定义。但与类不同的是:接口中所定义的所有方法都是有方法都是抽象方法抽象方法(即没有实现的方法)。(即没有实现的方法)。接口中所定义的方法由实现(接口中所定义的方法由实现(implementimplement)该接口)该接口的类来实现,一个类可以同时实现多个接口的类来实现,一个类可以同时实现多个接口接口机制使接口机制使JavaJava的面向对象编程变得更加灵活。的面向对
30、象编程变得更加灵活。解决了单重继承带来的问题解决了单重继承带来的问题接口定义了对象的行为模型,相当于一个协议。接口定义了对象的行为模型,相当于一个协议。实现接口的各个类负责实现接口所定义的行为。实现接口的各个类负责实现接口所定义的行为。虽然实现细节各不相同,但对用户来说是一样的虽然实现细节各不相同,但对用户来说是一样的行为。行为。华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center面向对象的示例面向对象的示例本例中包含很多对象:点、窗口、颜色、点击事本例中包含很多对象:点、窗口、颜色、点击事件件 代码:代码:ClickMeApp.javaCl
31、ickMeApp.java ,ClickMe.javaClickMe.java,Spot.javaSpot.java 华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.CenterSpotSpot类类public class Spot /instance variables private int size;public int x,y;/constructor public Spot()x=-1;y=-1;size=1;/methods for access to the size instance variable public void setS
32、ize(int newSize)if(newSize=0)size=newSize;public int getSize()return size;华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.CenterSpotSpot对象对象private Spot spot=null;.spot=new Spot();华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center示例中的消息示例中的消息g2d.setColor(Color.WHITE);g2d.fillRect(0,0,getWidth()-1,ge
33、tHeight()-1);华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center示例中的继承和接口示例中的继承和接口public class ClickMe extends JComponent implements MouseListener .public class ClickMe extends JComponent implements MouseListener ./Methods required by the MouseListener interface.public void mousePressed(MouseEvent
34、event)if(spot=null)spot=new Spot();spot.setSize(RADIUS);spot.x=event.getX();spot.y=event.getY();repaint();public void mouseClicked(MouseEvent event)public void mouseReleased(MouseEvent event)public void mouseEntered(MouseEvent event)public void mouseExited(MouseEvent event)欢迎提问欢迎提问第三章第三章 Java Java语言
35、基础语言基础华中科技大学华中科技大学IBM技术中心技术中心华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center变量(变量(VariableVariable)对象将它的状态存储在变量中对象将它的状态存储在变量中定义定义:变量是一个由标识符命名的数据项变量是一个由标识符命名的数据项 变量名必须是一个合法的变量名必须是一个合法的标识符标识符 -一个一个以字母开头的无限制的以字母开头的无限制的UnicodeUnicode字符序列。字符序列。变量的声明:变量的声明:;int i;int i;double pi=3.1415926;double pi=3
36、.1415926;String name;String name;华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center数据类型数据类型 每个变量都必须有一个数据类型每个变量都必须有一个数据类型.一个变一个变量的数据类型决定了它能容纳的值和在它量的数据类型决定了它能容纳的值和在它上面可以进行什么操作。上面可以进行什么操作。JavaJava编程语言有两大类数据类型:编程语言有两大类数据类型:原始类型原始类型(primitive(primitive)引用类(引用类(reference)reference)华中科技大学华中科技大学IBM技术中心技术中
37、心HUST&IBM Computer Tech.CenterJavaJava的数据类型的数据类型Java type systemprimitivereferencecharnumericbooleanclassinterfacearrayintegerfloating-pointbyteshortintlongfloatdoubleJava type systemprimitivereferencecharnumericbooleanclassinterfacearrayintegerfloating-pointbyteshortintlongfloatdouble华中科技大学华中科技大学IB
38、M技术中心技术中心HUST&IBM Computer Tech.Center原始类型变量包含单个值,其大小和格式原始类型变量包含单个值,其大小和格式与它的类型匹配:数字、字符或布尔值。与它的类型匹配:数字、字符或布尔值。JavaJava语言没有语言没有unsignedunsigned类型类型 0 xFFFF0 xFFFF和和0 xFF0 xFF谁大?谁大?JavaJava语言必须强制类型转换语言必须强制类型转换 float f=0.1;float f=0.1;boolean b=1;boolean b=1;原始类型原始类型 华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Com
39、puter Tech.Center引用类型引用类型数组,类和接口就是引用数据类型数组,类和接口就是引用数据类型.与原始类型变与原始类型变量的值不同的是,量的值不同的是,引用类型变量的值是对应变量引用类型变量的值是对应变量代表的一个值或一组值的引用(也就是其地址)代表的一个值或一组值的引用(也就是其地址)在其他语言里引用被称为指针或者内存地址。在其他语言里引用被称为指针或者内存地址。JavaJava不支持显示地使用地址,而是使用变量的名不支持显示地使用地址,而是使用变量的名称代替。称代替。华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center变量
40、的引用变量的引用 通过变量名引用变量的值通过变量名引用变量的值简单名称:由单个标识符组成的名称简单名称:由单个标识符组成的名称限定名称:通过类名或对象名引用改类或限定名称:通过类名或对象名引用改类或对象中的成员变量对象中的成员变量 System.out.println(i+spot.x);System.out.println(i+spot.x);华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center作用范围作用范围 变量的作用范围是可以通过简单名称引用变量的作用范围是可以通过简单名称引用该变量的程序区域该变量的程序区域作用范围也决定了系统为该变
41、量创建和释作用范围也决定了系统为该变量创建和释放内存的时间放内存的时间华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center例子例子 int i=10;if(i 0)int i=20;System.out.println(“The value of i=”+i);System.out.println(“The value of i=”+i);华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center最终变量最终变量 你可以在任意范围里将一个变量定义为最你可以在任意范围里将一个变量定义为最终变量(终变
42、量(finalfinal)最终变量的值一经初始化就不能改变最终变量的值一经初始化就不能改变类似于类似于C C语言中的常量语言中的常量(const)(const)final int aFinalVar=0;final int blankfinal;.blankfinal=0;华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center操作符、表达式、语句和块操作符、表达式、语句和块自学!自学!第四章第四章 对象基础和简单数据对象对象基础和简单数据对象华中科技大学华中科技大学IBM技术中心技术中心华中科技大学华中科技大学IBM技术中心技术中心HUST&I
43、BM Computer Tech.Center主要内容主要内容数组数组数字数字字符和字符串字符和字符串对象的生存周期对象的生存周期华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center对象的生命周期对象的生命周期华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.CenterCreateObjectDeomCreateObjectDeompublic class CreateObjectDemo public static void main(String args)/创建一个创建一个Point对象和两个
44、对象和两个Rectangle对象对象 Point origin_one=new Point(23,94);Rectangle rect_one=new Rectangle(origin_one,100,200);Rectangle rect_two=new Rectangle(50,100);/显示显示rect_one的宽、高以及面积的宽、高以及面积 System.out.println(Width of rect_one:+rect_one.width);System.out.println(Height of rect_one:+rect_one.height);System.out.pr
45、intln(Area of rect_one:+rect_one.area();rect_two.origin=origin_one;/设置设置rect_tworect_two的位置的位置 /显示显示rect_two的位置的位置 System.out.println(X Position of rect_two:+rect_two.origin.x);System.out.println(Y Position of rect_two:+rect_two.origin.y);/移动移动rect_two并且显示它的新位置并且显示它的新位置 rect_two.move(40,72);System.o
46、ut.println(X Position of rect_two:+rect_two.origin.x);System.out.println(Y Position of rect_two:+rect_two.origin.y);华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center对象的创建对象的创建类型名类型名 引用变量引用变量=new =new 构造器构造器(构造器的参数构造器的参数)华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center声明一个变量来引用对象声明一个变量来引用对象为了声
47、明一个变量来引用对象,你可以使用类或为了声明一个变量来引用对象,你可以使用类或者接口的名字作为变量的类型者接口的名字作为变量的类型声明并没有创建新对象声明并没有创建新对象。在对该引用变量赋值前,。在对该引用变量赋值前,该引用为空该引用为空,称为空引用称为空引用(null)(null)类型名类型名 引用变量引用变量=new =new 构造器构造器(构造器的参数构造器的参数)Point origin_one华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center实例化对象实例化对象newnew操作符通过为新对象分配内存来实例化一个类操作符通过为新对象
48、分配内存来实例化一个类newnew操作符需要一个后缀参数,即操作符需要一个后缀参数,即构造器构造器的一个调的一个调用用newnew操作符返回一个对它所创建对象的引用,通常操作符返回一个对它所创建对象的引用,通常该引用被赋值给具有适当类型的引用变量该引用被赋值给具有适当类型的引用变量 如果如果newnew操作符返回的引用没有被赋给任何变量,那么操作符返回的引用没有被赋给任何变量,那么当当newnew操作符所在的语句执行完后,将无法访问该对象操作符所在的语句执行完后,将无法访问该对象类型名类型名 引用变量引用变量=new =new 构造器构造器(构造器的参数构造器的参数)华中科技大学华中科技大学I
49、BM技术中心技术中心HUST&IBM Computer Tech.Center初始化对象初始化对象构造器(构造器(ConstructorConstructor):):是一个用来创建对象的是一个用来创建对象的特殊方法,用来初始化对象的属性。特殊方法,用来初始化对象的属性。构造器的名字与类名相同构造器的名字与类名相同 构造器没有返回值构造器没有返回值 构造器所包含的语句用来对所创建的对象进行初始化构造器所包含的语句用来对所创建的对象进行初始化 没有参数的构造器称为没有参数的构造器称为“无参构造器无参构造器”每个每个JavaJava类都类都至少有一个至少有一个构造器,如果该类没有显式构造器,如果该类
50、没有显式地声明任何构造器,系统会默认地为该类提供一个不地声明任何构造器,系统会默认地为该类提供一个不包含任何语句的无参构造器包含任何语句的无参构造器类型名类型名 引用变量引用变量=new =new 构造器构造器(构造器的参数构造器的参数)华中科技大学华中科技大学IBM技术中心技术中心HUST&IBM Computer Tech.Center对象创建的实例对象创建的实例public class Point public int x=0;public int y=0;public Point(int x,int y)this.x=x;this.y=y;Point origin_one=new Po