Java 训练营-new.ppt_第1页
Java 训练营-new.ppt_第2页
Java 训练营-new.ppt_第3页
Java 训练营-new.ppt_第4页
Java 训练营-new.ppt_第5页
已阅读5页,还剩155页未读 继续免费阅读

下载本文档

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

文档简介

Topics,Java简介LinuxJava编程环境配置使用简单Java程序强大高效的EclipseJava基本语法简介面向对象技术,与JavaJava集合框架异常处理技术IO流Java项目实战OOA/D/P与多层架构实践,Java简介,SUNJava的创始者Java简史Java的版本,Java开发平台Java的特点如何学习Java,SUN-Java的创始者,1982年,SunMicrosystems公司诞生于美国斯坦福大学校园。Sun公司1986年上市,在NASDAQ的标识为SUNWSun公司是世界上最大的UNIX系统供应商TheNetworkistheComputer产品有工作站、服务器和存储器等硬件系统SunONE品牌软件Solaris操作环境Java系列开发工具,Java简史,1991GreenProject跨平台手持设备软件1992Oak开发完成取名Oak,因为公司门前的橡树因为不能取得商业使用,发展被搁置1995Java推向浏览器市场Web技术大规模流行Java开发者为Web页面提供了动态内容(Applet)1996Java1.0诞生没用采用Oak,因为名称已经使用Java命名是源自开发者手上的一杯HotJava(咖啡),Java的版本,Java1.0,Java1.1,Java1.2,Java1.3,Java1.4,Java1.5,Java1,Java2,1996,1998,1995,2000,2005,Java5,Now!,Java6,Java1.5,Java开发平台,JavaSE(JavaStandardEdition),JavaEE(JavaEnterpriseEdition),JavaME(JavaMicroEdition),标准版适合开发客户端程序,企业版适合开发服务器程序,手持设备版适合手机程序开发,Java的特点,简单面向对象分布式健壮安全中性架构跨平台超强的可移植性高性能多线程,Java的特点,如何学习Java,练习作练习,作业思考根据练习中的结果总结学习分享同学之间分享学习成果,交流与老师互动,提问,交流感悟总结总结学习成果重做温故而知新,体验式培训用你的努力,抓住工作机会,LinuxJava编程环境配置使用,LinuxOS与GNU简史Linux文件系统简介关于文件路径Linux系统常用概念Linux与Windows系统常用命令JDK与JRELinux下JDK的安装Linux下JDK的配置Windows下JDK环境配置Java环境变量详解Linux初始化文件与vi的简单使用,LinuxOS,1991年8月由LinusTorvalds发布了V0.01Linux-Torvalds在芬兰赫尔辛基大学的论坛上1994年3月14日发布了1.0版GNU就是GNUsNotUnixGNU的创始人StallmanStallman来自MITLinux加入GUN,采用GPL许可协议Redhat,SUSE等是Linux的发布厂商,LinuxFileSystem,FilePath,文件路径从根开始“/”如图:/home/rosalyn/Familyphotos/photo1.png工作目录:Linux命令行当前目录位置pwd命令可以显示工作目录从”/”开始的路径叫绝对路径不是从”/”开始的路径叫相对路径相对路径,相对于工作目录如:工作目录是/home/rosalyn那么上面照片的相对路径:Familyphotos/photo1.png,Linux常用概念,工作目录:Linux控制台当前的目录位置.(点):代表当前工作目录.(点点):代表当前工作目录的父目录用户主目录:使用符号“”当前用户的私人目录,一般在/home下,与登录名同名,登录人拥有个人目录的全部访问权限相当于winXP:C:DocumentsandSettingsRobinroot用户(根用户):Linux的系统管理员,拥有最高授权,意外操作会带来风险,一般不使用,相当于winXP的Administrator挂载点:Linux中设备是被挂载到目录下,如:cdrom挂载点/mnt/cdromLinux是大小写敏感的.,Linux与Windows常用命令,Linux命令pwd:显示工作目录ls:显示当前目录的内容ls-al显示全部,包括隐藏ls-l显示长格式简写llcdpath改变工作目录mkdirpath创建目录catfilename显示文本文件内容cd或cd返回用户主目录clear清屏cpfile1file2复制文件mancommand查看手册mvfromto移动或改名,Windows命令cd显示当前目录dir:列目录内容dir-acdpathmkdirpaht创建目录typefilename显示文本文件内容无cls清屏copyfile1file2复制文件helpcommand查询命令帮助movefromto移动或改名,JDK与JRE,JDKJavaDevelopmentKit(Java开发工具包)JREJavaRuntimeEnvironment(Java运行环境)JVMJavaVirtualMachines(Java虚拟机)JavaSEAPI-JavaStandardEditionApplicationProgrammingInterface(Java标准版编程接口)是Java的系统标准类库DevelopmentTools开发工具开发需要JDK,Linux下JDK的安装,下载JDKjdk-1_5_0_12-linux-i586.bin,自释放文件安装jdk,执行释放文件chmod+xjdk-1_5_0_12-linux-i586.bin./jdk-1_5_0_12-linux-i586.binWindows下的安装很简单就是一个安装程序建议把Windows下的JDK安装到系统的根目录下如:C:jdk1.5.0_12,Linux环境Java配置,配置环境变量,假设JDK释放到目录/opt/jdk1.5.0_06JAVA_HOME=/opt/jdk1.5.0_06PATH=$PATH:/opt/jdk1.5.0_06/binCLASSPATH=/opt/jdk1.5.0_06/lib/tools.jar:.exportJAVA_HOMEPATHCLASSPATH一种简洁的配置:JAVA_HOME=/opt/jdk1.5.0_06PATH=$PATH:$JAVA_HOME/binCLASSPATH=$JAVA_HOME/lib/tools.jar:.exportJAVA_HOMEPATHCLASSPATH检查java的配置java-version,WindowsXP环境Java配置,配置环境变量,假设JDK释放到目录C:jdk1.5.0_06setJAVA_HOME=C:jdk1.5.0_06setPATH=%PATH%;C:jdk1.5.0_06binsetCLASSPATH=C:jdk1.5.0_06libtools.jar;.可以使用图形界面设置控制面板-系统-高级-环境变量检查java的配置javaversionjavac,WindowsXP环境Java配置,Java环境变量详解,JAVA_HOMEJava的主目录,就是Java的安装目录,用来识别Java安装位置PATH操作系统执行命令的搜索路径Windows和Linux都有当OS执行命令时候,会在PATH指定的路径中搜索注意:WindowsXP使用”;”分隔路径,Linux使用”:”分隔路径要保留系统原始的PATH,不然会造成OS的混乱,甚至不能引导CLASSPATHjava的类的搜索路径,类就是java的可执行文件,JVM利用CLASSPATH搜索用到的类,类似于PATH,Linux的初始化文件,初始化文件包含命令和变量的设置在启动的时候被执行。两个层次:系统级包含在/etc目录下用户级包含在用户主目录下Linux的用户级初始化文件在用户主目录下.bash_profile以点开头的文件是隐藏文件,可以使用lsal查看可以使用cat.bash_profile查看内容练习:查看用户初始化文件,利用初始化文件配置Java,修改用户主目录下的初始化文件.bash_profile在最后填写:JAVA_HOME=/opt/jdk1.5.0_06PATH=$PATH:/opt/jdk1.5.0_06/binCLASSPATH=/opt/jdk1.5.0_06/lib/tools.jar:.exportJAVA_HOMEPATHCLASSPATH注意:大小写使用vi编辑器cdvi.bash_profile,vi的使用,vi是visualedit的缩写进入vi,编辑或者创建文件vifilenamevi提供两种操作模式:输入模式(insertmode)命令模式(commandmode)当使用者进入vi后,既处于命令模式下,此刻键入任何字元皆被视为命令。,vi的使用,vi常用命令,进入插入模式,进行全屏可视编辑,命令:i(insert),a(append),o(open)推出插入模式,返回命令模式,使用esc键在linux中的插入模式可以使用光标键命令模式常用命令:wfilename保存文件:w!强制保存:q退出:q!强制退出,不保存:wq保存退去任何时候回到命令模式可以多次esc其他命令参考相关帮助,使用vi编辑.bash_profile,vi.bash_profile使用i进入插入模式在最后填写:JAVA_HOME=/opt/jdk1.5.0_06PATH=$PATH:$JAVA_HOME/binCLASSPATH=$JAVA_HOME/lib/tools.jar:.exportJAVA_HOMEPATHCLASSPATH使用esc回到命令模式使用:wq保存退出,验证.bash_profile,使用su命令切换用户,在新的shell中执行初始化文件su-username其中“-”表示执行用户的初始化文件username是切换的用户名注意:这个命令需要输入密码,这个输入过程是不回显的,盲打!切换以后使用java-version验证java安装情况如果有问题,使用exit退掉当前shell重新修改初始化文件可以使用echo命令检查环境变量的内容echo$JAVA_HOME不要冒然重新启动系统来检验初始化文件,总结,JDK的安装过程是先安装JDK然后配置环境变量JAVA_HOMEPATHCLASSPATH,开发一个Java程序,Java软件开发过程第一个Java代码关于命令行参数,Java软件开发过程,以一个简单的Java程序为例编写源文件,使用文本编辑器First.java的源文件编译源文件,使用javac命令javacFirst.java产生First.class,是javaVM可以执行的字节码.运行java类javaFirst执行字节码文件,Java软件开发过程,第一个Java代码,使用vi编辑Java源代码:viFirst.java编译First.java:javacFirst.java运行Java字节码:javaFirstmain方法是程序运行的入口点,其中方法参数Stringargs是命令行参数,第一个Java代码,练习,编写一个程序,在控制台输出个人信息姓名年龄省份学校专业,关于命令行参数,运行命令行程序时候,在命令后面的文本叫命令行参数如:java类名参数1参数2利用命令行参数可以实现向应用程序传递数据的目的Java利用一个String(字符串)数组,接收命令行参数这个数组是main方法的参数,关于命令行参数,练习,利用命令行传递人名XXX,在控制台上输出“你好XXX”,强大高效的Eclipse,Eclipse简介Eclipse下载与安装Eclipse开发组织结构用Eclipse开发一个Java应用,Eclipse简介,Eclipse是开放源代码的开发平台基于Java的可扩展架构前世是商业软件VisualAgeforJavaIBM公司开发,2001年开源Eclipse基金会(EclipseFoundation)管理Eclipse可以作JavaIDE使用,是主流的开发环境但Eclipse的目标不仅限于此支持诸如PHP,C/C+、COBOL和Eiffel,等等.丰富的插件支持,可以进行任何的开发据传说:SUN公司对Eclipse的名字很有意见,Eclipse的下载安装,/downloads/下载对应OS平台的EclipseEclispe使用了SWT技术开发,不是一种绝对的跨平台技术可以下载JavaEE版本的Eclipse,这个版本的Eclipse包含的插件比较丰富.方便常见应用的开发安装Eclispe非常简单1安装JDK,并且配置好环境变量2释放Eclipse压缩包到硬盘如:unzipeclipse-jee-europa-fall2-linux-gtk.tar.gz3执行eclipse目录下的可执行文件WindowsXP:eclipse.exeLinux:./eclispe,用Eclipse开发HelloWorld,Eclispeworkspace(工作空间)工作空间是Eclipse保存软件项目的地方需要有读写授权Linux中一般放置在用户主目录下如:/home/temp01/workspaceEclispe中的Java程序是基于Project(项目)管理的常见的IDE都是基于项目管理应用的开发首先是创建一个JavaProject建议ProjectLayout选择然后在项目中创建一个类这里一个类对应一个Java源文件添加类的内容编译与运行类Eclipse是自动编译的,在保存文件时候自动进行使用菜单运行程序:Run-RunAs-RunAsApplication注意:要选定当前程序,程序包含main方法,Eclipse开发组织结构,选择Workpace,创建一个JavaProject,项目中创建一个类,RunJavaApplication,练习,使用Eclipse实现输出个人信息,Java基本语法简介,注释,Eclipse对注释的支持包(package)与Java源代码Java标识符(Identifiers)标识符命名规则Java关键字Java编码规范(Conventions)Java基本数据类型字符串String常用运算符简介数据类型转换程序流程控制,注释,注释被Java编译器忽略的部分用于对代码进行标注,生成文档用于临时取消部分代码断注释语法,有三种:单行注释:/这是注释由/引导到当前行尾结束多行注释:/*多行注释*/由/*开始,到*/结束可以注释多行信息文档注释:/*这是文档注释*/由/*开头,*/结束注释多行,用于生成文档,放在被注释的对象之前,注释实例,Eclipse对注释的支持,Eclipse考虑到程序员的习惯,提供了强大是注释支持单行注释:热键:添加或者取消注释:Ctrl+/多行注释:热键:添加注释:Ctrl+Shift+/自动化:键入/*然后回车,自动提供结束*/文档注释:自动化:键入/*然后回车,自动提供结束*/Doclet:在注释中键入,自动提示Doclet文档注释可以生成javadoc文档,package,包,是Java中用于对于资源进行分类的如:相关的类放在同一个包下,系统包:java.io,java.swing类似于OS文件系统中,文件夹是对文件分类的在当前类中使用其他包中的资源,需要导入进来importjava.util.*;importjava.util.Random;在java源文件中默认导入java.lang.*;import语句在package以后,Java标识符(Identifiers),什么是标示符?在java语言中用来给一个类、变量或方法命名的符号标识Java标识符规则:以字母(unicode)、“$”、“_”、为开头,不能以数字开头第二个字符开始是字母(unicode),数字,“$”,“_”不限制长度不能是Java的关键字大小写是敏感的字母(unicode),可以是中文,例如:identifier_sys_var1$charuserNameuser_name美女,Java关键字,Java编码规范(Conventions),Java编码规范:是常用代码习惯,不是语法要求,但是需要严格遵守只使用英文命名,建议使用长变量名,要有实际意义包名:全部使用小写字母net.robin.web类名,接口名:第一个字母大写,以后每个单词首字母大写User,AccountService,ServiceFactoryDaoImpl变量名,方法名:第一个字母小写,以后每个单词首字母大写Stringname,intage,publicvoidremoveUser();常量:全部使用大写字母,单词之间使用“_”分隔staticfinalPI=3.1415926535897;,Java基本数据类型,Java是强类型语言,任何数据都是有类型的.计算机中一切都是数据.boolean布尔类型char字符类型byte字节整数类型,8位有符号整数short短整数类型,16位有符号整数int整数类型,32位有符号整数long整数类型,64位有符号整数float浮点类型,32位有符号浮点数double浮点类型,64位有符号浮点数,boolean类型与变量声明,用于标识真假状态的数据类型如:声明变量booleanisChild;布尔常量:true,false,这两个单词不是关键字!使用数据类型声明变量.变量的第一次赋值叫,变量的初始化可以在声明变量同时初始化.,字符类型char,用来标识单个文本字符是一个16位无符号整数,值是这个字符的unicode编码可以参与整数运算关于unicode计算机不认识文字文字在计算机内部就是一个编码A的编码0000000001000001,16进制0 x0041,10进制65中的编码0100111000101101,16进制0 x4e2d,10进制20013Unicode(统一编码集)是计算机工业界普遍采用的文字编码16位编码,可以编址65535个文字,包括2万多汉字编码几乎统一编码全球所有国家文字,如:中,日,韩,英,阿拉伯Unicode低255个编码与ASCII相同Java采用Unicode编码,支持国际化(i18n),有趣的字符类型,字符是整数,值是unicode编码值用单引号说明字符常量,如:A,中下面的表达式,很有趣A+1结果是66,是B的编码50结果是整数5,也就是把字符5转换成整数5产生AZ随机字符:Randomrandom=newRandom();charc=(char)(A+random.nextInt(26);其中Random来自java.util包可以使用整数常量初始化char类型变量charc=20013或者charc=0 x4e2d字符的转义字符:t,c,n,转义字符,转义字符描述的不是字面意义用来描述特殊字符,如特殊控制字符,字符编码等具体转义字符:dddddd是1到3位8进制数表示的字符编码uxxxxxxxx1到4位16进制数表示的字符编码单引号字符”双引号字符反斜杠字符r回车n换行f走纸换页t横向跳格b退格例如:charc=u4e2d,整数,Java中的整数包括:byte,short,int,longbyte8bit,short16bit,int32bit,long64bitJava中的整数都是有符号整数,最高位是符号位采用补码存储直接给出的整数常量是int类型可以使用整数直接初始化byte,short,但是不要超过范围如:byteb=20;shorts=300;以L或l结尾的整数常量是long类型如:longl=200000000000L以0开头的整数常量是八进制常量如:inta=0101;以0 x开头的常量是十六进制常量如:inta=0 x41;long在Java中可以用来表示时间.,整数的存储,补码形式存储最高位是符号位byte8bit,short16bit,int32bit,long64bit,浮点数,Java中浮点数(小数),有float32bit,double64bit利用指数浮动小数点,可以灵活地表达更大范围的实数,就是科学计数法如123.45表达为1.2345102,其中1.2345为尾数,10为基数,2为指数。浮点数尾数有限,不能精确表达实数如:34.6f-34.0f=0.5999985,因为34.6不能精确表达double的精度好于float,doube常量可以以D/d为后缀(可省),float后缀是F/f,浮点数,数据的范围,练习,判断下列语句中的a和b的值是否相等:(1)inta=0;intb=0;(2)inta=0;charb=u0000;(3)inta=123;charb=u007B;(4)inta=0 x123;charb=123;(5)inta=3+5;charb=8;(6)inta=3+5;charb=8;(7)chara=u0000;charb=0;,Java中的String,Java中String是类,不是基本数据类型类可以声明变量,变量是引用类型,可以赋值null引用类型变量的值是一个地址值,是被引用对象的内存地址,引用变量标识了一个对象,相当于生活中的”代词”,Java中的String,Java中的String,Java的运算符,数学运算,Java的运算结果是封闭的同种数据类型参与运算运算结果也是相同数据类型数学运算:+-*/注意:整数除法是整除,3/2=1结果会溢出,保持封闭性,1024*1024*1024*2取模运算:%3%2=1,0%2=0,-1%2=-1单目数学运算+-b=a+,后+,先把a的值作为表达式的值,然后加1b=+a,先+,先把a加1,然后把a的值作为表达式的值避免使用如下表达式:b=1+-a*8*a-+1或a=a+,比较运算,比较运算包括:=,!=,=Java中,通过=或!=来比较数据是否相等包括基本类型和引用类型基本类型比较的是值引用类型比较引用的地址值,没有比较内容如果要比较引用对象的内容,Java建议使用对象的equals()方法如:Stringstr1=newString(“abc”);Stringstr2=newString(“abc”);System.out.println(str1=str2);注意:String相同内容常量是相同的静态常量!关系运算的结果返回true或false浮点数字不精确不建议使用,=,!=,布尔运算,布尔运算:大类型-小类型需要强制转换可能损失数据,或精度使用运算符:(数据类型)如:byteb=(byte)129;charc=(char)(A+2);,引用数据类型转换,子类型到父类型:自动转换简单理解:小类型-大类型如:Objecto=“abc”父类型到子类型:强制类型转换简单理解:大类型-小类型如:Objecto=“abc”;Strings=(String)o;可能不会成功,出现异常:java.lang.ClassCastException如:Objecto=newDate();Strings=(String)o;Object是任何类型的父类型,流程控制语句,分支语句:ifelse,switchcase循环语句:for,while,dowhile循环跳转语句:break,continue,Ifelse,Ifelse嵌套,switchcase多路分支,for循环语句,整数String到整数,while循环,dowhile循环,breakcontinue,练习,1,给定3个数a,b和c,输出最大的数。2,某电信公司的市内通话费计算标准如下:三分钟内0.2元,三分钟后每增加一分钟增加0.1元,不足一分钟的按一分钟计算。要求编写程序,给定一个通话时间(单位:秒),计算出应收费金额。3,某市的出租车计费标准为:3公里以内10元,3公里以后每加0.5公里加收1元;每等待2.5分钟加收1元;超过15公里的加收原价的50%为空驶费。要求编写程序,对于任意给定的里程数(单位:公里)和等待时间(单位:秒)计算出应付车费,车费直接截去小数位,只取整数。,目标,什么是面向对象Java中的类与对象构造器方法参数的传递this关键字,super关键字继承,封装,重载,覆盖访问修饰符final,static关键字,什么是面向对象,以自然本身的方法考虑问题.一切都是对象面向对象的系统分析(OOA/D),一种对事务模型模拟分析方法。面向对象的程序设计(OOP),一种设计程序的思想。面向对象概念:对象,对象状态和行为,类,封装,继承,多态,方法,关联,依赖面向对象思想和概念,就是对自然现象的抽象和模仿,一切都是对象,业务原型-校园管理系统学生报到:教务处,登记学籍,发放一卡通借阅图书:图书馆,出示一卡通,借阅图书,登记借阅记录,面向对象模型信息管理系统类:学生,教务处,学籍,一卡通,图书,图书馆,借阅记录对象:一个学生,学生的学籍,学校教务处,一个学生的一卡通方法:报到:创建一个学生对象,创建学生的学籍对象,创建学生的一卡通对象借阅:利用一卡通对象找到学生对象,创建借阅记录对象,Java类的语法,对象,对象(Object),也叫类的实例(Instance)使用运算符new创建类的实例对象,返回对象的引用Studentmo=newStudent(“莫小贝”,12);一般计算机中的一个对象,对应业务模型中的一个具体事物,对象创建过程,如果类不在内存中,加载类用类分配内存,自动默认初始化实例变量调用成员变量初始化调用构造器(构造方法),对象创建过程,构造器(构造方法),与类名相同描述对象的创建过程不能声明返回值使用new运算调用,默认构造器,每个类都有构造方法。如果类没有定义构造方法,Java将自动添加默认构造方法。默认构造方法是公有空实现的如果定义了构造方法,就不再提供默认构造器了.如:publicStudent(),方法参数传递,Java中方法参数只有一种传递方式:基于值的传递值的传递就是值的复制.基本类型复制是变量值引用类型复制的是地址值,this关键字,代表当前对象本身,是当前对象的引用就像交谈对话中:代词”我”代表说话人本身两种用法引用当前对象的成员:属性或方法经常用来区分实例变量和局部变量如:publicStudent(Stringname,intage)=name;this.age=age;引用当前类的其他构造器必须在构造器的第一行调用用来实现构造器重用如:publicStudent(Stringname)this(name,21);,封装,也是自然现象的模拟或抽象隐藏细节状态数据使用访问控制实现:private,protected隐藏规程实现细节提供访问方法,业务方法提供简洁的对象外观封装相关的状态和行为如:图书馆对象封装了藏书状态和借阅方法游戏人物封装了角色状态和打斗方法,方法重载(Overload),方法名相同参数一定不同类型不同顺序不同和参数名无关返回值可以相同也可以不同访问控制可以改变一般用来表示具有相同功能的行为如:点燃鞭炮,可以利用打火机,或者香烟构造器经常重载重载构造器经常使用this()重用代码,继承,用来描述自然界中类型之间是“isa”的关系如:班长是学生,经理是员工被继承类叫父类,继承类叫子类,子类可以继续继承子类实例也是父类实例父类引用可以引用子类实例,反之需要强制类型转换子类默认继承父类的属性和方法构造器不能被继承子类构造器隐含调用父类缺省构造器,可以显示调用父类构造器,使用super(),必须在第一行,与this()互斥Java是单一继承语言子类只能有一个父类.没有父类,默认继续与java.lang.Object,super关键字,和this类似,有两种用法:在子类中,super用来引用父类实例,访问父类的成员方法或属性如:publicgetName();调用父类构造器super()如:publicStudent()super();,instanceof运算,用来判断对象是否是类的实例如:Objecto=“abc”;booleanb=oinstanceofString;经常用来保护强制类型转换,保证转换的成功如下代码,避免了java.lang.ClassCastException:Objecto=newStudent();if(oinstanceofString)Stringstr=(String)o;System.out.println(str);,方法的覆盖(Overrid),方法覆盖一定是在子类中声明方法名相同,参数类型相同,返回值也相同访问权限不能更封闭抛出异常类型不能更宽泛目的一般是用于修改父类的行为,访问权限控制,访问权限控制应用,静态(static),静态变量一个类只有一份被类的所有实例共享能在没有生成任何类的实例时就被访问到在某种意义上类似于全局变量直接使用类名来访问如:Integer.MAX_VALUE,Math.PIdoublev=60d/360*2*Math.PI;静态方法可以在没有任何实例时调用不能在static方法内部访问非static成员不能被非static方法覆盖如:Integer.parseInt(Stringstr),Math.sin(doublev),final最终的,抽象的abstract,抽象方法使用abstract修饰,没有方法体定义用来描述抽象的行为如:银行可以贷款抽象类使用abstract修饰的类一般包含抽象方法用来描述抽象概念,经常由于软件设计中的抽象描述如:银行,灯抽象类只能被继承抽象类可以定义引用变量,可以引用子类的实例,接口,接口中所有的方法都是抽象方法,可以省略修饰词:publicabstract相当于一种特殊的抽象类用于描述纯抽象概念,在OOA/D中应用广泛使用interface关键字定义一个类可以实现多个接口接口与接口之间可以多重继承接口中可以声明属性默认都是常量,自动声明为finalstatic是初学者难于掌握的重点,Object类,Object是所有类的父类,是Java的单一继承根类Object中定义了一些方法,都是十分重要的方法,toString(),用于返回对象文本描述默认返回:classNamehashCodeclassName是类的全限定名hashCode是一个整数,是与当前对象内存地址对应的唯一整数一般需要覆盖,覆盖成对象的合理文本描述如:扑克牌红桃8,就返回”红桃8”学生对象,就返回学生姓名.没有固定的覆盖方式,依赖自然习惯而定,equals(),用来比较对象是否相等对象比较不能使用比较运算“=“,“=“只能比较引用变量地址值是否相等.默认的equals()实现就是比较运算符=一般需要覆盖,实现对象内容一致时候返回true实际上常常采用比较对象的OID实现OID(ObjectIdentity)对象识别,是对象唯一识别属性如:学生的学号属性,扑克牌的花色和点数,商品的序号,equals(),hashCode()方法,返回对象唯一的散列码默认值是:对象内存地址对应的唯一整数需要同equals()一同覆盖,需要与equals()方法一致:当两个对象equals()结果是true时候,hashCode()返回一致的整数.当两个对象equals()结果是false时候,hashCode()返回不一致的整数.整数的值无所谓,但是要求对象生存期间不能改变一般利用对象的OID实现,目标,理解集合的概念Java集合框架接口Java集合实现类集合的应用,集合,数学概念-集合:某些指定的对象集在一起就成为一个集合,其中每一个对象叫元素集合是抽象概念,具体集合本身也是对象集合概念:空集,子集,空集合运算:并,交,属于,差软件中的集合概念:一副扑克牌,全体在校学生,订单所有条目客户的所有订单图:定点和边的集合,集合接口-抽象概念描述,Collection接口,描述了一般意义的集合概念没有约束元素是否重复,定义了基本的行为(包括集合运算)是集合的根接口Set接口,继承与Collection描述了数学意义上集合概念元素没有重复,元素无序排列List接口,描述了列表结构概念,元素有先后次序,元素有索引号,索引号从0开始元素允许重复Queue接口,描述了队列概念后进先出Map接口描述了,key-value形式的关键字索引集合.Key是关键字,value是集合元素,Java集合概念,集合的实现,HashSet实现了Set集合,使用了散列表(hash)算法实现,不能保证原始次序,速度快,应用广泛LinkedHashSet,Set集合实现,采用链表和散列表算法共同实现,链表技术保持了元素的添加次序ArrayList和Vector,都是采用数组算法实现的List集合,ArrayList是非线程同步的集合,速度快于Vector,ArrayList是jdk1.2以后提供的新集合.推荐使用LinkedListLinkedList,采用双向循环链表实现的List集合HashMap和Hashtable都是采用hash算法实现的Map集合,其中HashMap是JDK1.2以后提供的非线程安全的实现,速度比Hashtable快.推荐使用HashMap,集合实现,集合的迭代,对集合中所有元素逐一快速遍历的方法,叫集合的迭代迭代器接口(java.util.Iterator)定义了集合迭代方法所有集合都可以返回Iterator接口实例集合遍历必须使用迭代接口实现,集合的应用,目标,异常的概念异常的声明异常的处理java异常分类非检查异常自定义异常,异常,软件过程运行中出现的意外错误,Java提供了一套处理错误机制叫:异常控制异常是方法运行期间出现的,发生异常,叫:异常的抛出在代码出现意外时候可以使用throw抛出异常实例在方法上定义可能抛出的异常,叫:异常的声明在方法上使用throws声明异常使用java语法处理方法抛出的异常,叫:异常的捕获使用trycatchfinally捕获处理异常,异常实例,trycatchfinally,异常分类,自定义异常,常见非检查异常,java.lang.ClassCastException类型转换时候发生java.lang.NullPointerException对null引用调用了属性或方法java.lang.ArrayIndexoutofBoundsException数组越界java.lang.SecurityException安全异常,没有授权的访问,目标,理解流的编程模型理解字节流和字符流理解流的过滤操纵输入与输出操纵系统控制台,什么是”流”,流是一种数据处理方式,每次处理数据序列中的一个数据单元从数据序列中一次读取一个byte,叫字节输入流,由抽象类InputStream描述向数据序列中一次写出一个byte,叫字节输出流,由抽象类OutputStream描述.从数据序列中一次读取一个char,叫字符输入流,由抽象类Reader描述向数据序列中一次写出一个char,叫字符输出流,由抽象类Writer描述.节点流:原始流的开始或结束的地方过滤流:提供对流进行功能的扩充的流,InputStream,字节输入流读数据的三个read()方法intread()intread(bytebuf)intread(bytebuf,intoff,intsize)其他常用方法voidclose()intavaila

温馨提示

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

评论

0/150

提交评论