Java程序设计(第2版)_第1页
Java程序设计(第2版)_第2页
Java程序设计(第2版)_第3页
Java程序设计(第2版)_第4页
Java程序设计(第2版)_第5页
已阅读5页,还剩166页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java程序设计第一部分:Java语言的类Java类的结构数据类型权限修饰static、final操作符流程控制章节目录第一章Java语言概述第二章Java类的组成第三章访问权限修饰符第四章数据类型第五章高级类特性第六章操作符、流程控制章节目录第一章Java语言概述第二章Java类的组成第三章访问权限修饰符第四章数据类型第五章高级类特性第六章操作符、流程控制了解Java语言特点了解面向对象基本概念编写运行第一个Java类Java语言的特点可移植性面向对象的语言自动垃圾回收鲁棒性简单性面向对象的基本概念对象对象就是属性加行为类类是对象的蓝图引用引用被称为对象的“虚地址”安装环境JDK的安装设置环境变量开发环境的安装Editplus第一个Java类编写第一个Java类使用javacFirst.java编译使用javaFirst运行classFirst{ publicstaticvoidmain(String[]args) { System.out.println("HellofromETC!"); }}章节目录第一章Java语言概述第二章Java类的组成第三章访问权限修饰符第四章数据类型第五章高级类特性第六章操作符、流程控制Java类的基本结构属性方法构造方法块内部类类Java类的声明形式【访问权限修饰符】【修饰符】class类名{类体}Java类的组成---属性Java类中的属性声明形式【访问权限修饰符】【修饰符】数据类型属性名【=初值】;属性即对象的数据Java类的组成---方法Java类中的方法声明形式【访问权限修饰符】【修饰符】返回值数据类型方法名(形式参数列表){方法体}方法即对象的行为方法重载方法重载的定义在Java语言的类中,如果有多个同名但是不同参的方法,称为“方法重载(overload)”方法重载能增强程序可读性Java类的组成---构造方法构造方法用来对类进行实例化构造方法的形式【访问权限修饰符】类名

(形式参数列表){方法体}构造方法的特征名字与类名相同没有返回值类型Java类的组成---块实例块静态块{ 块体}static{ 块体;}Java类的组成---内部类内部类是在类体中声明的类public

classOuter{

private

int

size;

classInner{

public

voidprint(){ System.out.println(size); } }}章节目录第一章Java语言概述第二章Java类的组成第三章访问权限修饰符第四章数据类型第五章高级类特性第六章操作符、流程控制public权限默认权限protected权限private权限包(package)包的概念物理上是文件夹逻辑上是有关系的类的集合包的作用区别同名类控制访问权限访问权限修饰符public权限protected权限同包权限(default)private权限封装性封装性是一种信息隐藏技术封装性含义对象将属性和方法结合在一起隐藏对象内部结构具体表现数据使用private权限方法使用public权限章节目录第一章Java语言概述第二章Java类的组成第三章访问权限修饰符第四章数据类型第五章高级类特性第六章操作符、流程控制Java语言中数据类型概念基本数据类型引用类型基本数据类型共有4类8种基本数据类型整型:byte/short/int/long浮点型:float/double字符型:char逻辑型:boolean引用类型基本数据类型之外的都是引用类型对象都是引用类型引用类型使用new调用构造方法进行赋值字符串类型字符串String是引用类型String对象可以使用new创建String也可以直接使用=赋值使用new和使用=创建本质是不同的包装器类型Java语言中有8种包装器类型,与基本数据类型对应Byte/Short/Integer/Long/Float/Double/Character/BooleanJDK5以后版本实现了自动装箱、拆箱,即包装器类型与基本数据类型之间可以直接赋值、运算等值传递值传递的本质是赋值基本数据类型传递的是值的复制,即value引用类型传递的是虚地址,即reference章节目录第一章Java语言概述第二章Java类的组成第三章访问权限修饰符第四章数据类型第五章高级类特性第六章操作符、流程控制static修饰符final修饰符static修饰符static可以修饰属性static属性是类的所有对象共享的属性,只初始化一次static可以修饰方法static方法不需要与特定对象绑定static成员既可以使用对象调用,也可以直接使用类名调用final修饰符final修饰符可以修饰变量,使之成为常量编译期常量运行期常量变量的总结可以从以下几个方面总结变量作用域生命周期初始化访问权限staticfinal章节目录第一章Java语言概述第二章Java类的组成第三章访问权限修饰符第四章数据类型第五章高级类特性第六章操作符、流程控制常用操作符流程控制操作符从功能角度可以将操作符分为4类算术操作符位操作符比较操作符逻辑操作符流程控制顺序分支if/elseswitch/case循环forwhiledo/whilebreak/continuebreak跳出循环continue继续循环可以为循环设置标号,使用break/continue控制循环break、return、System.exit(0)break只能在循环或者switch中使用return可以在方法中任何位置使用,该方法返回System.exit(0)可以在方法任何位置使用,虚拟机强制退出Java编程语言第二部分:Java类的关系关联关系依赖关系继承关系实现关系(接口)章节目录第八章关联关系第九章依赖关系第十章继承关系第十一章实现关系章节目录第八章关联关系第九章依赖关系第十章继承关系第十一章实现关系关联关系的含义关联方向关联的多重性数组关联关系的表示关联是一种“有”的关系A类关联B类,即A“hasa”B,B作为A的属性存在packagecom.etc.chapter08;public

classA{

privateBb;}classB{}关联关系的方向单向关联:A关联B双向关联:A关联B,同时B关联Apackagecom.etc.chapter08;public

classA{

privateBb;}classB{}packagecom.etc.chapter08;public

classA{

privateBb;}classB{

privateAa;}关联关系的多重性一对一关联一对多关联解决一对多关联关系的方案数组集合数组基本概念数组是类型相同的元素集合数组是引用类型,可以包含基本数据类型,也可以包含引用类型数组的声明intj[];Employee[]emp1;数组的创建及其长度声明数组后,必须进行创建方能使用创建数组时,必须指明数组的长度int[]i;i=newint[3];Employee[]emp1;emp1=newEmployee[2];使用数组的属性length可以返回数组长度数组元素的访问可以使用索引访问数组元素索引从0开始可以使用for循环遍历数组可以使用增强for循环遍历数组for(Employeee:emp1){ System.out.println("="+e.getName()); }数组的赋值数组赋值可以有3种方式声明的同时,使用new创建,初始化为默认值声明同时,直接使用{}赋值使用new{}赋值eAarray=newEmployee[]{newEmployee("Grace"),newEmployee("Alice")};多维数组多维数组是数组的数组二维数组的创建过程数组的拷贝System类提供了一个静态的数组拷贝方法publicstaticvoidarraycopy(Object

src,

int

srcPos,Object

dest,int

destPos,int

length)Arrays类Arrays类是数组的工具类,提供了大量静态方法二分查找填充排序章节目录第八章关联关系第九章依赖关系第十章继承关系第十一章实现关系依赖关系的含义依赖与关联的区别依赖关系的表示A类依赖B类,表示A类中某个方法的参数是B类的对象packagecom.etc.chapter09;public

classA{

public

voidf(Bb){ }}classB{}依赖vs关联关联是“HAS”关系,依赖是“USE”关系关联关系与依赖关系的生命周期不同关联是面向对象程序设计中一种常用的“复用”策略章节目录第八章关联关系第九章依赖关系第十章继承关系第十一章实现关系继承的含义方法覆盖多态性抽象类、抽象方法Object类this、super关键字继承关系如果B类是在A类的基础上衍生出来的,则可以让B类继承A类使用extends关键字表示继承packagecom.etc.chapter10;public

classShape{

public

voiddraw(){}}classCircleextendsShape{

public

doublegetDiameter(){

return0.0; }}继承中构造方法的调用子类构造方法总是先调用父类构造方法默认情况下,调用父类无参构造方法可以在子类构造方法的第一行,使用super关键字调用父类任意一个构造方法方法覆盖子类可以重写父类中某一个方法,称为方法覆盖(override)方法覆盖的原则同名同参同返回值访问权限不能缩小抽象类不能实例化的类是抽象类使用abstract关键字声明抽象类public

abstract

classEmployee{

privateStringname;

private

double

salary;抽象方法没有方法体的方法为抽象方法使用abstract修饰符声明抽象方法抽象类里不一定有抽象方法,有抽象方法的类一定是抽象类public

abstract

voidsetSalary(charlevel);多态性多态性指声明形式一致,而实现方式却不同的特征多态性的体现重载覆盖多态参数编译期类型运行期类型this和super关键字this关键字调用本类的属性和方法调用本类构造方法super关键字调用父类属性和方法调用父类构造方法继承中的finalfinal类不能被继承final方法不能被覆盖修饰符总结static属性、方法、块final属性、方法、类abstract方法、类关联vs继承关联和继承是面向对象中两种复用策略关联是“HasA”关系继承是“IsA”关系Object类Object类是所有类的父类数组也是Object类的子类掌握Object常用方法toString方法equals方法equals与==有所区别章节目录第八章关联关系第九章依赖关系第十章继承关系第十一章实现关系接口的含义接口的作用Comparable接口接口定义接口是一种特殊的抽象类接口中没有变量接口中所有方法都是抽象方法packagecom.etc.chapter11;public

interfaceFlyer{

public

static

final

int

TYPE=1;

public

abstract

voidfly();

public

abstract

voidland();

public

abstract

voidtakeoff();}类与接口的关系类可以实现接口一个类最多继承一个父类,却可以同时实现多个接口类实现接口后,必须覆盖其中所有抽象方法,否则该类为抽象类接口的作用接口把Java抽象概念进一步发挥接口能够实现多重继承接口能够实现多态性接口的语法细节接口的访问权限只能是public接口体只能声明静态常量以及抽象方法接口中的方法必须全部是抽象方法类可以同时实现多个接口接口可以继承其他接口,而且一个接口可以同时继承多个接口Comparable接口Comparable接口定义了compareTo方法API中很多类实现了Comparable接口,定义比较算法结合Arrays.sort方法理解Comparable接口的使用,理解接口的作用Java编程语言第三部分:异常处理异常的类型如何处理异常自定义异常章节目录第十三章异常处理什么是异常异常是不正常的事件,而不是错误异常指程序运行的过程中,发生了某些意外的事情,如除0、文件不存在等Java标准异常运行期异常:程序运行期抛出的异常数学异常空指针异常数组索引越界异常…检测异常:除运行期异常外的异常都是检测异常如何处理异常try包含不安全代码catch捕获异常finally包含必须处理的逻辑抛出异常使用throw抛出异常thrownew异常类构造方法;thrownewException();为何要抛出异常利用抛出异常来标记不正常事件流,从而可以对该事件统一处理publicvoiddeposit(doublevalue){if(value>balance){ thrownewException();//有编译错误!!!

}else{

balance-=value;

} }}如何处理抛出的异常将thrownewException()代码封装到try块中使用throws声明异常public

voiddeposit(doublevalue)throwsException{

if(value>balance){

throw

newException(); }else{

balance-=value; }}自定义异常类使用throw抛出的异常类应该是自定义异常类自定义异常类只要继承Exception或者其任意子类即可public

classBalanceExceptionextendsException{

publicBalanceException(){

super(); //TODOAuto-generatedconstructorstub }

publicBalanceException(Stringmessage){

super(message); //TODOAuto-generatedconstructorstub}}throw与throws总结throw在方法体内使用throws在方法声明处使用throw异常后必须进行处理任何方法都可以使用throws方法覆盖时,子类方法不能抛出比父类更多的异常try/finallytry后可以没有catch,只有finally发生异常后不会被捕获,finally语句将强制被执行往往配合throws一起使用再次抛出异常异常只能被捕获一次捕获异常后,可以在catch中再次将其抛出try{

throw

newBalanceException();}catch(BalanceExceptione){System.out.println("在异常最初发生处,进行核心处理...");

Java程序设计第四部分:核心APIJava中的集合类IO处理图形用户界面多线程编程Java网络编程章节目录第十五章Java的集合第十六章输入输出(I/o)系统第十七章GUI编程第十八章多线程编程第十九章Java网络编程章节目录第十五章Java的集合第十六章输入输出(I/o)系统第十七章GUI编程第十八章多线程编程第十九章Java网络编程CollectionListSetMap泛型快速入门泛型的本质是参数化类型一个简单的泛型类packagecom.etc.chapter14;public

classGen<E>{

privateEattr;

publicGen(){

}

publicEgetAttr(){

return

attr; }

public

voidsetAttr(Eattr){

this.attr=attr; }……Java集合框架三个顶级接口Collection所有集合类的根接口Map映射接口,存放键值对Iterator遍历集合的迭代接口Iterator接口hasNext方法判断被迭代的集合中是否存在元素next方法返回集合中的下一个元素Collection的三个子接口List有序集合Set无重复元素的集合Queue先进先出的队列List的实现类ArrayList数组列表,数据采用数组方式存储实际中使用最多的类型LinkedList链表VectorJDK1.0中的集合类实现了“同步”Set的实现类HashSetSet接口的一个主要实现类底层是哈希表结构TreeSet不仅保证元素不重复,还能对元素进行排序Map的实现类HashMap较常用的Map实现类根据key值的hashCode和equals方法保证元素唯一性TreeMap不仅保证key不重复,还能对key进行排序HashtableJDK1.0中定义的类,实现同步对象Properties是Hashtable子类,常用来处理属性文件Collections类是集合类的工具类定义了大量静态方法同步集合对象的方法对List排序的方法集合与数组之间的转换Collection接口中定义了集合转换为数组的方法<T>T[]toArray(T[]

a)Department[]a=newDepartment[0];Department[]depts=deptList.toArray(a);章节目录第十五章Java的集合第十六章输入输出(I/o)系统第十七章GUI编程第十八章多线程编程第十九章Java网络编程File类IO类的分类使用IO类进行编程File类File类是java.io包很重要一个类File类封装文件以及目录File类中提供了大量操作文件以及目录的方法文件过滤器java.io包中提供了文件过滤器,用来将某目录下的文件根据一定的规则进行过滤FilenameFilter:根据文件名字过滤FileFilter:根据自定义条件进行过滤IO流的分类输入流和输出流字节流和字符流节点流和过滤流进行IO编程的步骤确定需要进行输入输出操作的数据源选择使用输入流还是输出流选择使用字符流还是字节流选择合适的节点流判断是否需要使用过滤流调用IO流中的方法进行读写操作在finally块中关闭流对象章节目录第十五章Java的集合第十六章输入输出(I/o)系统第十七章GUI编程第十八章多线程编程第十九章Java网络编程Swing组件GUI布局Swing事件处理AWT/Swing/SWTAWTAWT(AbstractWindowsToolkit)是Java语言中最原始的GUI工具包

SwingJavaSwing是JavaFoundationClasses(JFC)的一部分,是在AWT基础上发展而来的SWTSWT是Eclipse组织为了开发EclipseIDE环境所编写的一组底层GUIAPISwing中的组件Swing中的大部分组件类位于javax.swing包中Swing中所有组件都是JComponent的子类Swing中的组件非常丰富,支持很多功能强大的组件,如JTable、JTreeSwing中的布局管理器FlowLayout流布局管理器,从上到下排列BorderLayout边界布局管理器,将容器按方位分为5个区域GridLayout网格布局管理器,将容器分为大小相等的网格CardLayout卡片布局管理器GridBagLayout网袋布局管理器,最灵活最复杂的布局管理器Swing中的事件处理确定事件源确定事件类型确定事件监听器接口覆盖监听器中合适的方法对事件源注册监听器使用内部类处理事件可以使用内部类处理事件publicclassSendHandlerimplementsActionListener{publicvoidactionPerformed(ActionEventarg0){ output.append(input.getText()+"\n"); input.setText(""); } }使用匿名内部类处理事件使用匿名内部类处理事件//匿名内部类ActionListenersendHandler=newActionListener(){publicvoidactionPerformed(ActionEventarg0){ output.append(input.getText()+"\n"); input.setText(""); }};GUI并发任务在GUI中,常常可能处理并发任务需要使用多线程编程实现并发处理多线程编程在后面章节学习章节目录第十五章Java的集合第十六章输入输出(I/o)系统第十七章GUI编程第十八章多线程编程第十九章Java网络编程线程有关的API创建线程线程同步线程通讯Thread类Thread类是线程类,Thread对象是线程对象Thread类在java.lang包中Thread类方法start方法:启动线程run方法:线程运行Runnable接口Runnable是线程API中另外一个重要接口Thread类已经实现了Runnable接口接口中只有一个方法:voidrun()创建线程的两个方法继承Thread类,覆盖其中run方法Thread类的子类对象即线程对象实现Runnable接口,覆盖其中run方法使用构造方法Thread(Runnable)创建线程对象Runnable对象封装了线程运行时的数据和方法线程同步共享对象的多个线程之间需要考虑同步问题使用synchronized关键字可以实现线程同步同步代码块同步方法线程通讯如果某一个线程必须等待另一个线程的某些条件满足才能执行,那么线程之间就需要通讯线程通讯方法wait:等待notify:通知一个等待的线程notifyAll:通知所有等待的线程Thread类的方法Thread类中有很多方法startruncurrentThreadsleepjoinyieldget/setPriority线程死锁多线程应用,往往会存在死锁问题线程死锁往往是因为多线程共享资源,而共享资源的加锁顺序不当造成DEAMON线程Java语言中的线程有两种守护线程:“在后台执行任务”的线程用户线程:用户线程是在程序中创建的线程章节目录第十五章Java的集合第十六章输入输出(I/o)系统第十七章GUI编程第十八章多线程编程第十九章Java网络编程TCP/IP概述TCP/IP模型有四层结构Socket编程Java使用Socket进行基于TCP协议的数据传输API中提供了Socket和ServerSocket类,分别表示客户端和服务器端一个Socket由一个IP地址和一个端口号唯一确定数据报编程Java使用数据报进行基于UDP协议的数据传输JavaAPI中的包提供了DatagramSocket和DatagramPacket两个类,用来支持数据报通信DatagramSocket用于在程序之间建立传送数据报的通信连接,

DatagramPacket则用来表示一个数据报章节目录第十五章Java的集合第十六章输入输出(I/o)系统第十七章GUI编程第十八章多线程编程第十九章Java网络编程第二十章其他常用API日期Java语言中处理日期的类有以下几个DateCalendarGregorianCalendarDateFormatSimpleDateFormat国际化Java语言进行国际化的步骤准备好不同版本的资源文件,使用统一的basename创建与用户所在环境匹配的Locale对象。获得ResourceBundle对象。使用ResourceBundle对象的getString方法返回资源文件中的内容。如果资源文件中包含占位符,可以使用MessageFormat类的format方法对占位符动态赋值。格式化Format类是格式化API的抽象父类,有三个子类DateFormat:用来对日期进行格式化MessageFormat:用来对消息进行格式化NumberFormat:用来对数字进行格式化大数据类型大数据类型能够封装任何精度的数字主要有两个类BigIntegerBigDecimal反射反射是一种强大的工具,能够用来创建灵活的代码Java语言中与反射有关的主要类有如下几个java.lang.Class类java.lang.reflect.Field类java.lang.reflect.Method类java.lang.reflect.Constructor类Java程序设计第五部分:其他特性泛型枚举其他新特性章节目录第二十二泛型第二十三章枚举第二十四章其他新特性章节目录第二十二章泛型第二十三章枚举第二十四章其他新特性泛型概念简单泛型类型泛型与继承通配符泛型方法泛型基本概念泛型的本质就是参数化类型,是对类型的抽象集合都使用了泛型,对其中的元素类型参数化List<String>list2=newArrayList<String>();list2.add("abc");//list2.add(newInteger(2));//编译错误!!!Stringss=list2.get(0);定义简单泛型类声明类名后使用<E>(E可以是任何其他字母),即可以指定该类是一个泛型类类型参数可以在该类中需要数据类型的地方使用,如属性声明、方法声明等泛型与继承正确代码Strings="hello";Objecto=s;错误代码List<String>ls=newArrayList<String>();List<Object>lo=ls;//编译错误!!!通配符Collection<?>(发音为:"collectionofunknown"),它的元素类型可以匹配任何类型,?号被称为通配符voidprintCollection(Collection<?>c){for(Objecte:c){System.out.println(e);}}泛型方法泛型方法使得该方法能够独立于类而产生变化要定义泛型方法,只需将泛型参数列表置于返回值之前public<E>EgetX(Ex){

returnx; }章节目录第二十二章泛型第二十三章枚举第二十四章其他新特性枚举的作用枚举的创建Enum类遍历枚举为什么使用枚举当应用中需要一些特定的常量值时,就可以使用enum类型可以保证在编译期间检测应用使用的常量值是否合法,避免运行期逻辑错误packagecom.etc.chapter23;public

enumStudentGrade{

A,B,C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论