第一章Java语言概述12课时教学目标课程所讲述的内容Java语言的由来Java语言的版本说明Java语言的跨平台Java开发环境配置Eclipse开发java应用程序项目1课程讲述的内容Java语言基础知识什么是Java语言java语言的发展与开发环境Java语言的基本结构java语言的基本结构Java语言的基本要素java基本语法类与对象继承与接口异常IO多线程Java异常处理与捕获机制Java输入与输出流Java多线程图形用户界面开发与JDBCJava图形用户组建Swing类Eclipse开发工具可视类Java与Sql或Access数据库技术项目2JAVA语言的由来爪洼盛产咖啡世界咖啡豆的产地巴西海南计算机语言发展的四个阶段机器语言执行率高可读性差特点每一条计算机指令均由一组01数字按一定的规律排列组成不同的CPU具有不同的机器语言汇编语言汇编语言一条汇编指令对应一条机器指令与机器语言性质是一样的只是表达方式发生了变化可读性比机器语言略好高级语言CCVCVB特点高级语言源程序要解释或编译成机器语言后运行解释边解释边执行的方法如VB编译先把源程序编译成指定的机器类型的机器语言的目标程序然后再把目标程序和各种标准库函数库装配完整后在机器上运行例如CC可移植性较差结构化程序设计语言javajava发展背景sun公司在很多领域有前瞻性提前预判到一些科技与人类生活发展的要素在1991年时开发一个项目TVSETTOPBOX电视机顶盒机顶盒就是电视机上一个小盒子本身内部由硬件固化在硬件中的软件构成我们学习过单片机Sun公司设想通过单片机实现方案但是在当时单片机的生产厂家和种类很多各个厂家的单片机指令不同而且随着单片机的发展在一款单片机上写的程序更换在另一款单片机上就不能使用Intel51系列20个国家生产8096系列16位例如8096产品由于利润不如PC的CPUIntel公司放弃了该市场这样就导致使用Intel8096单片机的设备没有备件更换为了预防这种情况在Sun的机顶盒项目中出现Sun公司设计了一个虚拟机或者称为模拟器就是说Sun的机顶盒中原来固化在硬件中的程序在计算机中模拟的虚拟硬件中运行任天堂黑白机在计算机上运行Sun在产品开发完成后只需要选择一款合适的单片机并在该硬件上解释运行程序即可1994年OAKANDFistPerson产品开发完成后Sun公司将这款语言定义为OAKGosling项目组楼前有一棵橡树项目工作组叫做STARTSeven内部电话接打外线时需要先按下再按下7OAK项目推广失败了在美国有线电视台多数都是私人老板由于美国人口密度低一条光缆服务的人数太少投入太大风险高利润低Gosling项目组在1994年把OAK语言嵌入到WEB上在html中能解释运行OAK并且能在网页中显示一下动画OAK开发的WEB程序获得Sun高层的支持并在1995年申请注册OAK但是Gosling发现OAK已经被其他公司注册了大家都在发愁为该语言想一个名字Gosling发现同事桌子上得一瓶咖啡产地是爪洼大家都知道老美起名字喜欢别出心裁而且java不是英语所以就注册JAVAGosling项目组为java语言做的器称为HOTJava1995年在好莱坞技术交流中gosling展示了用java语言开发的网页动画鼠标在屏幕中移动后面跟着个小球经过记者炒作java语言就被大众认知了随后Gosling在项目架设了FTP服务器向全世界免费推广java语言项目3Java产品Sun公司的产品称为JavaPlatform2在早期产品中JDK13前统称为JDK在此之后称为JavaPlantform2现在有些开发人员依然把Sun产品称为JDKjavadevelopmentkitJAVAPlantform2产品系列J2SEstandardedition标准版J2EEEnterpriseedition企业版J2MEMicroEdition手机或嵌入式设备项目4Java应用领域Java语言可以开发桌面应用程序可以嵌入到Html中开发动态网站可以开发手持终端上的应用软件和游戏Java语言的灵活性太高了java语言的优势体现在网站开发中项目5Java开发环境Sun公司只提供Java语言的类库并不提供开发工具我们使用的Java语言的开发工具都是第三方提供的典型的开发工具记事本EditplusEclipse等配置开发环境下载JavaJDK16005下载后安装路径为cjdk16和cjre16配置环境变量path添加内容Cjdk16bin作用java编译时应用程序所在路径新建CLASSPATH内容Cjdk16libdtjarCjdk16libtoolsjar作用java解释运行时字节码文件所在路径注意在windows中显示项目6使用记事本编写第一个java应用程序打开记事本编写如下代码publicclasst1publicstaticvoidmainStringargsSystemoutprintln你好java一个java应用程序只有一个公共类public并且类名与文件名一致Javac文件名java编译Java文件名解释运行项目7eclipse开发工具下载Eclipse32中文版rar放在c解压缩到当前文件夹布尔类型不支持第二章Java语言基础34课时教学目标了解Java主类结构了解Java语言中的基本数据类型理解Java语言中的常量与变量掌握Java语言中的运算符的使用理解Java语言中的数据类型转换了解Java语言中的代码注释与编写规范项目1Java主类结构通过一个打印输出程序明确Java主类结构在控制台中打印你好Java字符代码如下你好明确内容包中存在类文件公共类类头Java程序由一个或多个独立的类组成但其中必须有一个公有类如T1而且源代码文件必须与这个公有类的名字相同如T1java程序入口每一个应用程序必须包含一个方法方法中的内容称为类体你好称为全局变量作用范围在类中局部变量作用范围在方法中项目2基本数据类型项目3整数类型如下代码范围位范围位范围位范围位十进制数八进制数十六进制数明确十进制数可直接打印八进制数以开始十六进制数以或开始整数类型范围项目4浮点类型float单精度double双精度基本数据类型数值型字符型布尔型声明主窗体类的对象4545调用构造方法有一个线程正在操作操作N浮点类型floatdouble表示单精度必须加表示双精度项目5字符类型char类型在编码中的位置在编码中的位置编码中是编码中是明确类型用于存储单个字符占用位两个字节空间定义变量时用单引号赋值如表示一个字符串使用变量名显示某字符在编码中的位置使用变量名显示编码中某个编码内容项目6布尔类型Boolean类型明确中的布尔数据类型仅支持和赋值项目7变量与常量标示符标示符是以字母下划线美元符开始的一个字符序列后面可以跟字母下划线美元符数字合法标示符非法标示符标识符是大小写敏感的但没有长度限制关键字是为编译器保留的具有特定含义的标识符不能把它用做变量类或方法的名称项目8声明变量声明变量在内存中开辟空间但没有赋值声明变量并赋值开辟空间并赋值如图项目9声明常量MemoryintaAcharc1aA常量赋值后的类型明确常量定义关键字项目10赋值运算符项目11算术运算符和为差为积为商为取余项目12自增自减运算符先加后输出先输出后加先减后输出先输出后减项目13比较运算符是否大于是否小于是否等于是否大于等于是否小于等于是否不等于项目14逻辑运算符ampamp明确逻辑值之间的运算项目15数据类型转换隐式转换与类型转换与类型转换与类型转换与类型转换明确数据类型转换是将一个值从一种类型转换到另一个类型的过程语言的数据类型转换分为隐式类型转换和显示类型转换低精度转换为高精度不会产生溢出高精度转为低精度有可能失败项目16显示类型转换明确当把高精度转换为低精度时需要强制类型转换数据类型精度由低至高第三章流程控制5课时教学目标掌握If条件语句的使用方法了解if语句与switch语句的区别掌握while循环语句的使用方法掌握dowhile循环语句的使用了解while语句与dowhile语句的区别掌握for语句的使用方法项目1条件语句if相等不相等明确if条件语句的基本语法格式if布尔表达式语句序列Else否则语句序列项目2ifelseif多分支语句项目3switch分支语句明确语法结构Switch表达式变量Case常量1数值语句块BreakCase常量2数值语句块BreakCase常量3数值语句块BreakDefault语句块在case语句块中必须加入break程序否则选择后将无法跳出分支结构default语句在选择失败后执行该语句块项目4while循环语句加法从1加到100输出结果明确语法结构While条件表达式语句块循环变量自增或自减先判断条件再执行循环体项目5dowhile循环结构加法从1加到100明确语法结构do循环语句循环变量自增或自减while条件表达式先执行循环体再判断条件项目6for循环加法从1加到100结果明确语法结构for自变量初值条件表达式自变量自增或自减循环体第四章字符串67课时教学目标掌握字符串的创建方式理解字符串连接的方式掌握获取字符串信息的方式掌握字符串的常用操作掌握字符串格式化学会使用J2SEAPIHELP文档项目1声明并创建字符串常用自动生成方法存根声明字符串你好计信班创建字符串你好计信班声明并创建字符串你好计信班明确由多个字符连接而成在Java语言中字符串必须包含在一对双引号内每个字符串是String类的对象而不是变量可以通过Javalang包中的String类来创建字符串项目2使用字符数组创建字符串由于字符串都是String的类对象所以可以使用如下构造方法创建字符串Stringchara或者StringcharaintoffsetintlengthOffset字符串起始位置字符串索引是从0开始的Length长度从起始位置开始使用几个字符创建字符数组声明并创建字符串声明并创建字符串项目3连接字符串连接字符串Hello和Java明确1对于已经声明的字符串可以使用运算符进行连接运算项目4连接其他数据类型今天用了个小时看书个小时练习今天用了个小时看书个小时练习项目5获取字符串长度字符串的长度明确由于字符串是类对象所以可以使用提供的方法获取字符串长度的方法如果字符串中有空格字符串长度包含空格项目6字符串查找indexOfStrings的位置的位置明确方法用于返回参数字符串在指定字符串中首次出现的位置如果没有检索到字符串该方法返回值为项目7lastIndexOfStringstr查找字符串最后一次出现位置的位置的位置项目8获取指定索引位置的字符charATintindex索引位置对应的字符是明确参数列表中如是指数据类型指对应数据类型的值可以是变量项目9获取子字符串指定从某一位置开始截取字符串指定从某一位置开始到结束之间的字符串项目10去除空格方法Strtrim去掉字符串前后的空格去掉空格前的长度去掉空格后的长度去掉空格后的字符串项目11字符串替换方法替换后的字符串明确该方法将替换所有的字符串中的字符项目12判断字符串是否相等方法忽略大小写字符串比较结果字符串比较忽略大小写结果明确字符串是String类对象所以比较两个字符串时不能用比较运算符项目13字母大小写转换方法转换为小写转换为大写转换为小写转换为大写项目14字符串分割方法使用分割符如字符串中存在的逗号或等号该方法返回一个字符串数组分隔分割次数符结果第五章数组8课时教学目标掌握一维数组创建和使用的方法掌握二维数组创建和使用的方法掌握数组遍历掌握填充和替换数组元素掌握数组排序掌握数组复制掌握查询数组方法项目1一维数组的声明与创建声明一维数组语法格式数组元素类型数组名字数组元素类型数组名字intarrStringstr一维数组创建语法格式数组名字new数组元素类型数组元素个数arrnewint5arr0arr1arr2arr3arr4声明同时创建数组语法格式数组元素类型数组名new数组元素类型数组元素的个数intarrnewint16项目2一维数组的初始化语法格式intarrnewint13579静态初始化动态初始化数组创建过程声明数组在栈内存创建变量并不开辟空间缺省初始化明确栈内存Sints声明数组131719堆内存地址数组如果没有初始化类型数组默认为类型默认为类型默认为项目2二维数组的创建与初始化声明二维数组语法格式数组元素类型数组名或者数组元素类型数组名创建二维数组另一种创建的方式中的多维数组每一维的长度可以不同初始化例如例如创建后再赋值项目3数组复制类库中提供了一个静态方法实现数组元素的拷贝格式其中源数组名源数组下标起始位目标数组名目标数组下标起始位复制元素的个数项目4数组元素排序包中专门有一个数组类用于排序排序后查找等操作使用使用时必须引用引用项目5Java中常用的包包含一些用于创建小应用程序的类包含一些用于编写与平台无关的图形界面应用程序的类包含一些用作输入输出处理的类包含一些语言的基本类与核心类如和提供常用的功能这个包中的所有类是被隐式导入的包含用于建立网络连接的类与同时使用完成与网络有关的读写包含一些实用工具类和数据结构类项目6使用数组打印99乘法表publicclasst4publicstaticvoidmainStringargsTODO自动生成方法存根intanewint99行n可变列将计算结果放入数组中forinti0iainewinti1声明了每行的列数a1newint2内层循环控制列n可变forintj0jaiji1j1打印输出forinti0iforintj0jSystemoutprintj1i1aijtSystemoutprintln结果第六章类和对象912课时教学目标掌握面向对象的编程思想掌握如何定义类掌握类的成员变量成员方法掌握修饰权限掌握局部变量以及作用范围掌握thisstatic关键字掌握构造方法通过构造方法创建对象掌握类中的主方法以及如何运行带参数的Java程序掌握使用对象获取对象的属性和行为项目1面向对象的程序基本编程思想OOP面向对象的程序设计objectorientedprogramOOD面向对象的程序设计designOOA面向对象的分析analysis什么是面向对象的技术OOP技术把问题看成相互作用的事物的集合用属性描述事物而把对象的操作定义为方法把事物称为对象把属性称为数据对象属性方法类同一种对象的集合与抽象对象1属性方法OOP技术类对象N属性方法面向对象编程技术现实问题抽象水果类例如我们在超市买水果西瓜桃子苹果梨等都是我们选择的要购买的对象他们都具有能吃含糖等共同的特点同时还具有外形颜色香味等各自不同的特点那么我们在面向对象的程序设计中将水果构成类即水果类水果类中所包含的如苹果桃子等具体的水果称为水果类中的一个对象或实例就是水果类中的一个具体事物水果类中所有水果都具有的如外形颜色香味等共同的性质称为属性水果类中水果都具有可以被吃掉的行为称为方法面向对象编程技术现实问题抽象电视机类例如我们需要购买一台电视机电视机本身就是一个大类该类中包含有各种品牌型号的电视机如海信日立松下长虹等面向对象的编程思想就是将长虹对象日立松下海信这些对象都具有的外形大小颜色等特性称为属性这些对象都具有的行为如打开关闭电源切换频道等动作称为方法电视机类具有了共同属性和共同的方法类是封装属性和方法的载体项目2Java中的类目的使用电视机类的现实问题使用面向对象的编程思想在Java语言中实现明确类电视机类属性外形大小颜色方法打开电源关闭电源对象类中的一款显示存在的电视机如海信1080P编写程序Java中如何定义一个类属性在编程中以什么方式出现行为在编程中以什么方式出现对象如何在编程实现Java中定义一个类属性方法打开电源关闭电源电视机类语言声明类的格式修饰符类名父类名接口名列表例如语言中属性在程序中以变量的形式出现语言中方法在程序中是以函数的形式出现打开电源关闭电源如何声明某个类的对象格式类名对象名new类名声明类对象使用类中非私有的方法红色声明类中的属性三角如何使用类中的方法格式对象名方法名如何使用类中的属性格式对象名属性名对象的访问是通过向对象发送消息实现的访问对象的一般形式为对象名变量名对象名方法名项目3同学编程练习设计一个book类属性为书名字符串类型name出版社字符串类型cbs方法setbook作用打印出java程序设计功能要求声明类对象使用类中的方法设置类中的属性并打印属性内容清华大学出版社程序设计程序设计项目4同学编程练习编写一个student类属性float类型highweightageString类型namesexstdno方法setValue1功能设置highweightage三个属性的值setValue2功能设置namesexstdno三个属性的值show1功能打印输出highweightage三个属性的值show2功能打印输出namesexstdno三个属性的值编写程序开发思路首先创建一个java项目一个java公共类在该java公共类中创建一个student类声明float类型highweightageString类型namesexstdno编写方法在主类中声明student对象使用对象调用方法程序如下张三男项目5请同学解释如下程序classRectangleprivatedoublelengthprivatedoublewidthvoidsetDimdoublewdoublelwidthwlengthldoubleareareturnlengthwidthpublicclassk21publicstaticvoidmainStringargsRectangler1newRectangler1setDim100200doublea1r1areaSystemoutprintln长方形的面积为a1项目6成员变量在Java中对象的属性称为成员变量也可以称为属性局部变量如果在成员方法内声明一个变量那么这个变量称为局部变量局部变量只能在当前成员方法内被使用局部变量是在成员方法被执行时创建在方法执行结束后销毁局部变量在使用时必须进行赋值操作或被初始化否则会出现编译错误例如privateStringsetageintage12全局变量作用域范围在整个类中一般在类体的第一行声明Java中定义一个类属性项目7成员方法在Java中类的方法又称为成员函数是类的动态属性标志了类所具有的功能和操作语法格式权限修饰符返回值类型方法名参数类型参数名方法体return返回值明确成员方法可以有一个或多个参数也可以没有参数成员方法如果没有返回值必须使用void关键字在以上学习中我们已经注意到使用不同的权限修饰符可以限制成员变量和方法是否被其他类所调用以下我们将详细介绍权限修饰符项目8权限修饰符属性和方法的访问控制符有四个分别为publicprivateprotected另外还有一种没有定义专门的访问控制符的缺省情况缺省的访问控制符子项目1同一个类中四种权限修饰符都可以被访问classtestpublicvoidpubwaySystemoutprintlnpublic方法protectedvoidprowaySystemoutprintlnprotected方法voiddefwaySystemoutprintlndefault方法privatevoidpriwaySystemoutprintlnprivate方法publicstaticvoidmainStringargstesttnewtesttpubwaytprowaytdefwaytpriway子项目2同一个包中只有private权限修饰符不可以被访问packagetrytestclasstestpublicvoidpubwaySystemoutprintlnpublic方法protectedvoidprowaySystemoutprintlnprotected方法voiddefwaySystemoutprintlndefault方法privatevoidpriwaySystemoutprintlnprivate方法另一个类调用packagetrytestclasstest2publicstaticvoidmainStringargstesttnewtesttpubwaytprowaytdefwaytpriway子项目3在子类中只有public和protected修饰控制符被访问packagetrytestpublicclasstestpublicvoidpubwaySystemoutprintlnpublic方法protectedvoidprowaySystemoutprintlnprotected方法voiddefwaySystemoutprintlndefault方法privatevoidpriwaySystemoutprintlnprivate方法子类中调用packagetest2importtrytesttestclasstest2extendstestpublicstaticvoidmainStringargstest2tnewtest2tpubwaytprowaytdefwaytpriway子项目4不同包之间修饰控制符的作用packagetrytestpublicclasstestpublicvoidpubwaySystemoutprintlnpublic方法protectedvoidprowaySystemoutprintlnprotected方法voiddefwaySystemoutprintlndefault方法privatevoidpriwaySystemoutprintlnprivate方法不同包的类调用packagetest2importtrytesttestpublicclasstest2publicstaticvoidmainStringargstesttnewtesttpubwaytprowaytdefwaytpriway明确publicprotected缺省private同类PPPP同包PPP子类PP通用性P项目9类的构造方法在类中不仅存在成员方法还存在另外一种重要的方法构造方法构造方法具有以下几个特点构造方法的名字和类名相同并且没有返回值构造方法主要用于为类的对象定义初始化状态我们不能直接调用构造方法必须通过new关键字来自动调用从而创建类的实例Java的类都要求有构造方法如果没有定义构造方法Java编译器会为我们提供一个缺省的构造方法也就是不带参数的构造方法子项目1构造方法计算长方形的面积构造方法classcfxprivatedoublelengthprivatedoublewidthcfxdoubleldoublew构造函数设置长和宽lengthlwidthwdoublearea面积函数returnlengthwidthpublicclassk22publicstaticvoidmainStringargscfxr1newcfx2030r2newcfx3040doublearea1area2area1r1areaarea2r2areaSystemoutprintlnarea1area1area2area2子项目2构造方法自动调用构造方法直接赋值classpointintxintypointx10y5SystemoutprintlnxSystemoutprintlnypublicclassk23publicstaticvoidmainStringargspointr1newpoint子项目3缺省构造方法classpointintxintyvoidPointx10y5SystemoutprintlnxSystemoutprintlnypublicclassk24publicstaticvoidmainStringargspointr1newpoint项目10this关键字this关键字有两种用法this代表它所在类本身的实例对象可以理解为是类对象的另一个名字利用this可以直接调用当前对象的方法和变量子项目1关键字声明对象使用输出方法构造方法输出方法指代当前类中的对象可以用this来调用它所在类本身的构造方法子项目2即在不带参数的构造方法中调用带参数的构造方法可以使用this关键字声明对象同时调用构造方法使用输出方法构造方法输出方法指代当前类中的对象无参的构造方法调用有参的构造方法项目11static关键字被声明为static的变量常量和方法被称为静态成员静态成员是属于类所有的所有对象使用同一个内存空间被static修饰的成员班班班班所有声明的类对象都使用同一个变量