




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、javajava1.语言基础2.面向对象3.类的应用4.输入与输出5.线程及线程应用6.网络编程1 语言基础本章是讲述java语言的基础语法,要求学生一定掌握。课程内容:1.1 java语言入门1.2 标识符、关键字和数据类型1.3 运算符,表达式和语句1.4 数组1.5 方法的封装2 面向对象本章是介绍java面向对象的概念,讲解面向对象的封装性,多态性和继承性,以及抽象类、嵌套类。课程内容:2.1 面向对象的基本概念2.2 类与封装2.3 static关键字2.4 内部类2.5 类的继承2.6 final关键字2.7 抽象类与接口2.8 类的多态2.9 异常2.10 包3 类的应用本章是讲
2、解各种常用类的使用课程内容:3.1 string类3.2 stringbuffer类3.3 calendar类3.4 基本类型对象包装类4 线程及线程应用本章是了解线程的概念,掌握线程的控制,可以灵活运用线程课程内容:4.1 线程的概念4.2 线程的使用4.3 线程同步5 输入与输出本章是了解程序与文件系统的交互方式,可以直接对文件进行读写控制课程内容:5.1 file类5.2 字节流5.3 字符流5.4 编码5.5 随机文件6 网络编程本章是介绍通过类连接到www,然后讨论如何通过tcp/ip或udp协议在网络上的两个程序间建立连接并交换数据课程内容:6.1 网络概述6.2 inetaddr
3、ess 类6.3 udp网络程序6.4 tcp网络程序7 数据结构本章是了解java的数据结构,能够灵活应用在游戏编程中课程内容7.1 链表7.2 堆栈7.3 队列7.4 递归7.5 排序1 语言基础1 语言基础本章是讲述java语言的基础语法,要求学生一定掌握。课程内容:1.1 java语言入门1.2 标识符、关键字和数据类型1.3 运算符,表达式和语句1.4 数组1.5 方法的封装1.1 java语言入门1.1.1 java特点1.1.2 java语言编程过程1.1.3 java的开发环境1.1.4 java程序开发基本过程1.1.5 java虚拟机的运行过程1.1.1 java特点简单面
4、向对象 与平台无关健壮性(java的强类型机制、异常处理、内存的自动收集等)1.1.2 java语言编程过程java源程序(*.java)java字码文件(*.class)java编译程序java虚拟机(jvm)执行window下的字节码解释程序linux下的字节码解释程序window操作系统linux操作系统1.1.3 java的开发环境 java开发环境的搭建(1)什么是jdk(2)设置环境变量1.1.3 java的开发环境什么是jdksun公司将java的开发工具和运行环境所涉及到的应用程序和相关文件放在一起,称之为jdk(java development kit)jdk版本(1)j2e
5、e(java 2 platform enterprise edition) (2)j2se(java 2 platform standard edition) (3)j2me(java 2 platform micro edition) 下载地址:http:/1.1.3 java的开发环境jdk的安装目录jdk的目录结构(1)bin目录javacjava(2)demo目录1.1.3 java的开发环境何为环境变量: 在操作系统中定义,可以被操作系统上运行的的应用程序访问的变量查看环境变量:在命令行窗口中直接键入set查看所有的环境变量:键入set + 变量名查看该变量的值我的电脑属性高级环境变
6、量: 关于用户变量和系统变量中都进行设置的变量1.1.3 java的开发环境设置环境变量在命令行窗口中键入set 变量名=变量值 设置环境变量(不能键入空格),键入set 变量名=,取消环境变量(注:在命令行窗口中设置的环境变量只对该命令行窗口起作用)在我的电脑属性高级环境变量(注:在这里设置的环境变量对以后启动的所有应用程序和命令行窗口都起作用,但不会影响已启动的应用程序和命令行窗口,在用户窗口中设置的环境变量需要注销重新登陆后才起作用)1.1.3java的开发环境环境变量path当我们执行某个命令时,操作系统首先会在当前目录下查找该命令,如果没有找到这个命令程序,操作系统则会沿着path中
7、所指定的目录依次查找,以最先找到的为准查看当前使用的jdk版本 :java version 1.1.4 java程序开发基本过程java编程基础编译java程序运行java程序java注释使用java文档1.1.4 java程序开发基本过程java编程基础java的基本语法格式:所有的java程序都应该写在类中 class 类的修饰符:public和默认修饰符1.1.4 java程序开发基本过程编译java程序javac运行java程序java1.1.4 java程序开发基本过程java注释单行注释 /多行注释 /* */文档注释 /* */1.1.5 java虚拟机的运行过程:加载代码:类装
8、载器(classloader)校验代码:字节码验证器(byte code verifier)执行代码:解释器(interpreter)1.2 标识符、关键字和数据类型1.2.1 标识符1.2.2 关键字1.2.3 数据类型1.2.4 常量1.2.5 变量1.2.6 类型转换1.2.1 标识符标识符命名规则定义:java对各种变量,方法和类等要素命名时使用的字符序列称为标识符规则:标识符应以字母,下划线,美元符号开头标识符应以字母,下划线,美元符号或数字组成标识符对大小写敏感,长度无限止合法的标识符: indentifier、username、user_name、_username、$usern
9、ame非法的标识符:class、98.3、hello world 1.2.2 关键字abstractdoimplementprivatethisbooleandoubleimportprotectedthrowbreakelseinstanceof publicthrowsbyteextendintreturntransientcasefalseinterfaceshorttruecatchfinallongstatictrycharfianllynativestrictfpvoidclassfloatnewsupervolatilecontinuefornullswitchwhiledefa
10、ultif package synchronized注:java 无sizeof ,goto, const 关键字,但不能用goto const作为变量名1.2.3 数据类型数据类型基本数据类型引用数据类型类接口数组数值型字符型(char)布尔型(boolean)整数型(byte shortint long)浮点型(float,double)1.2.4 常量常量:就是持续不变的值常量类型:整型常量:十进制(12) ,十六进制 (0 x12),八进制(012)长整型常量:13l浮点数常量: (1) 单精度浮点数 5.1f,.4f ,2e3f ,0f(2) 双精度浮点数 5.1,.4,2e-3,0
11、d布尔常量:true和false 1.2.4 常量字符常量 : a , 8, u0027 r表示接受键盘输入,相当于按下了回车键;n是换行;t是制表符,相当于table键;b是退格键,相当于back space;是单引号,而“是双引号;是一个斜杠“”。字符串常量 :“hello world“,”123”, welcome nxxx“null常量 :null常量只有一个值,用null表示,表示对象的引用为空 1.2.5 变量变量概念变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。先声明,再使用变量的元素 变量名,变量值,变量的作用范围变量定义int x=0,y; y=x+3; x和
12、y就是变量1.2.5 变量变量字节大小及有效取值范围byte占用一个字节,数字大小为-2727-1short占用两个字节,数字大小为-215215-1 int占用四个字节,数字大小为-231231-1 long占用八个字节,数字大小为-263263-1 float占用四个字节,数字大小为1.4e-453.4e+38 , -1.4e-45-3.4e+38 。用二进制的指数形式表示一个浮点数的格式,如:101*22 , 101*2-3double占用八个字节,数字大小为4.9e-3241.7e+308, -4.9e-324-1.7e+308 。char占两个字节,数字大小为0216-1,是unic
13、ode编码。字符的本来面目,我们为什么可以直接将一个数字赋给字符变量。boolean占一个字节,有两种取值,true和false。1.2.5 变量变量作用域变量要先定义,后使用,但不是在变量定义后的语句中一直都能使用前面定义的变量。比如:可以用大括号将多个语句包起来形成一个复合语句,则复合语句中定义的变量只能在定义它的复合语句中使用。局部变量在方法或方法中的代码块中定义的变量称为局部变量成员变量在方法外,在类内部定义的变量1.2.5 变量局部变量的定义在方法或方法中的代码块中定义的变量称为局部变量,局部变量在方法或代码块被执行时创建,在方法或代码块结束时被销毁。局部变量的初始化局部变量在进行取
14、值操作前必须被初始化,否则会出现编译错误1.2.6 类型转换自动类型转换(也叫隐式类型转换)byte b = 3;int x = b; /b被自动转换为int型强制类型转换(也叫显式类型转换) byte a; int b; a = (byte)b; /b被强制转换为byte型 1.3 运算符,表达式和语句1.3.1 运算符1.3.2 表达式1.3.3 控制语句1.3.1 运算符何为运算符运算符是一种特殊符号,用以表示数据的运算、赋值和比较,一般由一至三个字符组成 。运算符类型算术运算符赋值运算符比较运算符逻辑运算符位运算符移位运算符1.3.1 运算符1.3.1 运算符算术运算符的注意问题“+”
15、除字符串相加功能外,还能把非字符串转换成字符串 ,如: “x”+123;的结果是“x123” 。 如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论了。对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 int x=3510;x=x/1000*1000;实际运行结果是3000 ,想想为什么? 1.3.1 运算符赋值运算符1.3.1 运算符赋值运算符注意:注1:在java里可以把赋值语句连在一起,如: x = y = z = 5 ; 在这个语句中,所有三个变量都得到同样的值5。注2 :x += 3等效于x = x + 3
16、,等于*= ,-=,/=依此类推。1.3.1 运算符比较运算符1.3.1 运算符比较运算符注意:注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。注2:比较运算符“=”不能误写成“=” 1.3.1 运算符逻辑运算符1.3.1 运算符逻辑运算符注意点注1:逻辑运算符用于对boolean型结果的表达式进行运算,运算的结果都是boolean型 。注2:“&”和“&”的区别在于,如果使用前者连接,那么无论任何情况,“&”两边的表达式都会参与计算。如果使用后者连接,当“&”的左边为false,则将不会计算其右边的表达式。“|”和“|”的区别与“&”和“&”的区别一样。1
17、.3.1 运算符位运算符任何信息在计算机中都是以二进制的形式保存的,&,|,除了可以作为逻辑运算符,也可以做为位算符,它们对两个操作数中的每一个二进制位都进行运算。只有参加运算的两位都为1,&运算的结果才为1,否则就为0。只有参加运算的两位都为0,|运算的结果才为0,否则就为1。只有参加运算的两位不同,运算的结果才为1,否则就为0。1.3.1 运算符移位运算符 右移 无符号右移1.3.1 运算符移位运算的注意事项及小技巧移位运算符适用类型有byte、short、char、int、long对低于int型的操作数将先自动转换为int型再移位。对于int型整数移位ab,系统先将b对32取模,得到的结
18、果才是真正移位的位数。例如:a33和a1结果是一样的,a32的结果还是a原来的数字。对于long型整数移位时ab ,则是先将移位位数b对64取模。移位不会改变变量本身的值。如a1;在一行语句中单独存在,毫无意义 。x1的结果和x/2的结果是一样的,x2和x*4的结果也是一样的。总之,一个数左移n位,就是等于这个数乘以2的n次方,一个数右移n位,就是等于这个数除以2的n次方。请思考:如何用程序实现求2的x次方。答案:y = 110&b10表达式的运算顺序先按照运算符的优先级优先级相同的,按照约定的结合方向表达值的值和类型1.3.3控制语句条件控制语句循环控制语句特殊的循环流程控制1.3.3控制语
19、句条件控制语句if else 语句的语法:if(布尔表达式)语句或语句块if(布尔表达式)语句或语句块else if(布尔表达式)语句或语句块else语句或语句块1.3.3控制语句switch语句的语法switch(表达式1)case 常量1:语句break;case 常量2:语句break;default:语句break;1.3.3控制语句switch选择语句:switch(x)/x只能为int、byte、char、shortcase 1:system.out.println(“monday”);break;case 2:system.out.println(“tuesday”);break
20、;case 3:system.out.println(“wednesday”);break;default:system.out.println(“i dont know”);思考:无break的情况1.3.3控制语句for循环语句for(初始化表达式;布尔值测试表达式;更改表达式)语句或语句块;例:for(int i=0;i=10;i+)system.out.println(“i=”+i);1.3.3控制语句while循环while(布尔值)语句或语句块;注意:while表达式的括号后不能加“;”,否则会 造成不易察觉的无限循环1.3.3控制语句do while循环do语句或语句块;whil
21、e(布尔测试)注意:while表达式的括号后要加“;”1.3.3控制语句思考:while循环和do while循环的不同之处while循环先判断循环条件,再执行循环体do while循环先执行循环体,再判断循环条件1.3.3控制语句break与continue语句break:终止循环体中的执行语句和switch语句,跳转到当前循环的下一条语句continue:只能用于while、do while、for语句中,终止当前这次循环,执行下一次循环1.3.3控制语句特殊的循环流程控制break语句do语句;if(条件为真)break;语句while(布尔表达式);1.3.3控制语句特殊的循环流程控制
22、continue语句do语句;if(条件为真)continue;语句while(布尔表达式);1.4数组1.4.1 声明数组1.4.2 创建数组1.4.3 数组初始化1.4.4 数组中注意的问题1.4.5 多维数组1.4.1声明数组声明数组:数组类型 数组名int aaint aa1.4.2创建数组创建数组:数组名=new 类型名数组大小aa = new int10;数组元素:aa0、aa1、aa2aa91.4.3数组初始化int ia =1,2,3,4; int ia=new int3,4,5; int a5;/声明数组时,不能指定其长度,编译时将出错 1.4.4数组中注意的问题空指针异常(
23、数组未初始化就使用数组中的元素)数组越界异常 如何得到数组长度 所有的数组的索引均从0开始1.4.4数组中注意的问题不能改变数组大小可以使用相同的引用变量去引用另一个全新的数组1.4.5多维数组多维数组,类似棋盘。java 中的多维数组,也就是数组的数组,1.4.5多维数组定义多维数组int xx;xx=new int3; xx0=new int3;xx1=new int2;1.4.5多维数组多维数组中元素的引用方式,如:x12。规则矩阵数组可以在一条语句中产生,如:int xx=new int23; 多维数组的静态初始化 ,如: int xx=3,2,7,1,5,6; 1.5方法的封装(功能
24、的封装)1.5.1 方法的封装格式1.5.2 方法调用的过程分析1.5.3 方法的调用1.5.4 方法的参数传递1.5.1方法的封装格式返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,.) 程序代码 return 返回值;形式参数:在方法被调用时用于接收外部传入的数据的变量。参数类型:就是该形式参数的数据类型。返回值:方法在执行完毕后返还给调用它的程序的数据。返回值类型:函数要返回的结果的数据类型。实参:调用函数时实际传给函数形式参数的数据。如何理解函数返回值类型为void的情况1.5.2方法调用的过程分析1.5.3方法的调用方法调用的几种不通情况使用return提前返回1.5
25、.4方法的参数传递基本数据类型的参数传递class passvaluepublic static void main(string args)int x =5;change(x);system.out.println(x);public static void change(int x)x = 3;1.5.4方法的参数传递方法的形式参数相当于方法中定义的局部变量方法的形式参数在方法调用结束时被释放,不会影响到主程序中同名的局部变量1.5.4方法的参数传递class passrefint x;public static void main(string args)passref obj = ne
26、w passref();obj.x = 5;change(obj);system.out.println(obj.x);public static void change(passref obj)obj.x = 3;小结1.1 java语言入门1.2 标识符、关键字和数据类型1.3 运算符,表达式和语句1.4 数组1.5 方法的封装2 面向对象2 面向对象本章是介绍java面向对象的概念,讲解面向对象的封装性,多态性和继承性,以及抽象类、嵌套类。课程内容:2.1面向对象的基本概念2.2类与封装2.3static关键字2.4内部类2.5类的继承2.6final关键字2.7抽象类与接口2.8异常2
27、.9包2.1 面向对象的基本概念2.1.1 面向对象2.1.2 对象2.1.3 类2.1.4 面向对象的定义2.1.4 oop词汇表2.1.1面向对象 面向对象(object oriented,oo)是当前计算机界关心的重点,它是90年代软件开发方法的主流面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、cad技术、人工智能等领域。 2.1.2对象 (1)对象。 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。 (2)对象的状
28、态和行为。 对象具有状态,一个对象用数据值来描述它的状态。 对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。 对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中 2.1.3类 类:具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。 类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。 类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。2.1.3类 类的结构。 在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般-具体结构关系,整体-部分结构关系。 一般具体结构称
29、为分类结构,也可以说是“或”关系,或者是“is a”关系。 整体部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。 2.2类与封装2.2.1 类与对象2.2.2 对象的创建、使用,比较2.2.3 匿名对象2.2.4 类设计2.2.5 实现类的封装性2.2.6 构造方法2.2.7 this引用2.2.8 方法的重载2.2.1类与对象类:类就是对某一事务的描述,是抽象的、概念上的定义,如:汽车设计图对象:对象是实际存在的该类事务的个体,也称为实例(instance),如:按汽车设计图设计出来的每一辆汽车2.2.1类与对象类可以将数据和方法封装在一起,数据表示类的属性,
30、方法表示类的行为class 类名成员属性(成员变量)成员方法2.2.1类与对象关于成员变量和局部变量同名的问题class personint age;void shout()int age = 60;system.out.println(“my age is ” + age);2.2.2对象的创建、使用,比较对象的创建:类名 对象名=new 类名();例:person p = new person();变量p是person对象的一个应用,在栈内存中通过new关键字创建的person对象在堆内存中2.2.2对象的创、使用,比较对象的使用:对象.属性对象.方法()例:class testperso
31、npublic static void main(string args)person p1 = new person();person p2 = new person();p1.age = 18;p1.shout();p2.shout();2.2.2对象的创建与使用对象只能在其有效的生命周期内被使用:当离开对象所在的代码块后,对象就会变成垃圾设置对象的引用为null,对象也会变成垃圾2.2.2对象的创建、使用,比较对象的比较有两种方式比较对象,即和equals()方法用于比较引用是否指向同一个对象equals()用于比较两个对象的内容是否一致2.2.3匿名对象未指定应用的对象即匿名对象per
32、son p = new person();p.shout();new person().shout();用匿名对象改写刚才的程序2.2.3匿名对象使用匿名对象的两种情况如果一个对象只需要进行一次方法调用,那么可以使用匿名对象将匿名对象作为一个参数传递给一个方法,如:public void getperson(person p);getperson(new person();2.2.4类设计识别类的一个简单经验就是寻找问题分析中的名词比如:在订单处理系统中有这样一些名词:订单(order)、送货地址(address)、货款(payment)、帐户(account)根据这些名词,我们就可以创建or
33、der、address、 payment、 account等类2.2.4类设计确定类中的方法(函数)通过寻找和名词相关的动词来确定方法比如:物品被添加进订单,订单被运送或取消货款被支付2.2.5实现类的封装性封装的定义封装的目的2.2.5实现类的封装性封装的定义将类的成员变量声明为private,再提供一个或多个public方法实现对该成员变量的修改或访问,这种方式称为封装2.2.5实现类的封装性封装的目的隐藏类的实现细节通过定制好的方法访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作(如对数据进行检查)便于修改,增强代码的可维护性2.2.6构造方法构造方法(构造函数、构造器)的定义构
34、造方法特征构造方法为什么类同名构造方法的细节2.2.6构造方法构造方法的定义:是类的一种特殊方法,java中每个类都有构造方法,它的功能是类的实例初始化状态2.2.6构造方法构造方法的特征它具有和类相同的名称它不包含返回值它不能在方法中用return语句返回一个值2.2.6构造方法构造方法为什么和类同名?因为构造方法有java编译器负责调用,编译器必须知道哪个是构造方法,采用与类同名的方式是最简单合理的person p3 = new person(“tom”,18);都干了什么1. 定义一个person类型的引用变量p3和一个person类的实例对象2. 调用构造方法,在构造方法内的代码执行前
35、,先对成员变量进行显式初始化,即执行 private string name = unknown;private int age = -1;3. 执行构造方法中的代码4. 把新创建的person对象赋给p3引用变量2.2.6构造方法构造方法的几个细节每个java类中至少有一个构造方法关于默认构造方法private修饰的构造方法2.2.7this引用this在类内部表示被构造的类对象本身使用this引用的几种情况2.2.8方法的重载(overload)何为方法重载构造器重载成员方法重载2.2.8方法的重载(overload)方法的重载就是在同一个类中允许同时存在一个以上的同名函数,只要它们的参数
36、个数或类型不同即可。1)方法名相同2)参数必须不同3)返回类型可以相同,可以不相同2.2.8方法的重载(overload)构造方法的重载成员方法的重载2.3 static关键字2.3.1 静态属性2.3.2 静态方法2.3.3 static方法的注意点2.3.4 静态代码块2.3.5 单态设计模式2.3.6 理解main方法的语法2.3.1静态属性静态成员变量static string country=“china”;静态成员变量也称作类成员静态成员变量的两种访问方式 类名.成员对象名.成员2.3.1静态属性不能把方法体内的变量声明为staticfun()static int i = 0;上诉
37、声明是错误的2.3.1静态属性static变量在类被载入时就存在,被所有的对象实例共享统计产生了多少类的实例对象:class aprivate static int count = 0;public a()count = count +1;2.3.2静态方法静态成员方法也称作类方法使用类名就可以直接调用static方法,不必创建类的实例对象2.3.3static方法的注意点static方法中只能调用同类中的其他static成员(变量或方法),不能访问类中的非静态成员static成员不能以任何方式引用this和super关键字main方法是static的2.3.4静态代码块类中可以使用不包含在任
38、何方法体中的静态代码块,当类被载入时,静态代码块自动被执行,且只执行一次,静态代码块常用来进行类属性的初始化2.3.4静态代码块class staticcodestatic string coutry;coutry = china;system.out.println(staiccode is loading);2.3.5单态设计模式单态设计模式:采取一定的方式保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法2.3.5单态设计模式public class testsingleprivate static final testsingle onlyone
39、 = new testsingle();public static testsingle gettestsingle()return onlyone;private testsingle();2.3.6理解main方法的语法由于java虚拟机需要调用类的main方法,所以是public的java虚拟机在执行main方法是不必创建对象,所以该方法是static的main方法有一个string类型的数组参数,用来保存执行java命令时传递给所运行的类的参数2.3.6理解main方法的语法public class testmainpublic static void main(string args
40、)for(int i=0;iargs.length;i+)system.out.println(argsi);使用java testmain 1 2 3 “11 22”运行2.4内部类2.4.1 内部类的定义2.4.2 内部类2.4.3 内部类的注意点2.4.4 关于static内部类2.4.5 内部类中的变量名2.4.6 内部类如何被外部类引用2.4.7 方法中的内部类2.4.1 内部类的定义在一个类内部定义的类就是嵌套类,也叫内部类或内置类内部类可以访问嵌套他的类的成员,包括private的成员,但内部类的成员却不能被嵌套它的类直接访问2.4.1 内部类的定义内部类的定义和普通类没什么区别
41、内部类可以被声明为private或protected的2.4.2 内部类class outerint outer_i =100;void test()inner in = new inner();in.display();class inner /int outer_i =90;void display()system.out.println(display: outer_i +outer_i);2.4.2 内部类class innerclassdemopublic static void main(string args)outer outer = new outer();outer.tes
42、t();2.4.2 内部类class outerint outer_i =100;void test()inner in = new inner();in.display();class innerint y=10;void display()system.out.println(display: outer_i +outer_i);2.4.2 内部类void showy()system.out.println(y);2.4.3内部类的注意点内部类可以访问它的外部类的成员,但内部类的成员只有在内部类的范围之内可知,不能被外部类使用2.4.4 关于static内部类如果用static修饰一个内部
43、类,这个类就相当于一个外部定义的类static内部类中可声明static成员,非static内部类中不能声明static成员static内部类不能使用外部类的非static成员变量2.4.4 关于static内部类class outerint outer_i =100;void test()inner in = new inner();in.display();static class innervoid display()system.out.println(display: outer_i +outer_i);2.4.5 内部类中的变量名方法的局部变量、内部类的成员变量和外部类的成员变量同
44、名的情况public class outerprivate int size;public class innerprivate int size;2.4.5 内部类中的变量名void display(int size)size+;/display的形式参数this.size+;/inner类的成员变量outer.this.size+;/outer类的成员变量2.4.6 内部类如何被外部类引用class outerprivate int size = 10;public class innerpublic void display()system.out.println(+size);2.4.
45、6 内部类如何被外部类引用public class testinnerpublic static void main(string args)outer outer = new outer();outer.inner inner = outer.new inner();inner.display();2.4.7方法中的内部类内部类并非只能在类里定义,也可以在几个程序块的范围之内定义内部类。如:在方法中,或在for循环体内2.4.7方法中的内部类class outerprivate int outer_i = 100;void test()for(int i=0;i5;i+)class inne
46、rvoid display()system.out.println(display: outer_i +outer_i); inner inner = new inner(); inner.display(); 2.4.7方法中的内部类class innerclassdemopublic static void main(string args)outer outer = new outer();outer.test();2.5类的继承2.5.1 类继承的实现2.5.2 类继承的内容2.5.3 方法的覆盖2.5.4 super关键字2.5.5 object类2.5.1类继承的实现通过继承可以简
47、化类的定义java只支持单继承,一个子类只能有一个父类class subclass extends superclass2.5.2类继承的内容子类继承父类非私有的成员变量和成员方法,但不继承父类的构造方法,在子类的构造方法中可以用super(参数列表)调用父类的构造方法2.5.2类继承的内容如果子类的构造方法中没有显式地调用父类的构造方法,也没有使用this关键字调用重载的其他构造方法,则在产生子类的实例对象时,系统默认调用父类无参数的构造方法class student extends personpublic student()super();/默认调用2.5.3方法的覆盖在子类中可以根据需
48、要对从父类中继承的方法进行改造重写重写方法必须和被重写的方法具有相同的方法名称、参数类表和返回类型重写方法时不能使用比父类方法更严格的访问权限,如:父类的方法是public的,子类的就不能是private的2.5.4super关键字super调用父类的构造器super调用父类的成员2.5.5object类object类是所有类的父类,所有的java类都默认继承object类2.6 final关键字2.6.1 final关键字修饰类、属性和方法2.6.2 final注意点final 类不可被继承,也就意味着不能有子类final方法不可被改写final 属性在定义同时就要赋初始值,值被指定之后就不
49、可被替换2.7抽象类与接口2.7.1 抽象类定义2.7.2 抽象方法的定义规则2.7.3 接口2.7.4 instanceof操作符2.7.1抽象类定义abstract class 类名abstract 方法名(参数列表);abstract 方法名(参数列表);2.7.1抽象类定义java中可以定义不含方法体的方法,方法体的实现由子类去做,这样的方法就是抽象方法,包含抽象方法的类就是抽象类抽象类中可以由一个或多个抽象方法抽象方法必须用abstract来修饰,带有抽象方法的类必须都声明为抽象类2.7.2抽象方法的定义规则抽象类和抽象方法都必须用abstract修饰抽象类不能实例化,即不能用new
50、产生对象抽象方法只需声明不需实现带有抽象方法的类必须都声明为抽象类,抽象类的子类必须实现所有的抽象方法后才能被实例化,否则子类还是抽象类2.7.3接口如果一个抽象类中的所有方法都是抽象的,那么可以将其定义为接口接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,没有变量和方法的实现2.7.3接口接口继承接口用extends关键字interface animal extends runnervoid breathe();2.7.3接口一个类可以在继承一个父类的同时,实现一个或多个接口,extends必须在implements前class student extends person im
51、plements runner.2.7.3接口访问接口的成员变量类名.变量名对象名.变量名2.7.3接口接口小结实现一个接口就是要实现该接口的所有方法(抽象类除外)接口中的方法都是抽象的一个类可以实现多个接口,但只能继承一个类2.7.4 instanceof操作符instanceof判断一个类是否实现了某个接口,也可以判断一个实例对象是否属于一个类语法:对象 instanceof 类(接口)2.8异常2.8.1 何为异常2.8.2 try,catch2.8.3 throws、throw关键字2.8.4 常见异常类2.8.5 finally关键字2.8.6 异常的细节2.8.1何为异常异常定义了
52、程序中遇到的非致命错误,而不是编译时的语法错误,如:打开一个不存在的文件、数组越界等2.8.2try,catchtry中的代码抛出异常后,程序跳入catch代码块中执行try中发生异常的语句不会执行执行完catch中的代码后程序继续往下执行2.8.3throws、throw关键字强制调用语句使用try,catch包裹:在定义会抛出异常的代码时,加上throws关键字throw关键字2.8.4常见异常类arithmeticexception:在算术运算中发生的异常,如除以零nullpointerexception:变量还没有指向一个对象,就引用这个对象的成员arrayindexoutofboun
53、dsexception:数组越界2.8.5finally关键字trycatch语句后还可以有一个finally语句,finally语句中的代码块不管是否被捕获都要被执行2.8.5finally关键字捕获子类异常在前,捕获父类异常在后finally代码块始终会被执行(只有一种例外,在try代码块中使用了system.exit(0)2.8.6异常的细节一个方法被重写时,子类方法只能抛出该方法抛出的异常或是该异常的子类如果父类方法抛出多个异常,子类方法只能抛出那些异常的子集,不能抛出新的异常2.9包2.9.1 包机制2.9.2 父包和子包2.9.3 访问控制2.9.1包机制java引入包(packa
54、ge)机制,提供了类的多层命名空间,便于项目的管理2.9.1包机制包名必须在程序中通过package语句生成,不是把类放到某个文件夹下,这个文件夹就成了该类的包package语句必须为java源文件的第一条语句,每个源文件只能有一个package语句若无package语句,则为默认无包名2.9.1包机制如:java.sql.date,java.util.date若要在一个类中同时使用上述两个类,只能通过全限定名引用2.9.2父包和子包父包和子包在使用上没有任何关系,父包要调用子包中的类必须引用子包的全名,不能省略掉父包部分的包名当我们import一个包时,并不会import该包中 的子包2.9
55、.3访问控制类成员的访问控制:(1)private:只能在类的内部使用(2)默认访问:即成员方法或变量前没有访问控制符,可以被包中的其他类访问(3)protected:可以被包中的其他类访问,也可以被不同包中的子类访问(4)public:可以被所有的包访问默认访问:只能被同一包中的其他类访问2.9.3访问控制3 类的应用3 类的应用本章是讲解各种常用类的使用课程内容:3.1 string类3.2 stringbuffer类3.3 calendar类3.4 基本类型的对象包装类3.1 string类3.1.1 “+”3.1.2 equals和3.1.3 构造方法3.1.4 常用方法3.1.1 “
56、+”string s1 = x+4+6string s2 = 4+6+tt;3.1.2 equals和string s1=“hello”;string s2=“hello”;string s1 = new string(“hello”);string s2 = new string(“hello”);3.1.3 构造方法string() string(byte bytes) string(byte bytes, int offset, int length) string(char value) string(char value, int offset, int count) 3.1.4 常
57、用方法charat(int index) compareto(string anotherstring) comparetoignorecase(string str) copyvalueof(char data, int offset, int count) endswith() equals(object anobject) 3.1.4 常用方法equalsignorecase(string anotherstring) getbytes() indexof() startswith() substring(int beginindex) tochararray() tolowercase
58、() touppercase() trim() valueof() 3.2 stringbuffer类3.2.1 string与stringbuffer区别3.2.2 stringbuffer构造方法3.2.3 stringbuffer的常用方法3.2.1 string与stringbuffer区别string类对象的内容一旦被初始化就不能再改变stringbuffer类:内容可以改变的字符串,一旦通过stringbuffer类生成了最终想要的字符串,就该用stringbuffer.tostring方法将其转换成string类3.2.2 stringbuffer构造方法stringbuffer
59、() stringbuffer(charsequence seq) stringbuffer(int capacity) stringbuffer(string str) 3.2.3 stringbuffer的常用方法append(boolean b) capacity() delete(int start, int end) deletecharat(int index) indexof(string str) insert(int offset, boolean b) lastindexof(string str) length() replace(int start, int end,
60、string str) substring(int start, int end) trimtosize() 3.3 calendar类3.3.1 calendar 构造方法3.3.2 calendar 成员方法3.3.1 calendarcalendar构造方法calendar() calendar(timezone zone, locale alocale) 3.3.2 calendar calendar 成员方法add(int field, int amount) get(int field) getfirstdayofweek() getinstance()setfirstdayofw
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 五年级听力测试卷及答案
- 苗木销售合同(定制苗木)
- 《商业综合体课件解读》
- 重阳节的民俗与文化根基
- 肿瘤患者心理护理
- 房地产市场中的临时推广活动有效性分析
- 大数据在医学研究中的应用
- 病毒性肝炎患者治疗方案探讨
- 前沿技术驱动下的心理健康教育普及
- 结核病防治培训工作总结模版
- 观影会的策划活动方案
- 中医医术确有专长人员(师承学习人员)医师资格考核申请表
- 课题开题报告:核心素养导向下初中数学单元整体教学设计的实施策略研究
- 教师形体与礼仪知到智慧树章节测试课后答案2024年秋成都师范学院
- 泰兴市黄桥2025届中考化学模拟试卷含解析
- 中国佛教基础知识
- GB/T 45210-2025增材制造标准测试件增材制造系统几何成形能力评估
- DL-T 5876-2024 水工沥青混凝土应用酸性骨料技术规范
- 无处不在-传染病知到智慧树章节测试课后答案2024年秋南昌大学
- 《AIGC与电商营销技能实战(慕课版)》 教学大纲
- 应用PDCA降低药占比
评论
0/150
提交评论