【Java精品源码栏目提醒】:网学会员为需要Java精品源码的朋友们搜集整理了java讲义(清华郑莉) - 大学课件相关资料,希望对各位网友有所帮助!
第一章
Java 语言基础知识1.1
Java 语言与面向对象程序设计1、面向对象的程序设计思想2、
Java 语言特点 面向对象 安全性 操作平台无关性 多线程 内存管理3、
Java 类库1.2
Java5 和
Java6 的新特色(教学用
Java6)注意一下
Java 的版本问题J2EE J2SE J2ME1.3
Java 程序1、开发环境搭建1)JDK 6 安装软件 设置环境变量 path e:jdk classpath.e:jdklibdt.jare:jdklibtools.jar注意:红色字体标出的是 jdk 安装路径2)集成开发环境介绍 NetBeans Eclipse2、一个简单的
java 程序源文件(.
java) 类文件.class例 1.1:public class Test public static void main String args System.out.printlnquothelloquot 注意:在两种环境下都运行一下该程序3、
java 程序分类 Application:运行在客户端的
java 程序,主类必须要有一个方法 main Applet:运行于支持
java 的 web 浏览器中,不包含 main方法 例 1.2: (书 4 例题 1.2)import
java.awt.Graphicsimport javax.swing.JAppletpublic class MyApplet extends JApplet public void paintGraphics g super.paintg g.drawStringquothelloquot 25 25 1.4 基本数据类型与表达式1、变量和常量int ifinal int PRICE342、基本数据类型1)整型 byte short int long2)浮点型 float double3)字符型 char4)布尔型 boolean注意一个数据封装类的概念3、运算符4、类型转换隐式转换显示转换(强制转换)1.5-1.6 数组一、数组的声明例如:int a int a注意:声明数组时无需指定数组元素个数,也不为数组元素分配内存空间二、数组的创建例如:int a anew int5 或者 int anew int5三、数组元素的初始化例如:int a2415int aa2416四、数组引用主要指数组下标五、二维数组1、二维数组的声明int aint a2、二维数组的创建int aanew int34Anew int3a0new int2a1new int4a2new int33、二维数组的初始化int a241234564、二维数组的引用例题: int myArray myArraynew int3 myArray0new int3 int x02 int y01234 myArray1x myArray2y 第二章 类和对象的基本概念2.1 面向对象程序设计方法概述 抽象 封装 继承 多态2.2 类和对象一、类定义定义格式publicabstract final class 类名称 ltTypeTypegtextends 父类名称implements 接口名称{ 类体}举例说明class Point int x0 y0class Student int sno String sname int age二、对象的创建1)对象声明Point p12)对象实例化(创建)p1new Pointp1.x4p1.y5Point p2p1注意:1、引用变量的概念2、基本数据类型的封装类
Java 语言中,数据类型的对象封装类(Type Wrapper)用于封装基本数据类型的有关信息及操作,如用于比较操作和字符串输出的函数。
实际上,数据类型本身的作用并不是很大,更多时候人们更愿意直接使用
Java 的基本数据类型,这样可以得到更优化的代码。
但是
Java 的基本数据类型作为
Java 语言规范中惟一不具对象性的内容,既不能子类化,本身又不具备任何操作,因而无法扩充自身功能,甚至也不能利用
Java 根对象 Object 类的函数。
鉴于这些原因,为确保
Java 语言的纯面向对象特征,
Java 的语言基础类库为数据类型提供一些对象封装类。
数据类型类是由多个类组成的一个集合,每种数据类型均存在一相应的对象封装类。
数据类型的对象封装类与相应的基本数据类型名字几乎相同,不要混淆。
基本数据类型一般以小写字母表示,对象封装类以大写字母开头
Java 基本类型和对象封装类的对应基本数据类型 对象封装类布尔型(boolean) Boolean字符型(char) Char双精度浮点型(double) Double单精度浮点型(float) Float整型(int) Integer长整型(long) Long3、基本数据类型的自动装箱拆箱比较 Integer inew Integer2 Integer i3 int ji.intValue int ji三、类的两类成员要素 数据成员 〔修饰词〕类型 变量名或带初始化的变量名列表 方法成员 〔修饰词〕返回类型 方法名(参数) {方法体} 注意:方法返回类型可以是普通类型,也可以是引用类型,如类名举例:Class Car int speed double high String type int getSpeedSystem.out.printlnspeed练习题:定义表示坐标点的类,表示学生的类class Student int sno String sname int age public void show System.out.printlnquotequot,年龄:quotage public class Test public static void mainString args Student stunew Student stu.sno1 stu.snamequot张三quot stu.age23 stu.show 四、static1、实例变量和类变量1)实例变量(非静态变量)2)类变量(静态变量)前面加上单词 static举例说明例题 2.6class Circle static double PI 3.14159265 int radius public double circumference return 2 PI radius public class CircumferenceTester public static void mainString args Circle c1 new Circle c1.radius 50 Circle c2 new Circle c2.radius 10 double circum1 c1.circumference double circum2 c2.circumference System.out.printlnquotCircle 1 has circumference quot circum1 System.out.printlnquotCircle 2 has circumference quot circum2 总结:区别非静态变量(实例变量) 。
类变量一般通过类名访问。
不同对象的实例变量被分配到不同的内存空间,而如果类中存在类变量,那么所有对象共享类变量例题 2.7:class Circle static double PI 3.14159265 int radius public double circumference return 2 PI radius public double area return PI radius radius class Rectangle double width double height public double area return width height public class AreaTester public static void mainString args Circle c new Circle c.radius 50 Rectangle r new Rectangle r.width 20 r.height 30 System.out.printlnquotCircle has area quot c.area System.out.printlnquotRectangle has area quot r.area 例题 2.8 带参数的方法举例:在 Circle 类中增加方法改变圆的半径class Circle static double PI 3.14159265 int radius public double circumference return 2 PI radius public double area return PI radius radius public void enlargeint factor radius radius factor public class EnlargeTester public static void mainString args Circle c1 new Circle c1.radius 50 Circle c2 new Circle c2.radius 10 System.out.printlnquotCircle 1 的周长: quot c1.circumference System.out.printlnquotCircle 2 的周长: quot c2.circumference c2.enlarge4 System.out.printlnquotCircle 2 扩大后的周长: quot c2.circumference 2、实例方法和类方法1)实例方法(非静态方法)2)类变方法(静态方法)方法名前面加上单词 static举例说明:例题 1:class A int x static int y10 public void f1 System.out.printlnquot我是方法一xquotxquotyquoty public static void f2 System.out.printlnquot我是方法二yquotypublic class Test public static void mainString args A a1new A a1.f1 A.f2 例题 2:class A int x static int y10 public void ffSystem.out.printlnquothelloquot public void f1 ff System.out.printlnquot我是方法一quot public static void f2 ff System.out.printlnquot我是方法二quotpublic class Test public static void mainString args A a1new A a1.f1 A.f2 总结: 类方法通过类名访问。
类方法只能访问类变量,调用其他类方法 因为静态方法隶属于类所对应的所有对象,所以不能有 this.成员方法(参数)五、类的组织——包1、包的概念 一个编译单元中只能有一个 public 类,该类名与文件名相同,编译单元中的其他类往往是 public类的辅助类,经过编译,每个类都会产一个 class 利用包来划分名字空间,便可以避免类名冲突2、包的作用 将相关的源代码文件组织在一起 类名的空间管理,利用包来划分名字空间,便可以避免类名冲突 提供包一级的封装及存取权限3、包的命名 a 每个包的名称必须是“独一无二”的 b
Java 中包名使用小写字母表示 c 命名方式建议 i. 将机构的 Internet 域名反序,作为包名的前导 ii. 若包名中有任何不可用于标识符的字符,用下划线替代 iii. 若包名中的任何部分与关键字冲突,后缀下划线 iv. 若包名中的任何部分以数字或其他不能用作标识符起始的字符开头,前缀下划线gxu.computer.wang.javagxu.english.zhang3、引入包import 语句例如:4、定义包package 包名;六、类的访问控制 public 默认权限(无修饰符)七、类成员的访问控制1、各访问控制权限如表 2-3 public private protected 默认权限2、get 和 set 方法当变量访问权限为 private 时使用举例说明3、this 的使用2.3 对象初始化和回收一、构造方法1、构造方法作用2、构造方法定义格式例题:class Point private int x private int y public Pointint xint y this.xx this.yy public void show System.out.printlnquotquotxquotquotyquotquot public class Test public static void mainString args Point p1new Point36 p1.show 小结:1)构造方法没有返回类型的说明2)构造方法名必须和类名同名3)构造方法在创建对象时自动调用3、默认构造方法你定义的类中没有定义构造方法,系统会自动加上一个默认构造方法(无参,无具体语句);如果你定义了构造方法,默认的构造方法系统不给了,如果需要,你可以自己再定义一个无参的构造方法。
二、内存回收技术综合例题:import
java.util.Scannerclass Student int sno String name int age public Studentint snoString nameint age this.snosno this.namename this.ageage public void show System.out.printquot学号:quotsno System.out.printquot System.out.printlnquot 年龄:quotage public class Test public static void mainString args Student stunew Student5 int sno_var String name_var int age_var forint i0ilt3i System.out.printlnquot请输入第quoti1quot个学生的学号:quot sno_varnew ScannerSystem.in.nextInt System.out.printlnquot请输入第quoti1quot个学生的e_varnew ScannerSystem.in.next System.out.printlnquot请输入第quoti1quot个学生的年龄:quot age_varnew ScannerSystem.in.nextInt stuinew Studentsno_varname_varage_var forint i0ilt3i stui.show 2.4 枚举类型
Java 5 的新特色,可以取代
Java 5 之前的版本中使用的常量需要一个有限集合,而且集合中的数据为特定的值时,可以使用枚举类型格式:public enum 枚举类性名称 implements 接口名称列表 枚举值; 变量成员声明及初始化; 方法声明及方法体;例 2-17enum Score EXCELLENT QUALIFIED FAILEDpublic class ScoreTester public static void mainString args giveScoreScore.EXCELLENT public static void giveScoreScore s switchs case EXCELLENT: System.out.printlnquotExcellentquot break case QUALIFIED: System.out.printlnquotQualifiedquot break case FAILED: System.out.printlnquotFailedquot break 第三章 类的方法3.1 方法的控制流程一、分支结构 (if 语句)二、分支结构(switch 语句)三、循环结构1、for 语句2、while 语句3、do-while 语句四、continue 语句和 break 语句练习题:课后习题 3-3,3-4,3-63.2 异常处理简介1、异常的基本概念2、
java 的异常处理机制3、
Java 处理错误的方法 抛出throw异常 在方法的运行过程中,如果发生了异常,则该方法生成一个代表该异常的对象并把 它交给运行时系统,运行时系统便寻找相应的代码来处理这一异常 捕获catch异常 运行时系统在方法的调用栈中查找,从生成异常的方法开始进行回溯,直到找到包 含相应异常处理的方法为止分析图 3-1 Method4 探测抛出异常 Method3 调 用 Method2 Method1 捕获处理异常4、错误的分类 程序运行过程中发生的异常事件 根据错误的严重程度不同,可分为两类 错误 致命性的,用户程序无法处理 Error 类是所有错误类的父类 异常 非致命性的,可编制程序捕获和处理 Exception 类是所有异常类的父类 再对异常进行分类 非检查型异常 不能期望程序捕获的异常例如数组越界,除零等 继承自 RuntimeException 在方法中不需要声明,编译器也不进行检查 检查型异常 其他类型的异常 如果被调用的方法抛出一个类型为 E 的检查型异常,那么调用者必须捕获 E 或者也声明抛出 E(或者 E 的一个父类),对此编译器要进行检查5、
Java 预定义的一些常见异常 ArithmeticException:整数除法中除数为 0 NullPointerException :访问的对象还没有实例化 NegativeArraySizeException :创建数组时元素个数是负数 ArrayIndexOutOfBoundsException:访问数组元素时,数组下标越界 ArrayStoreException:程序试图向数组中存取错误类型的数据 FileNotFoundException:试图存取一个并不存在的文件 IOException:通常的 I/O 错误注意:前 6 个是非检查型异常,后 2 个是检查型异常例题 3-13import
java.io.public class HelloWorld public static void main String args int i 0 String greetings quotHello worldquot quotNo I mean itquot quotHELLO WORLDquot while i lt 4 System.out.println greetingsi i 三、异常的处理 对于检查型异常,
Java 强迫程序必须进行处理。
处理方法有两种: 声明抛出异常:不在当前方法内处理异常,而是把异常抛出到调用方法中 捕获异常:使用 trycatch块,捕获到所发生的异常,并进行相应的处理1、 声明抛出异常 如果程序员不想在当前方法内处理异常,可以使用 throws 子句声明将异常抛出到调用方法中 如果所有的方法都选择了抛出此异常, 最后 JVM 将捕获它,输出相关的错误信息,并终止程序的运行。
在异常被抛出的过程中 任何方法都可以捕获它并进行相应的处理public void openThisFileString fileName throws
java.io.FileNotFoundException //code for method 2、 捕获异常1)语法格式try statements catch exceptiontype name statements finally statements说明: try 语句:其后跟随可能产生异常的代码块 catch 语句:其后跟随异常处理语句,通常用到两个方法 getMessage – 返回一个字符串对发生的异常进行描述。
printStackTrace – 给出方法的调用序列,一直到异常的产生位置 finally 语句 不论在 try 代码段是否产生异常,finally 后的程序代码段都会被执行。
通常在这里释放内存以外的其 他资源注意事项:在类层次树中,一般的异常类型放在后面,特殊的放在前面try ......catchjava.lang.Exception ex ......catchjava.lang.IOException ex ......catchjava.lang.FileNotFoundException ex ......2)例题 3-14:读入两个整数,第一个数除以第二个数,之后输出public class ExceptionTester public static void mainString args BufferedReader inputStream new BufferedReader new InputStreamReaderSystem.in System.out.printlnquotEnter the first number:quot String str inputStream.readLine.trim int number1 Integer.valueOfstr.intValue System.out.printlnquotEnter the second number:quot str inputStream.readLine.trim int number2 Integer.valueOfstr.intValue System.out.printnumber1 quot / quot number2 quotquot int result number1 / number2 System.out.printlnresult 四、生成异常对象1、三种方式 由
Java 虚拟机生成 由
Java 类库中的某些类生成 在程序中生成自己的异常对象,也即是异常可以不是出错产生,而是人为地抛出注意:生成异常对象都是通过 throw 语句实现,生成的异常对象必须是 Throwable 或其子类的实例例题 3-18:class ThrowTest public static void mainString args .
上一篇:
Java完全参考手册(第8版)
下一篇:
浅析民营经济流动资产管理