Java应用开发基础知识全套教学课件_第1页
Java应用开发基础知识全套教学课件_第2页
Java应用开发基础知识全套教学课件_第3页
Java应用开发基础知识全套教学课件_第4页
Java应用开发基础知识全套教学课件_第5页
已阅读5页,还剩345页未读 继续免费阅读

下载本文档

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

文档简介

Java基础入门Java核心基础课程目标了解Java发展历史Java语言环境安装掌握环境变量配置步骤掌握HelloWorld案例了解关键字的含义掌握Java语言中注释的用法掌握Java语言中的常量掌握Java语言中的变量课程任务完成JDK的安装配置环境变量完成HelloWorld案例探究Java语言中的常量和变量目录CONTENTS1234Java语言概述HelloWorld案例常量变量01Java语言概述Java语言发展史Java语言发展史甲骨文(Oracle)收购SUN(StanfordUniversityNetwork)詹姆斯·高斯林(JamesGosling)Java语言平台概述J2SE(Java2PlatformStandardEdition)标准版Java语言平台概述J2ME(Java2PlatformMicroEdition)小型版Java语言平台概述J2EE(Java2PlatformEnterpriseEdition)企业版JRE和JDKJRE和JDKJRE和JDK的关系JDK:JRE+开发工具JRE:JVM+核心类库JVM:保证语言的跨平台Java语言跨平台原理平台:指的是操作系统(Windows,Linux,macOS)跨平台:Java程序可以在任意操作系统上运行,一次编写到处运行原理:实现跨平台需要依赖Java的虚拟机JVM(JavaVirtualMachine)java语言是跨平台的,java虚拟机不是跨平台的02HelloWorld案例常用dos命令dos:磁盘操作系统的缩写。打开控制台WIN+R,输入CMD,回车。常用命令盘符+:dircdmdclsexitJDK的安装傻瓜式安装,点击下一步即可。建议:安装路径不要有中文或者特殊符号如空格等。开发工具最好安装目录统一。课程案例案例名称:HelloWorld案例的编写与运行需求描述:在控制台输出HelloWorld使用技能:javac、java演示案例:HelloWord案例的编写和运行现场编程HelloWorld案例常见问题后缀名问题单词拼写问题class->ClassString->stringSystem->systemmain->mian中文符号问题提示非法字符注释概述:用于解释说明的文字。代码中注释分类单行注释(Comment)格式://注释文字多行注释(Comment)格式:/*注释文字*/文档注释(Javadoc)格式:/**注释文字*/注释作用:解释说明程序,提高程序的可读性。关键字关键字概述:关键字是被Java语言赋予特殊含义,具有专门用途的单词。比如之前接触的class,public,static,void均为Java已经预设好的关键字。关键字特点组成关键字的字母全部小写常用的代码编辑器,针对关键字有特殊的颜色标记关键字一览关键字一览关键字一览关键字一览公共类和普通类公共类:在class前面有public修饰的类。公共类的名称要和文件名一致。在同一个java文件中只能有一个公共类,可以有多个普通类。包概述:就是文件夹,用于对类进行管理。带包编译:javac-d.要编译的.java文件带包运行:java包名.要执行的.class文件。03常量概述和分类概述:程序执行的过程中,其值不可以发生改变的量常量分类字符串常量 用双引号括起来的内容(“HelloWorld”)整数常量 所有整数(12,-23)小数常量 所有小数(12.34)字符常量 用单引号括起来的内容(‘a’,’A’,’0’)布尔常量 较为特有,只有true和false空常量 null04变量概述和定义格式概述:在程序执行的过程中,在某个范围内其值可以发生改变的量。从本质上讲,变量是内存中储存数据的区域,你能用它来存数据和取数据,还可以改变这个数据。定义格式:数据类型变量名=初始化值;变量内存示意图变量内存示意图标识符作用:给包,类,方法,变量等起名字。组成规则:由字符,下划线_,美元符$组成。这里的字符采用的是Unicode字符集,所以包括英文大小写字母,中文字符,数字字符等,但符号只能有两个:下划线_和美元符$。注意事项:不能以数字开头。不能是Java中的关键字。计算机存储单元变量是内存中的小容器,用来存储数据。无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写的字母b表示。而计算机最小的存储单元叫“字节(byte)”,通常用大写字母B表示,字节是由连续的8个位组成。数据类型分类:基本数据类型和引用数据类型。基本数据类型变量声明和使用演示分别定义8种基本数据类型,并输出结果。现场练习时间:5分钟课程总结通过Java基础入门的学习,学生了解了JDK版本的更迭,可以独立安装JDK和配置环境变量。通过编写HelloWorld案例,学生掌握了编译和运行的使用方式,以及对于代码有一个初步的印象。掌握了变量和常量的使用方式,为以后的学习打好基础。课程作业课下作业在屏幕上输出:IloveJava预习作业Java中变量的类型转换Java中的运算符谢谢类型转换和运算符Java核心基础课程回顾及作业点评检查JDK安装情况HelloWorld案例回顾基本数据类型范围回顾预习检查计算机中使用的是哪一种进制?Java中的运算符随机提问。课程目标理解精度损失的含义掌握精度损失出现的原因掌握进制间的转换规则理解运算符和表达式概念掌握Java中的运算符规则课程任务演示变量使用过程中的常见错误讲解自动类型转换和强制类型转换原码、反码、补码的换算完成运算符练习目录CONTENTS12类型转换运算符(一)01类型转换变量注意事项变量如果没有进行赋值,是不可以直接使用的变量只有在自己所属的作用域之内才有效作用域:从变量定义的一行开始,到所在的大括号结束为止一行当中可以一次性定义多个【相同类型的】变量并且赋值,但是【不推荐使用】现场编程演示案例:变量注意事项舍入误差舍入误差(round-offerror),是指运算得到的近似值和精确值之间的差异。多数的小数运算是不能获取精确值的。类型转换分类自动类型转换(隐式):由范围小的数据类型转换为范围大的数据类型。特点:自动完成,不需要程序员特殊处理注意:整数都可以转换为对应的浮点型,但是可能会出现一些误差!强制类型转换(显式):由范围大的数据类型转换为范围小的数据类型。特点:需要特殊处理,否则可能编译不通过格式:范围小的数据类型变量名=(范围小的数据类型)范围大的数据类型;演示案例:类型转换分类现场编程精度损失强制类型转换可能出现精度损失问题不推荐使用强制类型转换当使用小数强转为整数时,会直接将小数部分舍弃现场编程演示案例:类型转换分类编码介绍ASCII:美国标准信息交换码。用一个字节的7位可以表示。总共有128个,包含了英文的大小写,常用符号,数字。ISO8859-1:拉丁码表。用一个字节的8位表示。以ASCII为基础,在空置的范围内,加入192个字母及符号。GBK:英文占一个字节,中文占两个字节。UTF-8:英文占一个字节,中文占三个字节。ASCII码表ASCII码表ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符0NUT32(space)64@96、1SOH33!65A

97a2STX34”66B98b3ETX35#67C99c4EOT36$68D100d5ENQ37%69E101e6ACK38&70F102f7BEL39,71G103g8BS40(72H104h9HT41)73I105i10LF42*74J106j11VT43+75K107k12FF44,76L108l13CR45-77M109m14SO46.78N110n15SI47/79O111o16DLE480

80P112p17DCI49181Q113q18DC250282R114r19DC351383X115s20DC452484T116t21NAK53585U117u22SYN54686V118v23TB55787W119w24CAN56888X120x25EM57989Y121y26SUB58:90Z122z27ESC59;91[123{28FS60<92/124|29GS61=93]125}30RS62>94^126~31US63?95—127DEL类型转换扩展byte/short/char在运算时会自动提升为int类型字符在参与运算时已经转换为了对应码表的数字byte/short/char如果右边的值没有超出范围,那么java会自动补上强转,如果超出范围就不可以bytea=10;-->bytea=(byte)10;类型转换面试题分析以下代码能否编译成功?为什么?charch1=97;

shortch2=‘a’;charch1=97;

shortch2=‘a’;shortch2=ch1;分析进制分类(bin)二进制:0~1,满2进1,以0b作为二进制的标识。(oct)八进制:0~7,满8进1,以0作为八进制的标识。(dec)十进制:0~9,满10进1。(hex)十六进制:0~9、a~f,满16进1。以0x作为十六进制的标识。注意:十六进制中的a-f,不区分大小写。进制转换十进制转换为二进制。二进制转换为十进制。十进制转换为其他进制。二进制转换为八进制。八进制转换为二进制。二进制转换为十六进制。十六进制转换为二进制。原码、补码和反码Java中的数据底层都是使用数据的补码形式存储和计算的。正数的原码补码和反码都相同。负数的反码:符号位不变,其它位取反。负数的补码:符号位不变,在反码的基础上加1。课程练习计算-5的原码、反码和补码。现场练习时间:5分钟02运算符(一)概述运算符:对变量和常量进行运算的符号。表达式:使用运算符将常量或者变量连接起来的式子。运算符分类算数运算符赋值运算符关系运算符逻辑运算符三目(元)运算符位运算符运算符的使用算数运算符+、-、*、/、%自增自减运算符++、--自增自减运算符分为独立使用和混合使用赋值运算符+=、-=、*=、/=、%=赋值运算符默认有一个强转操作关系运算符==、!=、>=、<=、>、<关系运算符的结果都是布尔类型现场编程演示案例:运算符的使用课程总结通过Java基础语法第二天的学习,掌握了变量使用时的注意事项,Java中类型转换和运算符。其中类型转换是本节的重点和难点。自增自减运算符是运算符知识点中的难点,常见于企业面试和证书考试中,一定要多多练习。熟练掌握基础运算符的使用,为接下来的高级运算符打好基础。课程作业课下作业对于inti=3,j=5;请写出能够交换i和j的值的方式并比较各种方式的优劣性预习作业逻辑运算符、三目运算符和位运算符流程控制语句谢谢运算符和流程控制语句Java核心基础课程目标掌握Java中的逻辑运算符理解短路效果的含义掌握位运算的算法熟练使用三目运算符熟练使用流程控制语句结构课程任务编写逻辑、三目、位运算符的代码讲解分支结构的使用格式讲解循环结构的使用格式编写跳转控制语句的代码目录CONTENTS12运算符(二)流程控制语句01运算符(二)运算符的使用逻辑运算符&(与)、|(或)、!(非)、^(异或)短路效果:如果左边已经可以判断出最终结果,那么右边的代码就不会执行位运算符使用前提:要把数据转换为二进制的补码形式&(与)、|(或)、^(异或)、<<(左移)、>>(右移)、>>>(无符号右移)、~(取反)注意:只针对与整数进行运算三目(三元)运算符格式:数据类型变量名=判断条件?表达式A:表达式B;如果判断条件成立,那么将表达式A的结果赋值给等式左边变量如果判断条件不成立,那么将表达式B的结果赋值给等式左边变量现场编程演示案例:运算符的使用02流程控制语句顺序结构概述:是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。选择结构概述选择结构也被称为分支结构选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码Java语言提供了if语句和switch语句两种选择结构if语句格式一格式if(布尔表达式){

语句体;}if语句格式二格式if(关系表达式){

语句体1;}else{

语句体2;}if语句格式三格式if(判断条件1){

执行语句1;}elseif(判断条件2){

执行语句2;}...elseif(判断条件n){

执行语句n;}else{

执行语句n+1;}课程案例案例名称:键盘录入学生考试成绩,判断学生等级需求描述:90-100 优秀 80-90 好70-80 良60-70 及格60以下 不及格使用技能:Scanner类、if语句格式三演示案例:键盘录入学生考试成绩,判断学生等级现场编程switch语句格式switch(表达式){ case目标值1:

语句体1; break; case目标值2:

语句体2; break; … default:

语句体n+1; break;}课程案例案例名称:根据键盘录入的数值1、2、3...7输出对应的星期一、星期二、星期三...星期日使用技能:Scanner类、switch语句演示案例:根据键盘录入数字,显示对应的周几现场编程循环结构概述循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。循环语句的组成循环变量初始化(初始化表达式)循环出口(布尔表达式)循环逻辑内容(循环体)循环增量(步进表达式)循环结构for格式for(初始化表达式①;布尔表达式②;步进表达式④){

循环体③

}课程案例案例名称:统计水仙花数有多少个项目描述:水仙花数是指一个三位数,其每一位数字的立方和等于该数本身。使用技能:for循环演示案例:统计水仙花数有多少个现场编程循环结构while格式初始化表达式①while(布尔表达式②){

循环体③ 步进表达式④}课程案例案例名称:求出1-100之间偶数和使用技能:while循环演示案例:求出1-100之间的偶数和现场编程循环结构do-while格式初始化表达式①do{

循环体③ 步进表达式④}while(布尔表达式②);课程练习统计水仙花数有多少个项目描述:水仙花数是指一个三位数,其每一位数字的立方和等于该数本身。使用技能:do-while循环时间:5分钟现场练习三种循环的区别do…while循环至少会执行一次循环体for循环和while循环只有在条件成立的时候才会去执行循环体for循环语句和while循环语句的小区别控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率跳转控制语句break中断使用场景在选择结构switch语句中在循环语句中作用结束当前循环continue继续使用场景在循环语句中作用结束本次循环,继续下一次循环课程总结通过Java基础语法第三天的学习,掌握了逻辑运算符、位运算符和三目运算符以及选择结构的if、switch语句和循环结构for、while和do-while。if语句常用于判断场景,switch语句常用于固定内容的匹配。当有大量循环性的语句时,可以使用循环结构。循环结构优先推荐使用for循环和while循环。课程作业课下作业打印99乘法表预习作业java数组java中的内存分配谢谢数组和方法Java核心基础课程回顾及作业点评回顾位运算符、三目运算符回顾if和switch语句回顾for循环回顾break和continue的区别预习检查数组的定义和初始化。Java内存划分区域。课程目标理解JVM划分区域的作用熟练应用Java中的数组熟练使用Java中的方法课程任务讲解数组的定义和初始化格式讲解内存中区域的划分和作用讲解方法的定义和调用格式讲解重载的含义练习数组和方法的习题讲解递归的使用方法目录CONTENTS12数组方法01数组数组的定义格式概念数组是存储同一种数据类型多个元素的容器。数组的定义格式格式1:数据类型[]数组名;格式2:数据类型数组名[];数组的初始化概述Java中的数组必须先初始化,然后才能使用。为数组中的数组元素分配内存空间,并为每个数组元素赋值称之为初始化。数组的初始化方式动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。动态初始化初始化时只指定数组长度,由系统为数组分配初始值格式:数据类型[]数组名=new数据类型[数组长度];数组长度其实就是数组中元素的个数。访问数组元素直接打印数组名,打印的是数组堆内存中的地址数组中的每个元素都是有编号的,编号是从0开始的,最大的编号就是数组的长度减一用数组名和编号的配合我们就可以获取数组中的指定编号的元素这个编号的专业叫法:索引格式:数组名[索引]Java中的内存分配Java程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式栈存储局部变量堆存储new出来的内容方法区本地方法区寄存器课程练习定义一个数组,输出数组名及元素。然后给数组中的元素赋值,再次输出数组名及元素,并分析内存图。定义两个数组,先定义一个数组赋值,输出。然后定义第二个数组的时候把第一个数组的地址赋值给第二个数组。然后给第二个数组赋值,再次输出两个数组的名及元素,并分析内存图。时间:20分钟现场练习静态初始化初始化时指定每个数组元素的初始值,由系统决定数组长度。格式:数据类型[]数组名=new数据类型[]{元素值1,元素值2,…};简化格式:数据类型[]数组名={元素1,元素2,...};数组操作的常见问题数组索引越界异常ArrayIndexOfBoundsException访问到了数组中的不存在的索引时发生空指针异常NullPointerException数组引用没有指向对象,却在操作对象中的元素时课程案例案例名称:遍历数组需求描述:依次输出数组中的每一个元素使用技能:for循环、获取数值长度:数值名.length演示案例:遍历数组现场编程课程案例案例名称:冒泡排序需求描述:使用冒泡排序法给数组进行排序使用技能:for循环、if语句演示案例:冒泡排序现场编程课程练习获取数组中的最大值。时间:10分钟现场练习课程练习使用选择排序法对数组进行排序需求描述:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零使用技能:for循环、if语句时间:20分钟现场练习二维数组二维数组就是一个元素为一维数组的数组二维数组定义格式数据类型[][]数组名;数据类型数组名[][];(不推荐)数据类型[]数组名[];(不推荐)初始化方式数据类型[][]变量名=new数据类型[m][n];m: 二维数组的长度(二维数组中一维数组的个数)n: 二维数组中一维数组的长度数据类型[][]变量名=new数据类型[][]{{元素…},{元素…},{元素…}};简化版格式:数据类型[][]变量名={{元素…},{元素…},{元素…}};02方法方法概述假设有一个游戏程序,程序在运行过程中,要不断地发射炮弹。发射炮弹的动作需要编写100行的代码,在每次实现发射炮弹的地方都需要重复地编写这100行代码,这样程序会变得很臃肿,可读性也非常差。为了解决代码重复编写的问题,可以将发射炮弹的代码提取出来放在一个{}中,并为这段代码起个名字,这样在每次发射炮弹的地方通过这个名字来调用发射炮弹的代码就可以了。上述过程中,所提取出来的代码可以被看作是程序中定义的一个方法,程序在需要发射炮弹时调用该方法即可。方法的定义格式定义:方法就是完成特定功能的代码块在很多语言里面都有函数的定义函数在Java中被称为方法格式修饰符返回值类型方法名(参数类型参数名1,参数类型参数名2…){方法体;return返回值;}方法的调用求和方法的调用(有明确返回值)使用格式:方法名(参数);单独调用,没有意义课程练习比较两个数据是否相等。时间:10分钟现场练习void修饰的方法格式修饰符void方法名(参数类型参数名1,参数类型参数名2…){

方法体; return;}没有明确返回值的函数调用:就是void类型方法的调用只能单独调用课程案例案例名称:定义一个方法,打印水仙花数需求描述:水仙花数是指一个三位数,其每一位数字的立方和等于该数本身使用技能:方法的定义、for循环、if语句演示案例:定义一个方法,打印水仙花数现场编程方法的重载(Overload)方法重载概述在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可方法重载特点与返回值类型无关,只看方法名和参数列表在调用时,虚拟机通过参数列表的不同来区分同名方法本质上就是方法在调用时,保证能通过方法名和参数区分要调用的方法。方法参数传递参数传递概述可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了。这种传递方式,我们称为参数传递。定义方法时,参数列表中的变量,我们称为形式参数。调用方法时,传入给方法的数值,我们称为实际参数。基本数据类型(加上String),形式参数的改变不影响实际参数。引用数据类型(除了String),形式参数的改变影响实际参数。递归递归概述程序调用自身的编程技巧称为递归(recursion)。使用递归可能会出现栈溢出错误(StackOverflowError)。课程总结通过Java基础语法第四天的学习,掌握了Java中数组和方法的定义和使用方式。数组是一个容器,主要用于在内存中存储数据类型相同的数据,可以存储基本数据类型,也可以存储引用数据类型。今天讲解的方法都是使用static修饰,称之为静态方法,在后续的面向对象阶段中我们即将学习成员方法,以及static关键字的具体含义。课程作业课下作业给定一个数组将这个数组中所有元素的顺序进行颠倒15个猴子围成一圈选大王,依次1-7循环报数,报到7的猴子被淘汰,直到最后一只猴子成为大王。问:哪只猴子会成为大王?使用代码实现。输入一个数字n,利用递归求出这个1~n的和。预习作业面向对象思想private关键字谢谢面向对象(一)Java核心基础课程回顾及作业点评回顾数组的定义和初始化回顾方法的定义回顾void关键字回顾方法的重载回顾方法的递归预习检查面向对象和面向过程的区别。类与对象的关系。课程目标能够独立安装Eclipse能够使用Eclipse删除和导入项目理解面向对象和面向过程的区别能够说出成员变量和局部变量的区别能够理解面向对象三大特征课程任务Eclipse安装和使用讲解面向对象思想讲解类与对象的关系创建和使用对象讲解面向对象的三大特征目录CONTENTS继承1IDE2面向对象的使用3封装4多态501IDEIDE概述集成开发环境(IDE,IntegratedDevelopmentEnvironment)是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。微软的VisualStudioBorland的C++BuilderIBM的EclipseEclipseEclipse是一个专门针对Java的集成开发工具(IDE),是IBM公司的产品。是免费、开源、由Java语言编写。所以,需要有JRE运行环境并配置好环境变量。它可以极大地提升我们的开发效率。可以自动编译,检查错误。特点描述免费纯Java语言编写免安装扩展性强Eclipse的快捷键内容辅助键:alt+/main方法main,然后alt+/,回车输出语句syso,然后然后alt+/,回车其它快捷键:注释单行 选中内容,ctrl+/,再来一次就是取消多行 选择内容,ctrl+shift+/,ctrl+shift+\格式化ctrl+shift+f项目的删除和导入删除项目选中项目–右键–删除从项目区域中删除从硬盘上删除导入项目在项目区域右键找到import,找到General,展开,并找到ExistingProjectsintoWorkspace点击next,然后选择你要导入的项目注意:这里选择的是项目名称02面向对象的使用面向过程和面向对象面向过程开发,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。面向过程的代表语言:C语言面向对象开发,就是把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式面向对象思想面向对象是基于面向过程的编程思想。面向过程:强调的是每一个功能的步骤面向对象:强调的是对象,然后由对象去调用功能特点是一种更符合我们思考习惯的思想可以将复杂的事情简单化将我们从执行者变成了指挥者角色发生了转换类与对象的关系Java语言最基本单位是类类:是一组相关的属性和行为的集合对象:是该类事物的具体体现创建对象创建对象:类名对象名=new类名();使用对象访问类中的成员:对象名.成员变量;对象名.成员方法();课程案例案例名称:定义一个手机类,并创建对象需求描述:定义一个Phone类,成员变量为品牌、价格和颜色,

成员方法为打电话和发短信。并创建对象调用。使用技能:类的定义,创建对象演示案例:定义一个手机类,并创建对象现场编程对象的内存上述案例中对象存放于堆中,方法的执行在栈中,类的加载信息在方法区中。堆中的成员变量有默认值。03封装封装封装概述是面向对象三大特征:封装、继承、多态是面向对象编程语言对客观世界的模拟封装原则:将不需要对外提供的内容都隐藏起来。把属性隐藏,提供公共方法对其访问。成员变量用private修饰,提供对应的getXxx()/setXxx()方法被private修饰的成员只在本类中才能访问。thisthis关键字的由来this:代表所在类的对象引用方法被哪个对象调用,this就代表哪个对象this关键字的使用局部变量隐藏成员变量(局部变量和成员变量重名)this语句必须是在有效代码的第一行构造方法作用给对象的数据进行初始化格式修饰符构造方法名(参数列表){}注意事项如果你不提供构造方法,系统会给出默认构造方法如果你提供了构造方法,系统将不再提供构造方法也是可以重载的课程案例案例名称:标准学生类代码编写和测试需求描述:定义一个学生类,包含成员变量、构造方法和成员方法。成员变量提供set、get方法。构造方法包含无参和全参的构造方法。使用技能:类的定义,创建对象演示案例:标准学生类代码编写和测试现场编程构造代码块和局部代码块构造代码块在类中方法外的{}对象一建立就运行,而且优先于构造方法运行构造代码块中定义的是不同对象共性的初始化内容局部代码块在方法中的{}限制变量的作用范围和生命周期提高栈内存的利用率权限修饰符权限修饰符,指在Java中用于限定使用范围的关键字本类中子类中同包类中其它类中public可以可以可以可以protected可以可以可以不可以default可以同包子类可以可以不可以private可以不可以不可以不可以04继承继承继承的概念类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。继承的定义及使用格式格式class子类extends父类{}继承可以提高代码的复用性当在程序中通过对象调用方法时,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法。继承特点Java支持单继承Java支持多层继承父类定义了继承树中共性内容,子类定义了该类个性内容。supersuper是指向父类的引用如果构造方法没有显式地调用父类的构造方法,那么编译器会自动为它加上一个默认的super()方法调用。如果父类没有默认的无参构造方法,编译器就会报错,super()语句必须是构造方法的第一个子句。创建一个子类对象时,会先调用子类的构造方法,然后再调用父类的构造方法,如果父类足够多的话,会一直调用到最终的父类构造方法重写(Override)在父子类中存在方法签名相同的非静态方法,也称之为方法的覆盖重写的原则:方法签名一致如果父类中的方法返回值类型是基本数据类型/void,那么子类在重写方法的时候返回值类型要保持一致子类重写的方法的权限修饰符的范围要大于等于父类对应方法的权限修饰符的范围如果父类方法的返回值类型是引用数据类型,那么子类重写的方法的返回值类型要么与父类方法返回值类型一致,要么子类方法的返回值类型是父类方法返回值类型的子类05多态多态概述现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。多态的体现编译时多态:方法的重载运行时多态:向上造型、方法的重写。向上造型:用父类来声明对象用子类来创建对象编译期间只会检查声明类和创建类之间是否有继承关系运行期间确定具体的子类课程总结通过面向对象(一)的学习,学生能够解答前面对于使用引用数据类型的疑惑,能够区分面向对象和面向过程的区别,理解了面向对象的三大特征:封装、继承、多态。初次接触面向对象思想的同学会理解会有点难度,需要更多的练习和思考来加深印象。课程作业课下作业定义一个类表示矩形,提供求周长和面积的方法。定义一个类Complex,用来表示复数。这个复数类具有两个属性:doublereal,表示实部,doubleim,表示虚部。并为Complex类增加add、sub、mul方法,分别表示复数的加法、减法和乘法运算。其中,add方法的声明如下:publicComplexadd(Complexc)//表示当前Complex对象与参数c对象相加publicComplexadd(doublereal)//表示当前Complex对象与实数real相加预习作业abstract、static、interface关键字谢谢面向对象(二)Java核心基础课程回顾及作业点评回顾定义类的格式回顾创建对象的方式回顾构造方法和构造代码块回顾面向对象的三大特征预习检查static关键字的含义及用法。abstract关键字的含义和用法。课程目标能够区分类方法和对象方法能够区分静态变量和成员变量掌握final关键字的用法理解抽象方法的应用场景熟练使用接口掌握内部类的使用课程任务讲解static关键字讲解final关键字抽象类和抽象方法的定义和使用定义接口并实现定义内部类并讲解目录CONTENTS接口1static2final3abstract4内部类501staticstatic概述static是静态修饰符,一般用来修饰类中的成员。被static修饰的成员属于类,不属于单个这个类的某个对象。static修饰的成员被多个对象共享。static修饰的成员属于类,但是会影响每一个对象。被static修饰的成员又叫类成员,不叫对象的成员。static的使用static可以修饰变量、方法、代码块、内部类。static修饰的变量叫做静态变量static修饰的方法叫做静态方法static修饰的代码块叫做静态代码块现场编程演示案例:static的使用02finalfinal概述final是Java中的关键字,用于修饰数据、方法和类final修饰的数据称之为常量:定义之后不可修改对于基本数据类型而言指其实际值不可修改对于引用数据类型而言指其地址值不可修改final修饰的方法称之为最终方法,不能被重写final修饰的类称之为最终类,不能被继承03abstract抽象概述有的时候,某个父类只是知道子类应该包含怎么样的方法,但是无法准确知道子类如何实现这些方法。比如一个图形类应该有一个求周长的方法,但是不同的图形求周长的算法不一样。那该怎么办呢?分析事物时,发现了共性内容,就出现向上抽取。会有这样一种特殊情况,就是方法功能声明相同,但方法功能主体不同。那么这时也可以抽取,但只抽取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。抽象类的产生不具体的功能,需要在类中标识出来,通过java中的关键字abstract(抽象)修饰。当定义了抽象方法的类也必须被abstract关键字修饰,被abstract关键字修饰的类是抽象类。抽象类&抽象方法的定义抽象方法定义的格式:publicabstract返回值类型方法名(参数);抽象类定义的格式:abstractclass类名{}演示案例:抽象类&抽象方法的定义现场编程抽象类&抽象方法的特性抽象类可以定义构造方法,其存在的意义在于对自身进行初始化,供其子类使用。抽象类不能创建对象,但是底层JVM会利用C语言创建一个虚拟对象给子类使用抽象类中可以定义普通方法抽象类中不能直接实例化,需要使用向上造型抽象类一定不是最终类抽象方法可以重载,必须被继承和重写,不能用private/final/static修饰04接口接口概述接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的“类”。接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类来完成。这样将功能的定义与实现分离,优化了程序设计。一切事物皆有功能,即一切事物皆有接口。接口的定义与定义类的class不同,接口定义时需要使用interface关键字。定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字的编译后仍然会产生.class文件。这点可以让我们将接口看做是一种只包含了功能声明的特殊类。定义格式:interface接口名{

抽象方法1;

抽象方法2;

抽象方法3; }类实现接口格式:class类implements接口{

重写接口中方法;}在类实现接口后,该类就会将接口中的抽象方法继承过来,此时该类需要重写该抽象方法,完成具体的逻辑。接口中成员的特点接口中可以定义变量,但是变量必须有固定的修饰符修饰,publicstaticfinal所以接口中的变量也称之为常量,其值不能改变接口中可以定义方法,方法有固定的修饰符,publicabstract接口不可以创建对象子类必须覆盖掉接口中所有的抽象方法后,子类才可以实例化接口特点接口可以继承接口。如同类继承类后便拥有了父类的成员,可以使用父类的非私有成员。A接口继承B接口后,A接口便拥有了A、B两个接口中所有的抽象方法。Java支持一个类同时实现多个接口,或一个接口同时继承多个接口。类可以在继承一个类的同时,实现多个接口。接口与父类的功能可以重复,均代表要具备某种功能,并不冲突。课程练习定义一个接口表示形状,提供获取这个形状的周长和面积的方法,为这个接口提供实现类:矩形和圆形,为矩形提供一个子类:正方形时间:20分钟现场练习JDK1.8接口的特性从JDK1.8开始,接口中允许存在实体方法,要求这个方法用default或者static修饰Lambda表达式:用于重写接口中的抽象方法演示案例:抽象类&抽象方法的定义现场编程05内部类内部类内部类概述将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类。其他类也称为外部类。内部类分类方法内部类成员内部类静态内部类匿名内部类方法内部类方法内部类又称之为局部内部类可以使用外部类的一切属性和方法可以定义非静态变量和非静态方法不可以定义静态变量和静态方法局部内部类只能被abstract/final其中一个修饰在局部内部类中调用外部类的同名变量格式:外部类.this.变量名;成员内部类定义在类中方法外的内部类称之为成员内部类可以使用外部类的一切属性和方法可以定义非静态变量和非静态方法不可以定义静态变量和静态方法成员内部类可以使用一切修饰类的修饰符在其他类中创建成员内部类的格式:外部类.内部类对象名=new外部类().new内部类();静态内部类使用static修饰的内部类称之为静态内部类不能使用外部类的非静态变量和非静态方法能使用外部类的静态变量和静态方法可以定义一切的属性和方法在其他类中创建静态内部类的格式:外部类.内部类对象名=new外部类.内部类();在其他类中调用内部类的静态方法格式:外部类.内部类.静态方法名();匿名内部类没有名称的内部类称之为匿名内部类匿名内部类本质上是实现了对应的接口或者继承了对应的类final修饰的类不能使用匿名内部类课程总结通过面向对象(二)的学习,学生彻底熟悉了static关键字,并深入理解了方法区、栈、堆在内存中的具体作用。能够区分对象方法和类方法的含义和区别。final关键字常用于修饰类和变量,被final修饰的变量称之为常量,在实际开发中不希望被随意修改的内容可以使用final修饰。初次接触抽象、接口的概念,会难以理解为何Java中为何如此设计,需要经验和代码量的积累,在后续课程中当代码量增多,功能复杂时,能够更加明显的感受到面向接口开发的实际意义。课程作业课下作业设计一个类MyClass,为MyClass增加一个count属性,用来统计总共创建了多少个对象。定义一个接口MediaPlayer,表示家庭影院的一个设备。MediaPlayer中包含play(),stop(),open()三个方法,分别表示播放、停止和开仓功能。MediaPlayer有三个实现类,分别为:DVDPlayer,表示DVD播放器。CDPlayer,表示CD播放器。TapePlayer,表示录音机,播放磁带。完成MediaPlayer接口及其子类的代码。预习作业Object类如何重写equals方法以及为何要重写?String类的使用谢谢常用APIJava核心基础课程回顾及作业点评回顾面向对象三大特征回顾static关键字的使用回顾构造方法和构造代码块回顾面向对象的三大特征预习检查提问Java中的顶级父类。String类的定义和使用。课程目标能够理解API的含义熟练使用String类的常用方法理解重写父类方法的意义能够说出String类的特点课程任务讲解Object类的常用方法讲解String类的常用方法讲解String类的特点目录CONTENTS数学类1Object2String3包装类4日期日历类501ObjectAPI概述API(ApplicationProgrammingInterface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。

目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码,或理解内部工作机制的细节。Object类概述Object类是Java语言中的根类,即所有类的父类。它描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。Object常用方法protectedObjectclone():克隆方法booleanequals(Objectobj):比较对象是否相等Class<?>getClass():获取对象的实际类型inthashCode():获取对象的哈希码值StringtoString():转换为字符串现场编程演示案例:Object常用方法02StringString概述java.lang.String类代表字符串。Java程序中所有的字符串文字(例如"abc")都可以被看作是实现此类的实例。类String中包括用于检查各个字符串的方法,比如用于比较字符串,搜索字符串,提取子字符串以及创建具有翻译为大写或小写的所有字符的字符串的副本。String构造方法publicString(Stringoriginal)把字符串数据封装成字符串对象publicString(char[]value)把字符数组的数据封装成字符串对象publicString(char[]value,intoffset,intcount)把字符数组中的一部分数据封装成字符串对象现场编程演示案例:String构造方法String类的特点直接赋值也可以是一个对象(定义一个字符串变量)字符串是一种比较特殊的引用数据类型,直接输出字符串对象输出的是该对象中的数据字符串的值在创建后不能被更改字符串是被共享的String判断功能方法booleanequals(Objectobj):比较字符串的内容是否相同booleanequalsIgnoreCase(Stringstr):比较字符串的内容是否相同,忽略大小写booleanstartsWith(Stringstr):判断字符串对象是否以指定的str开头booleanendsWith(Stringstr):判断字符串对象是否以指定的str结尾现场编程演示案例:String判断功能方法String获取功能方法intlength():获取字符串的长度,其实也就是字符个数charcharAt(intindex):获取指定索引处的字符intindexOf(Stringstr):获取str在字符串对象中第一次出现的索引,没有返回-1Stringsubstring(intstart):从start开始截取字符串到字符串结尾Stringsubstring(intstart,intend):从start开始,到end结束截取字符串;包括start,不包括end现场编程演示案例:String获取功能方法课程案例案例名称:字符串的遍历需求描述:输出字符串中的每一个字符使用技能:for循环、根据索引获取字符演示案例:字符串的遍历现场编程课程练习统计字符串中大写、小写及数字字符个数时间:10分钟现场练习String转换功能方法char[]toCharArray():把字符串转换为字符数组StringtoLowerCase():把字符串转换为小写字符串StringtoUpperCase():把字符串转换为大写字符串现场编程演示案例:String转换功能方法课程练习键盘录入一个字符串,把该字符串的首字母转成大写,其余为小写时间:10分钟现场练习去除空格和分割功能方法Stringtrim()去除字符串两端空格String[]split(Stringstr)按照指定符号分割字符串现场编程演示案例:去除空格和分割功能方法课程练习把数组中的数据按照指定格式拼接成一个字符串时间:10分钟现场练习替换功能方法Stringreplace(charoldChar,charnewChar)替换字符串中的单个字符Stringreplace(CharSequenceoldStr,CharSequencenewStr)替换字符串中的指定内容现场编程演示案例:替换功能方法课程练习键盘输入数据,将数据中的字符@,替换成*时间:10分钟现场练习03包装类包装类概述在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的。而程序开发中,我们需要把字符串数据,根据需求转换成指定的基本数据类型,如年龄需要转换成int类型,考试成绩需要转换成double类型等。那么,想实现字符串与基本数据之间转换怎么办呢?Java中提供了相应的对象来解决该问题,基本数据类型对象包装类:java将基本数据类型值封装成了对象。可以提供更多的操作基本数值的功能。包装类对应关系包装类对应关系byteshortintlongfloatdoublecharbooleanByteShortIntegerLongFloatDoubleCharacterBoolean自动装箱和拆箱自动拆箱:对象转成基本数值自动装箱:基本数值转成对象演示案例:自动装箱和拆箱现场编程包装类特性Byte类中,所有的对象地址都是固定的。Short类中,如果是-128到127范围内,那么对象地址是固定的,如果超出范围,那么会创建新的对象Long类中,如果是-128到127范围内,那么对象地址是固定的,如果超出范围,那么会创建新的对象Float和Double类中,是直接创建新的对象Character类中,如果小于等于127,返回固定对象,其他情况直接创建新的对象04数学类数学类概述Math(数学)类是包含用于执行基本数学运算的方法的数学工具类,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法,并且一般不会创建对象。数学类常用方法static

double

abs(doublea):绝对值static

double

ceil(doublea):向上取整staticdoublefloor(doublea):向下取整staticdoublemax(doublea,doubleb):最大值staticdoublemin(doublea,doubleb):最小值staticdoublepow(doublea,doubleb):获取第一个参数的第二个参数次幂的值staticdoublerandom():获取随机值staticlonground(doublea):四舍五入现场编程演示案例:数学类常用方法05日期日历类Date类类Date表示特定的瞬间,精确到毫秒。可以将毫秒值转换为日期对象。可以将日期对象转换为对象的毫秒值。补充:计算机元年指1970年1月1日0时0分0秒DateFormat类DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如SimpleDateFormat类)允许进行格式化(也就是日期->文本)、解析(文本->日期)和标准化。通过这个类可以帮我们完成日期和文本之间的转换。DateFormat可帮助进行格式化并解析任何语言环境的日期。对于月、星期,甚至日历格式(阴历和阳历),其代码可完全与语言环境的约定无关。DateFormat类常用方法Stringformat(Datedate):将Date对象转换成StringDateparse(Stringsource):将String转换为Date现场编程演示案例:DateFormat类常用方法Calendar类Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,将语言敏感内容处理好,再返回子类对象。Calendar类常用方法intget(intfield):返回给定日历字段的值staticCalendargetInstance():使用默认时区和语言环境获得一个日历对象DategetTime():返回一个表示此Calendar时间值的Date对象voidset(intfield,intvalue):将给定的日历字段设置为给定值现场编程演示案例:Calendar类常用方法课程总结通过API的学习,培养学生动手查看API的能力,提高了学生的自学能力。讲解Object类,学生对于Java继承树有了初步的认识。String类是工作中使用频率很高的类,一定要熟练应用其中的常用方法。包装类在后面学习的集合中会经常用到,要理解自动装箱和拆箱的含义。数学类能够提高开发效率。日期日历类中一定要注意日期转换的格式。课程作业课下作业结合API的讲解,体会面向对象思想。输入一个字符串,统计每一个字符出现的次数。输入一个字符串和一个数字,数字表示字节的个数,按照指定的字节个数截取字符串(使用GBK编码格式,如果出现乱码,那么舍弃乱码的内容)。预习作业Java中的异常分类。Java中的集合继承结构。谢谢异常&集合&映射Java核心基础课程回顾及作业点评回顾Object类的常用方法回顾String类的常用方法回顾包装类的特点回顾日期日历的常用方法预习检查提问Java中的异常集合的继承关系和使用方式课程目标熟练定义和使用异常熟练使用集合的常用方法理解集合数据结构的特点熟练使用映射的常用方法课程任务自定义异常讲解集合的使用和特点讲解集合的继承关系讲解映射的使用和特点目录CONTENTS映射1异常2集合301异常异常概述在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。异常的分类异常的根类是Throwable,其下有两个子类:Error与Exception,平常所说的异常指Exception,Exception分为:编译时异常:编译时无法编译通过。除了运行时异常其它的都是编译时异常,编译期必须处理,否则编译失败运行时异常:RuntimeException或者它的子类异常,编译期无需处理抛出异常throw在java中,提供了一个throw关键字,它用来抛出一个指定的异常对象throw用在方法内,用来抛出一个异常对象,将这个异常对象传递到调用者处,并结束当前方法的执行使用格式:thrownew异常类名(参数);现场编程演示案例:抛出异常throw声明异常throws如果方法内通过throw抛出了编译时异常,而没有捕获处理,那么必须通过throws进行声明,让调用者去处理。声明异常格式:修饰符返回值类型方法名(参数)throws异常类名1,异常类名2…{}throws用于进行异常类的声明,若该方法可能有多种异常情况产生,那么在throws后面可以写多个异常类,用逗号隔开。现场编程演示案例:声明异常throws自定义异常格式:class异常名extendsException{//或继承RuntimeException public异常名(){}

public异常名(Strings){super(s);}}现场编程演示案例:自定义异常捕获异常Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理。捕获异常格式:try{ //需要被检测的语句。}catch(异常类变量){//参数。

//异常的处理语句。}finally{ //一定会被执行的语句。}捕获异常特点如果出现了多个异常,并且每一个异常的处理方式都不一样,可以多个catch分别捕获分别处理如果所有异常的处理方式都一样,可以捕获这些异常的父类,然后进行统一的处理。从JDK1.7开始,如果异常的处理进行了分组,那么同一组异常之间用|隔开,从而进行分组。注意:捕获异常时需要先捕获子类后捕获父类02集合集合概述集合是Java数据结构的实现。Java的集合是java.util包中的重要内容,它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再以一个类的形式提供。集合类是可以往里面保存多个对象的类,存放的是对象,不同的集合类有不同的功能和特点,适合不同的场合,用以解决一些实际问题。集合的顶级接口集合中的顶级接口是CollectionCollection有很多子接口和实现类,目前阶段重点学习List接口、Set接口和Queue接口,其中每一个接口都有自己的子接口和实现类Collection常用方法boolean

add(Ee):添加元素voidclear():清空元素booleancontains(Objecto):判断是否包含元素booleanequals(Objecto):比较元素是否相等booleanisEmpty():判断集合是否为空booleanremove(Objecto):删除指定元素intsize():集合的长度Object[]toArray():转换为数组现场编程演示案例:Collection常用方法集合的子接口ListList接口继承Collection接口,有四大实现类:ArrayList、LinkedList、Vector和StackList接口的特点有序的集合具有索引允许存储重复的元素List接口常用方法booleanadd(intindex,Eelement):向指定索引处插入元素Eget(intindex):获取指定索引处的元素Eremove(intindex):删除指定索引处的元素Eset(intindex,Eelement):设置指定索引处的元素List<E>subList(intfromIndex,inttoIndex):根据索引截取子列表intindexOf(Objecto):获取指定元素在列表中第一次出现的索引intlastIndexOf(Objecto):获取指定元素在列表中最后一次出现的索引现场编程演示案例:List接口常用方法ArrayListArrayList是List接口的实现类。ArrayList内部的数据结构是数组。ArrayList查询速度快,增删速度慢,是异步线程不安全的。ArrayList默认初始容量是10,每次默认扩容是在当前容量基础上增加一半的容量。ArrayList的构造方法可以指定其初始容量。ArrayList是内存连续的。LinkedListLinkedList是List接口的实现类。LinkedList内部的数据结构是链表。LinkedList查询速度慢,增删速度快,是异步线程不安全的。LinkedList是内存不连续的VectorVector是List接口的实现类。Vector内部的数据结构是数组。Vector查询速度快,增删速度慢,是线程安全的。Vector默认初始容量为10,每次扩容为原来容量的一倍。迭代器迭代器常用于遍历集合。常用方法:booleanhasNext():判断是否有下一个元素Enext():获取下一个元素defaultvoidremove():删除元素StackStack称之为栈,是Vector的子类Stack遵循后进先出的原则(LIFO)入栈就是向栈中存元素,把元素存储到栈的顶端位置,栈中已有元素依次向栈底方向移动一个位置,又称之为压栈出栈就是从栈中取元素,把栈的顶端位置元素取出,栈中已有元素依次向栈顶方向移动一个位置,又称之为弹栈常用方法:Epeek():获取栈顶元素Epop():获取并删除栈顶元素voidpush(Eitem):压栈intSearch(Objecto):搜索元素Set接口Set接口称之为散列集合,是Collection接口的子接口Set接口中的元素不可以重复。HashSet、LinkedHashSet是Set接口的实现类HashSetHashSet特点:底层基于HashMap结构存储不重复的元素元素位置可能发生改变无序线程不安全HashSet默认初始容量为16,默认加载因子为0.75HashSet可以指定初始容量,但是底层经过计算保证容量一定是2的N次方的形式LinkedHashSetLinkedHashSet继承HashSetLinkedHashSet是Set接口的实现类LinkedHashSet特点:有序的集合底层数据结构是哈希表和双向链表线程不安全的

温馨提示

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

评论

0/150

提交评论