Java程序设计项目化教程 课件全套 林胜青 项目1-8 认识Java -图形用户界面处理_第1页
Java程序设计项目化教程 课件全套 林胜青 项目1-8 认识Java -图形用户界面处理_第2页
Java程序设计项目化教程 课件全套 林胜青 项目1-8 认识Java -图形用户界面处理_第3页
Java程序设计项目化教程 课件全套 林胜青 项目1-8 认识Java -图形用户界面处理_第4页
Java程序设计项目化教程 课件全套 林胜青 项目1-8 认识Java -图形用户界面处理_第5页
已阅读5页,还剩277页未读 继续免费阅读

下载本文档

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

文档简介

项目一

认识Java讲师:Java程序设计项目化教程授课教师:任务一Java的产生以及发展特点

任务二Java的开发工具与环境任务三Java程序的基本结构项目小结思考与练习目录Java的产生以及发展特点Part1Java的前世今生Java是由SunMicrosystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。用Java实现的HotJava浏览器(支持Javaapplet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Javaapplet。另一方面,Java技术也不断更新。

Java编程的关键概念面向对象分布式简单化多线程安全平台独立性5过程化编程着重于顺序。6过程化编程7面向对象8分布式使用引用代替内存指针。boolean数据类型有true或false值。自动管理内存。9简单化10多线程11安全12依赖于平台的程序13依赖于平台的程序14依赖于平台的程序Java的开发工具与环境Part2Java应用程序1617开发与运行环境18JRE=JVM+JavaSE标准类库JDK=JRE+开发工具集(例如Javac编译工具等)开发与运行环境Step1:JDK安装(注:Oracle官网根据操作系统版本下载)Java环境变量配置Step2:打开我的电脑--属性--高级--环境变量Java环境变量配置Step3:新建系统变量JAVA_HOME和CLASSPATH

变量名:JAVA_HOME

变量值:C:\ProgramFiles\Java\jdk1.7.0

变量名:CLASSPATH

变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

其中变量值为你自己安装jdk的文件目录这里要注意。Java环境变量配置Step4:选择“系统变量”中变量名为“Path”的环境变量,双击该变量,把JDK安装路径中bin目录的绝对路径,添加到Path变量的值中,并使用半角的分号和已有的路径进行分隔。

变量名:Path

变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

这是java的环境配置,配置完成后直接启动eclipse,它会自动完成java环境的配置Java环境变量配置Step5:现在测试环境变量的配置成功与否。在DOS命令行窗口输入“javac”,输出帮助信息即为配置正确。如图:Java环境变量配置打开记事本,编写HelloWorld.java第一个程序HelloWorld【查看】讲义HelloWorld.javajavacHelloWorld.java第一个程序HelloWorldjavaHelloWorld第一个程序HelloWorld

1/Eclipse的简介工欲善其事,必先利其器EclipseJava开发利器

1/Eclipse的简历点击此处添加标题目前最新的版本Eclipse

Neon

1/Eclipse的界面介绍点击此处添加标题

1/Eclipse上第一个程序试一试

1/Eclipse的常用快捷键Alt+/

提供内容的帮助记不全方法类属性最常用Ctrl+/

为每行或者选择部分添加注释

调试有用Ctrl+D

删除当前行

最喜欢的快捷键之一Ctrl+Shift+R

快速查找资源

免得左边找Ctrl+Q

快速定位到最后一个编辑的地方Ctrl+O

显示类中方法属性和大纲查找bug时非常有用(函数列表)Ctrl+F查找Alt+↓

当前行和下一行相互交换位置Ctrl+Shift+P

定位到对于的匹配符(譬如{})Ctrl+Shift+F最常用

格式化某段代码不选择某段代码则格式化化整个Java文件

1/Eclipse的常用快捷键研读代码经常用的Ctrl+O

切换查看方法(当前查找类成员)

Ctrl+T

看继承关系重构最常用的快捷键:

Alt+Shift+R

重命名(是变量和类的Rename,比手工方法能节省很多劳动力)

Alt+Shift+M抽取方法(重构里面最常用的方法之一,尤其是对一大堆泥团代码有用)Java程序的基本结构Part3

3/程序的流程控制>>

顺序结构

循环结构

选择结构

3/程序的流程控制顺序结构分支语句if语句switch语句if语句语法 if(<布尔表达式>) <语句或语句块>例如:if(x<10)System.out.println("Areyoufinishedyet?");推荐写法if(x<10){System.out.println("Areyoufinishedyet?");}if-else语句语法if(<布尔表达式>) <语句或语句块>else <语句或语句块>例如:if(x<10){System.out.println("Areyoufinishedyet?");}else{System.out.println("Keepworking...");}复杂的if-else语句如果需要进行一系列的条件检查,可以用一连串的if-else-ifif(<布尔表达式>) <语句或语句块>elseif(<布尔表达式>) <语句或语句块>else <语句或语句块>例如:intcount=getCount();//类中定义的方法if(count<0){System.out.println("Error:countvalueisnegative.");}elseif(count>getMaxCount()){System.out.println("Error:countvalueistoobig.");}else{System.out.println("Therewillbe"+count+"peopleforlunchtoday.");}分支语句如果需要进行一系列的条件检查,可以用一连串的if-else-ifif(<布尔表达式>) <语句或语句块>elseif(<布尔表达式>) <语句或语句块>else <语句或语句块>例如:intcount=getCount();//类中定义的方法if(count<0){System.out.println("Error:countvalueisnegative.");}elseif(count>getMaxCount()){System.out.println("Error:countvalueistoobig.");}else{System.out.println("Therewillbe"+count+"peopleforlunchtoday.");}switch语句常规的switch语句示例:switch(carModel){case‘D’://DeluxeaddAirConditioning();addRadio();addWheels();addEngine();break;case‘S’://StandardaddRadio();addWheels();addEngine();break;default:addWheels();addEngine();}switch语句switch语句中的break语句可以省略,但这会导致在执行了相应的case语句块后,将继续执行其后紧邻的语句块。例如:switch(carModel){case‘D’://DeluxeaddAirConditioning();//向下通过case‘S’://StandardaddRadio();//向下通过default:addWheels();addEngine();}项目二Java编程基础讲师:Java程序设计项目化教程授课教师:任务一

标识符与关键字

任务二

数据类型任务三

变量和常量任务四

运算符与表达式任务五

流程控制语句任务六Java程序的注释用法项目小结思考与练习目录标识符与关键字Part1Java标识符Java标识符是Java语言中用于命名变量、常量、函数、语句块的字符序列,由SunMicrosystems公司于1995年5月推出的Java语言规范定义。Java标识符由字母、数字、下划线、美元符号组成,首字符不能为数字且区分大小写,禁止使用Java关键字。命名规范要求类与接口名采用首字母大写的驼峰式命名,方法名首字母小写,常量名全大写并用下划线分隔,变量名需见名知义。这些规则保障了代码的可读性和规范性。

Java关键字Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。

Java关键字数据类型Part2

2/Java的变量类型数据类型基本数据类型引用数据类型数值型字符型(char)布尔型(boolean)整数类型(byte,short,int,long)浮点类型(float,double)类(class)接口(interface)数组整型默认:int浮点型默认:double

2/Java基本数据类型

2/Java的变量类型布尔型(boolean)通常用于逻辑运算和程序流程控制。该类型的值只能是true或false,表示真或假。不可以使用0或非0的整数来代替false和true,区分于C语言。

2/Java的变量类型整数类型(byte、short、int、long)整型常量的四种表示形式:二进制整数,0b或0B开头,如:inta=0B110;八进制整数,要求以0开头,如inta=012;十进制整数,如:inta=17;十六进制整数,要求0X或0x开头,如inta=0x12;Java语言的整型常量默认是int型,声明long型常量量后加上‘l’或‘L’:当给整数变量选择类型时,得根据实际需求和性能来做选择,如表示星期的取值是[1,7],那么选择byte是明智的选择,因为byte只占一个字节,能节约内存空间。。byteweekDay;

2/Java的变量类型浮点类型(float、double)double和float并不能表示一个精确的小数值;Java浮点类型常量有两种表示方式:十进制形式:例如:3.14,168.0,.618科学计数法形式:例如:3.14e2,3.14E2,1000E-2Java浮点型常量默认是double,则要声明一个常量为float型,则需在常量后加上f或F,double常量后面的D或d可省略,如:doublepi=3.14;//正确floatpi=3.14F;//必须加上f,才表示float类型的小数

2/Java的变量类型字符型(char)

char表示16位的Unicode字符,Java对字符采用Unicode字符编码。Unicode收集了世界上所有语言文字中的字符,是一种跨平台的编码方式,Java的字符占两个字节,可以表示一个汉字,字符常量使用单引号‘’括起来。char常量有4种表示形式:直接表示ASCII码表里的符号字符,格式如'◆'、'A','7';直接作为整数类型使用,但是数据范围在[0,65535],格式如97,但是打印出来的值依然是ASCII码表对于的值,如97打印出来是a。和

一样,只不过表示的是16进制的数,格式如'\uX',X表示16进制整数;如:97的16进制是61。那么‘\u0061’打印出来也是a。通过转义字符表示特殊字符常量,格式如'\n';

2/Java的变量类型字符型(char)

2/Java的变量类型字符串(String)首先得说明,String不属于基本数据类型;String是一个类,表示字符串(后面详讲);所谓字符串,就是一串字符,也就是0到多个字符连接在一起;字符串都得使用""

括起来的,连接字符串使用+;

2/Java的变量类型自动类型转换当把小数据范围类型的数值或变量赋给另一个大数据范围类型变量,系统可以完成自动类型转型。这好比把可装一斤水容器里的水倒进可以装两斤水的容器里,是没有一点问题的。boolean类型是不可以转换为其他基本数据类型。整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:正方向:byte、short、char→int→long→float→double正方向,小类型到大类型的转换会自动完成,自动类型转换,我们也称为“隐式类型转换”。byte、short、char之间不会相互转换,他们在计算时首先会转换为int类型。

2/Java的变量类型强制类型转换反方向:byte、short、char←int←long←float←double当大数据范围类型的数值或变量赋给另一个小范围类型变量时,此时系统不能自动完成,需要加上强制转换符,但这样的操作可能造成精度的降低或溢出,所以使用时要格外注意。这就好比把可装两斤水容器里的水倒在可以装一斤水的容器里,是可能造成水溢出的。强制类型转换,也称为“显示类型转换”,这种转换可能造成溢出和精度损失。刚刚说了整数是默认是int类型,比如5默认就是int类型,bytec=5这是符合强转类型转换条件的,可为什么没转呢?若直接把一个较小的整数常量(byte,short范围内)赋给一个byte或short变量,系统会自动把这个整数当做是byte或short类型,也就是存在隐式转换。变量和常量Part3

2/内存特点—变量1标题数字等都可以通过点击和重新输入进行更改,顶部“开始”面板中可以对字体、字号、颜色、行距等进行修改。建议正文8-14号字,1.3倍字间距。TEXTHERE123456

2/Java的变量变量的概念:内存中的一个存储区域该区域有自己的名称(变量名)和类型(数据类型)该区域的数据可以在同一类型范围内不断变化为什么要定义变量: 用来不断的存放同一类型的常量,并可以重复使用使用变量注意:变量的作用范围(一对{}之间有效) 初始化值定义变量的格式:数据类型变量名=初始化值;注:格式是固定的,记住格式,以不变应万变。

2/Java的常量java常量就是在程序中固定不变的值,是不能改变的数据。例如数字1、字符“a”、浮点数3.2等。在Java中,常量包括整型常量、浮点数常量、布尔常量、字符常量等。运算符和表达式Part4

3/Java的运算符运算符是一种特殊符号,用以表示数据的运算、赋值和比较,运算符共分以下几种:算术运算符赋值运算符比较运算符逻辑运算符位运算符

3/Java的运算符操作符描述例子+加法-相加运算符两侧的值A+B等于30-减法-左操作数减去右操作数A–B等于-10*乘法-相乘操作符两侧的值A*B等于200/除法-左操作数除以右操作数B/A等于2%取模-左操作数除右操作数的余数B%A等于0++自增:操作数的值增加1B++或++B等于21(区别)--自减:操作数的值减少1B--或--B等于19(区别)算术运算符

3/Java的运算符算术运算符操作符描述例子=简单的赋值运算符,将右操作数的值赋给左侧操作数C=A+B将把A+B得到的值赋给C+=加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数C+=A等价于C=C+A-=减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数C-=A等价于C=C-

A*=乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数C*=A等价于C=C*A/=除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数C/=A等价于C=C/A(%)=取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数C%=A等价于C=C%A&=按位与赋值运算符C&=2等价于C=C&2^=按位异或赋值操作符C^=2等价于C=C^2|=按位或赋值操作符C|=2等价于C=C|2

3/Java的运算符关系运算符运算符描述例子==检查如果两个操作数的值是否相等,如果相等则条件为真。(A==B)为假(非真)。!=检查如果两个操作数的值是否相等,如果值不相等则条件为真。(A!=B)为真。>

检查左操作数的值是否大于右操作数的值,如果是那么条件为真。(A>B)非真。<

检查左操作数的值是否小于右操作数的值,如果是那么条件为真。(A<B)为真。>=检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。(A>=B)为假。<=检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。(A<=B)为真。

3/Java的运算符逻辑运算符操作符描述例子&&称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。(A&&B)为假。||称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。(A||B)为真。!称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。!(A&&B)为真。

3/Java的运算符位运算符操作符描述例子&如果相对应位都是1,则结果为1,否则为0(A&B),得到12,即00001100|如果相对应位都是0,则结果为0,否则为1(A|B)得到61,即00111101^如果相对应位值相同,则结果为0,否则为1(A^B)得到49,即00110001〜按位补运算符翻转操作数的每一位,即0变成1,1变成0。(〜A)得到-61,即11000011<<

按位左移运算符。左操作数按位左移右操作数指定的位数。A<<2得到240,即11110000>>

按位右移运算符。左操作数按位右移右操作数指定的位数。A>>2得到15即1111>>>

按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。A>>>2得到15即00001111流程控制语句Part5

1/循环点击此处添加标题标题数字等都可以通过点击和重新输入进行更改,顶部“开始”面板中可以对字体、字号、颜色、行距等进行修改。建议正文8-14号字,1.3倍字间距。点击此处添加标题标题数字等都可以通过点击和重新输入进行更改,顶部“开始”面板中可以对字体、字号、颜色、行距等进行修改。建议正文8-14号字,1.3倍字间距。点击此处添加标题标题数字等都可以通过点击和重新输入进行更改,顶部“开始”面板中可以对字体、字号、颜色、行距等进行修改。建议正文8-14号字,1.3倍字间距。生活中的案例循环,想想我们的生活中哪些能和循环沾边呢?

1/循环你试试:打印1次HelloWorld你再试试:打印100次HelloWorld你再试试:打印100次第n次HelloWorld74

1/循环123while语句do-while语句for语句While(表达式)语句;intx=1;while(x<3){System.out.println("x="+x);x++;}

1/while作用:循环1到N次语法:do <语句或语句块>while(<布尔表达式>);例如:inti=0;do{ System.out.println(i+"

squaredis

"+(i*i)); i++;}while(i<10);76

1/do-while循环break语句—结束当前循环,并跳转到循环之后do{ …… if(<条件表达式1>){ break; } ……}while(<条件表达式2>);continue语句—结束当前循环,并跳转到循环之前do{ …… if(<条件表达式1>){ continue; } ……}while(<条件表达式2>);77

循环中break和continueJava程序的注释用法Part6对于Java注释我们主要了解三种:1,

//注释一行2,

/*......*/注释若干行3,

/**……*/文档注释79

Java注释THANKYOU谢谢项目三Java面向对象程序设计讲师:Java程序设计项目化教程授课教师:任务一

面向对象程序设计的基本概念

任务二

类的使用方法任务三

对象的创建与使用方法任务四

包的创建与使用方法项目小结思考与练习目录面向对象程序设计的基本概念

Part1

1/面向过程与面向对象计算机语言的发展向接近人的思维方式演变汇编语言[面向机器]C语言[面向过程]java语言[面向对象]

1/面向过程与面向对象面向对象是相对面向过程而言面向对象和面向过程都是一种思想面向过程强调的是功能行为面向对象将功能封装进对象,强调具备了功能的对象。面向对象是基于面向过程的。

1/面向过程与面向对象面向对象的特点 示例:1,煎饼果子 2,洗衣服面向对象设计把握一个重要的经验:谁拥有数据,谁就对外提供操作这些数据的方法。再牢牢掌握几个典型的案例就可以了:列车司机紧急刹车,售货员统计售货小票的金额,你把门关上了,金三胖发射银河三号火箭等。

1/理解面向对象开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。设计的过程:其实就是在管理和维护对象之间的关系。面向对象的特征:封装(encapsulation)继承(inheritance)多态(polymorphism)

1/面向对象开发、设计、特征类的使用方法Part2类与对象的关系如图图纸汽车汽车汽车可以理解为:类就是图纸汽车就是堆内存中的对象,创建的实体,那么实体的作用是什么?用来封装具体数据用的

2/类与对象猫类:classCat{}属性:颜色,灰色、白色、黑色年龄,30、10、12

名字,波斯猫、加菲猫、短尾猫方法:

睡Catcat1=newcat();cat1.age=3;="小白";cat1.color="白色";

2/类与对象

2/如何创建对象classCat{ //下面的就是类的成员变量/属性 intage; Stringname; Stringcolor; MastermyMaster;}

//引用类型,比如建个主人类classMaster{ intage; Stringname; Stringaddress;}publicstaticvoidmain(String[]args){ //创建一个猫对象 Catcat1=newCat(); cat1.age=3; ="小白"; cat1.color="白色";

//创建第二只猫 Catcat2=newCat(); cat2.age=100; ="小花"; cat2.color="花色";} }实例化对象成员变量赋值定义猫类、主人类【查看】讲义Demo02.java类和对象的区别和联系1、类是抽象的,概念的,代表一类事物,比如人类,猫类.2、对象是具体的,实际的,代表一个具体事物3、类对象的模板,对象是类的一个个体,实例

2/类和对象

2/类的定义package包名;class类名extends父类implements接口名{

成员变量;

构造方法;

成员方法;}

2/如何创建对象创建一个对象有两种方法1、先声明再创建1、对象声明:类名对象名2、对象创建:对象名=new类名()

2、一步到位法

类名对象名=new类名()

对象--如何访问(使用)对象的成员变量

对象名.变量名;//简单先这样理解,以后加下控制符此表达就不准确了。对象总是存在内存中的

2/成员变量思考题为了让大家加深印象,我们定义一个人类(Person)(包括名字、年龄)。用一步到位法去创建一个对象System.out.printlin(b.age);Persona=newPerson();a.age=10;="小明";Personb;b=a;

请问:b.age究竟是多少?

2/成员变量继续思考在明白对象是如何在内存中存在后,请大家再看看下面的思考题,请问会输出什么信息?Person1a=newPerson1();a.age=10;="小明";Person1b;b=a;System.out.println();b.age=200;System.out.println(a.age);输出“小明”输出“200”

2/成员方法人类:除了有一些属性外(成员变量表示的年龄、姓名...),我们人类还有一些行为比如:可以说话、跑步..,通过学习,我们人类还可以做算术题。这时就要用成员方法才能完成。现在要求对Person类完善:1、添加speak成员方法,输入出:我是一个好人

2、添加jisuan成员方法,可以计算从1+..+1000的结果3、修改jisuan成员方法,该方法可以接收一个数n,计算从1+..+n的结果4、添加add成员方法,可以计算两个数的和

2/成员方法定义成员方法也叫成员函数,这里希望大家不要被两个名词搞晕了。 public返回数据类型方法名(参数列表) {

语句;//方法(函数)主体 }1、参数列表:表示成员函数输入2、数据类型(返回类型):表示成员函数输出3、函数主体:表示为了实现某一功能代码块

2/成员方法定义示例

classPerson{ //1、可以输出我是好人方法 publicvoidspeak(){

//请注意方法名的首写字母应为小写如speak为方法名 System.out.println("我是一个好人"); } //2、可以计算1+..+1000的方法 publicvoidjiSuan(){ intresult=0; for(inti=1;i<=1000;i++){ result=result+i; } System.out.println("1+..+1000结果是"+result); }}//4、计算两个数的和 publicvoidadd(intnum1,intnum2){ intresult=0; result=num1+num2; System.out.println("num1+num2="+result); }【查看】讲义Demo03.java

2/成员方法的理解如何理解方法这个概念,给大家举个通俗的示例:苹果汁橙汁青瓜汁程序员调用方法:给方法必要的输入,方法返回结果。

2/成员方法声明publicinttest(inta);/*方法声明*/这句话的作用是声明该方法,声明的格式为:

访问修饰符数据类型函数名(参数列表);在给Person类添加add方法的例题中,我们看到的关键字return,它的功能是把表达式的值返回的值返回给主调函数的方法。

return表达式;

2/成员方法特别说明参数列表可以是多个,并且数据类型可以是任意的类型intfloatdoublechar..

访问修饰符返回数据类型函数名(参数列表){

语句;//函数主体 }1、方法的参数列表可以是多个2、方法可以没有返回值返回类型可以是任意的数据类型(int,float,double,char..)也可以没有返回值void表示没有返回值

访问修饰符返回数据类型函数名(形参列表){

语句;//函数主体 }

2/课堂练习1、设计计算机类,要求如下:属性:品牌(Brand)、颜色(Color)、cpu型号(CPU)、内存容量(Memory)、硬盘大小(Harddisk)、价格(Price)、工作状态(Work)方法:打开(Open)、关闭(Close)、休眠(Sleep)创建一个计算机对象,调用打开,关闭方法【查看】讲义Demo109.java对象的创建与使用方法Part3对象创建类是用来创建对象的模板。对象(也称为实例)是程序的独立元素,包含相关的特性和数据。

要创建对象,可以使用new运算符和要创建对象所属类的名称,并加上圆括号。Personp1=newPerson("李丽");对象的使用1.访问对象的属性和行为对象的使用主要是通过访问其属性和方法来实现的2.对象的this引用this预定义对象引用变量指向对象本身,任何类都可通过this变量获得一个代表自身的对象

变量,当在类中明确指出使用对象自身的成员变量或方法时就应该加上this预定义对象引用包的创建与使用方法Part4问题的提出

3/包package现在有两个程序员共同开发一个java项目,程序员xiaoming希望定义一个类取名Dog,程序员xiaoqiang也想定义一个类也叫Dog。两个程序员为此还吵了起来,怎么办?不好,还打起来啦!

3/包package包--三大作用1、区分相同名字的类2、当类很多时,可以很好的管理类3、控制访问范围

3/包package包--换包命令packagecom.自定义名字;注意:打包命令一般放在文件开始处。

包--命名规范小写字母比如com.sina.shunping包--如何引入包语法:import包;

Java常用包Java常用包主要包括java.langjava.utiljava.iojava.sql等核心系统包分别提供基础类、工具类、输入输出、网络编程和数据库操作等功能。THANKYOU谢谢项目四

类的深入解析讲师:Java程序设计项目化教程授课教师:任务一

类继承的方法

任务二

类的多态性的使用方法任务三

抽象类的使用方法任务四

接口的定义项目小结思考与练习目录

类继承的方法Part1案例引入:新学期要开学,不同的学生要交学费。但如果我们对不同的学生都定义了age(年龄)、name(姓名)、fee(学费)

1/案例引入//幼儿园classPre{ publicintage; publicStringname; publicfloatfee; //交学费 publicvoidpay(floatfee){ this.fee=fee; }}//小学生classPupil

{ publicintage; publicStringname; publicfloatfee; //交学费 publicvoidpay(floatfee){ this.fee=fee*1.2f; }}//中学生classMiddleStu{ publicintage; publicStringname; publicfloatfee; //交学费 publicvoidpay(floatfee){ this.fee=fee*0.8f; }}升级代码:

1/案例引入classStu{ protectedintage; publicStringname; publicfloatfee; privateStringjob;

publicvoidprintName(){ System.out.println("名字"+); }}//小学生类classPupilextendsStu{ publicvoidpay(floatfee){ this.fee=fee; }}//幼儿classPreextendsStu{ publicvoidpay(floatfee){ this.fee=fee*1.5f; }}//中学生类classMiddleStuextendsStu{ publicvoidpay(floatfee){ this.fee=fee*0.8f; }}父类extendsextendsextends【查看】讲义Demo01.java继承是最重要的面向对象概念之一。继承发生在类之间,与现实世界的继承类似。被继承者称为父类(或超类),继承者称为子类。子类将继承父类的所有成员(构造器除外)。

1/继承的概念继承是最重要的面向对象概念之一。继承发生在类之间,与现实世界的继承类似。被继承者称为父类(或超类),继承者称为子类。子类将继承父类的所有成员(构造器除外)。

1/继承的概念

1/继承的概念子类能否直接访问从父类继承的成员,取决于成员的访问控制修饰符。访问控制修饰符继承规则private继承但无法访问default继承并且如果父类和子类在同一个包中可访问protected继承且可访问public继承且可访问

1/继承成员的访问控制123

1/继承的示例124

1/继承的示例125

1/单继承多态性的使用方法Part2

3/生活中的多态中国人吃饭美国人吃饭当叫来一个中国人时,我们看到的是用筷子在吃饭,但是当叫来的是一个美国人时,我们看到的是用是叉子和小刀吃饭。同一段程序代码(单指“叫某人来吃饭”这个函数),却有两种截然不同的结果,这就是面向对象的多态性

3/多态案例

3/多态示例//动物类classAnimal{ //动物会叫 publicvoidcry(){ System.out.println("不知道怎么叫"); }}动物是所有动物的父类,定义了一个方法cry().所有的子类[猫、狗等],都有这个cry()方法,//创建Dog子类并继承Animal父类及覆盖cry方法classDogextendsAnimal{ //狗叫 publicvoidcry(){ System.out.println("汪汪叫"); }}classCatextendsAnimal{ //猫自己叫 publicvoidcry(){ System.out.println("猫猫叫"); }}Catcat=newCat();cat.cry();Dogdog=newDog();dog.cry();非多态演示Animalan=newCat();an.cry();an=newDog();an.cry();多态演示【查看】讲义Demo01.java

3/多态示例//主人类classMaster{ publicvoidfeed(Animalan,Foodf){ an.eat(); f.showName(); }}//食物父类classFood{ Stringname; publicvoidshowName(){ System.out.println("食物"); }}//食物鱼子类classFishextendsFood{ publicvoidshowName(){ System.out.println("鱼"); }}【查看】讲义Demo02.java抽象类的使用方法Part3

1/抽象从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。例如苹果、香蕉、生梨、葡萄、桃子等,它们共同的特性就是水果。得出水果概念的过程,就是抽象的过程。要抽象,就必须进行比较,没有比较就无法找到共同部分。133

1/抽象处理事物复杂性的方法只关注事物的重要细节,而忽略事物的次要细节。134

1/为什么要用到抽象135

1/为什么要抽象递交报告速递公司在回执确认上签名返回回执确认史密斯大夫将报告送往目的地包装并密封报告

2/方法重写classA{ voidfun1(); voidfun2(){ System.out.println("thisisa"+"concretemethod"); }}abstractabstract

2/方法重写示例含有抽象方法的类肯定是抽象类,但抽象类不一定必须包含抽象方法例:fun2()就有实现和不能被声明为抽象方法抽象方法只需声明,而不需实现static方法构造函数

2/父类中声明,子类中实现求面积问题难以在父类中写出每种图形的面积方法不能在子类中单独实现,否则父类不能使用解决:父类中声明、子类中实现求面积求面积求面积求面积图形类求面积138

2/抽象的示例publicabstract

classShape

{ publicStringshapeName;

/**默认构造方法*/ publicShape(){ }

/**参数化构造方法*/ publicShape(StringshapeName){ this.shapeName=shapeName; }

/**抽象方法:求面积*/

publicabstractdoublegetArea();

/**已实现方法:介绍*/ publicvoidshowShape(){ System.out.println("正在操作的图形为:"+shapeName); }}

2/抽象的示例publicclassCircleextendsShape

{ publicdoubleradius;//半径

publicstaticfinaldoublePI=3.14;

/**默认构造方法*/ publicCircle(){ }

/**参数化构造方法*/ publicCircle(StringshapeName,doubleradius){ super(shapeName); this.radius=radius; }

/**圆环面积*/

publicdoublegetArea(){ System.out.println("圆环面积为:"+PI*radius*radius); returnPI*radius*radius; }}

2/抽象的示例publicclassRectangle

extendsShape

{

publicdoublewidth; publicdoublelength;

/**默认构造方法*/ publicRectangle(){ }

/**参数化构造方法*/ publicRectangle(StringshapeName,doublewidth,doublelength){ super(shapeName); this.width=width; this.length=length; }

/**实现父类抽象方法:求长方形面积*/

publicdoublegetArea(){ System.out.println("长方形面积为:"+width*length); returnwidth*length; }}

2/抽象的示例publicabstractclassTriangle

extendsShape{ publicdoubleborder; publicdoubleheight;

/**默认构造方法*/ publicTriangle(){ }

/**参数化构造方法*/ publicTriangle(StringshapeName,doubleborder,doubleheight){ super(shapeName); this.border=border; this.height=height; }

//抽象方法未实现

//publicabstractdoublegetArea();}没有实现父类抽象方法的子类是抽象类

2/抽象的示例抽象类与compareTo()方法我告诉你比较标准,你来帮我排序例如:如果用抽象类,实现一个对数组元素的排序算法。

1.该数组中的每一个元素都是对象。

2.各元素之间有比较的标准。(可比性)abstractclassMyComparable{

publicabstractint compareTo(MyComparableb); }定义比较标准:如当前类小于目标类,返回负数如当前类大于目标类,返回正数如当前类等于目标类,返回0

2/覆盖compareTo()方法publicclassRectangleextendsMyComparable{ publicintcompareTo(MyComparableobj){ floata=this.calculateArea();//当前圆面积

floatb=((Rectangle)obj).calculateArea();//另一个圆的面积

if(a<b) return-1; else return1; } …}接口的定义Part4

3/接口和抽象类完成长辈遗愿希望晚辈实现我的愿望未完成长辈遗愿,希望晚辈完成接口抽象类具体类

3/接口和抽象类在Java中,继承体现的是“isa”的关系,而接口体现的则是“hasa”聚合的含义接口(interface)是特殊的“抽象类”在接口中,所有的方法都必须是抽象的,通常定义一组公用的未实现的方法

3/接口示例publicclassDoor{ publicvoidguard(){/*门的作用*/ System.out.println("门负责防护!"); }}publicclassMyDoorextends

DoorimplementsBell,Lamp{publicvoidalarm(){/*实现alarm方法*/System.out.println("当撬门时发出警报!"); }publicvoidlight(){/*实现light方法*/System.out.println("开门时壁灯自动亮起,关门后自动关闭!");}}publicinterfaceBell{ /*铃的功能*/ publicvoidalarm();}publicinterfaceLamp{ /*点灯*/ publicvoidlight();}

2/抽象类和接口的总结总结1:抽象类和接口都不能直接实例化。如果二者都要实例化,都要涉及到多态。如果抽象类要实例化,那么抽象类所定义的变量必须指向一个子类对象。这个子类继承了这个抽象类并实现了这个抽象类的所有抽象方法。如果接口要实例化,那么这个接口定义的变量要指向一个子类对象,这个子类必须实现这个接口的所有方法。

2/抽象类和接口的总结总结2:抽象类要被子类继承,接口要被子类实现。总结3:接口里面只能对方法进行声明,抽象类既可以对方法进行声明也可以对方法进行实现。

2/抽象类和接口的总结总结4:抽象类里面的抽象方法必须全部被子类实现,如果子类不能全部实现,那么子类必须也是抽象类。接口里面的方法也必须全部被子类实现,如果子类不能实现那么子类必须是抽象类。总结5:接口里面的方法只能声明,不能有具体的实现。这说明接口是设计的结果,抽象类是重构的结果。

2/抽象类和接口的总结总结6:抽象类里面可以没有抽象方法。总结7:如果一个类里面有抽象方法,那么这个类一定是抽象类。总结8:抽象类中的方法都要被实现,所以抽象方法不能是静态的static,也不能是私有的private。

2/抽象类和接口的总结总结9:接口(类)可以继承接口,甚至可以继承多个接口。但是类只能继承一个类。总结10:抽象级别(从高到低):接口>抽象类>实现类。总结11:抽象类主要是用来抽象类别,接口主要是用来抽象方法功能。当你关注事物的本质的时候,请用抽象类;当你关注一种操作的时候,用接口。THANKYOU谢谢项目五

数组和字符串讲师:Java程序设计项目化教程授课教师:任务一

数组任务二

字符串项目小结思考与练习目录

数组Part1为什么需要数组小智开书店卖书,只会声明单个变量存储一本书的价格,可书店有几千本书,声明几千个变量太麻烦了。万一书价格随纸张价格上涨10%,那几千个变量都乘以(1+10%),那实在太累了。intbook1=30;intbook2=30;intbook3=30;intbook4=30;intbook5=30;intbook6=30;……..1000个变量如果书价格随纸张价格上涨10%堆内存和栈内存int[]x;x=newint[100];x=null;的内存状态变化情况数组存储声明数组数组是用来组合相同类型数据对象的集合。声明基本数组或引用类型数组:chars[];或char[]s;intp[];或int[]p;数组是对象;需要使用new关键字创建。160应使用new关键字来创建数组对象。例如,创建一个基本类型(char)的数组,并赋值:1publicchar[]createArray(){2char[]s;3s=newchar[26];4for(inti=0;i<26;i++){5s[i]=(char)(’A’+i);6}7returns;8}一旦创建数组后,其大小不能再改变。161创建数组162创建字符数组163数组注意点静态数组intia[]={1,2,3,4};int[]ia=newint[]{3,4,5};inta[5];//声明数组时,不能指定其长度,编译时将出错

使用数组时要注意的问题空指针异常如何得到数组长度

数组越界异常数组边界所有的数组索引从0开始。publicvoidprintElements(int[]list){for(inti=0;i<list.length;i++){System.out.println(list[i]);}}164数组注意点增强的for循环使用Java语言“增强型for循环”功能publicvoidprintElements(int[]list){for(intelement:list){System.out.println(element);}}此版本的for循环可以被读作对于(for)list中的每个元素(element)去执行。165数组注意点数组大小的不变性不能改变其大小。可以使用同一个引用变量引用一个全新的数组。int[]myArray=newint[6];myArray=newint[10];166数组注意点二维数组:int[][]twoDim=newint[4][];twoDim[0]=newint[5];twoDim[1]=newint[5];int[][]twoDim=newint[][4];//illegal非矩形数组的数组:twoDim[0]=newint[2];twoDim[1]=newint[4];twoDim[2]=newint[6];twoDim[3]=newint[8];4X5的整型数组: int[][]twoDim=newint[4][5];167多维数组找出数组元素中的最大值与最小值168简单案例:数组字符串Part2

1/工作场景窝夫蛋糕店每天都有大量的交易,均以文本的方式保存起来。文本中交易记录如下:1,20070802,A02,2,45,902,20070802,A01,3,40,120......案例导入

1/认识字符串以字符串的形式存储一条交易记录

StringsaleRecord;saleRecord=newString(“1,20070802,A02,2,45,90”);

涉及以下方面:字符串变量的创建方法字符串对象的构造方法“面包店的数据展示”

1/无处不在的字符串生活中的字符串使用String对象存储字符串String类位于java.lang包中,具有丰富的方法计算字符串的长度连接字符串比较字符串提取字符串/

频繁使用的字符串“有志者事竟成”“天猫双十一成交额突破1600亿”“专业成就梦想”Strings="有志者事竟成";Strings=newString("有志者事竟成");

1/字符串长度//publicclassHello1{publicstaticvoidmain(String[]args){System.out.print(“请随机输入蛋糕的名字:");Scannerinput=newScanner(System.in);Stringname=input.next();System.out.println("这个名字的长度是:\"

"+name.length()+"\"

");}随机输入窝夫蛋糕店里蛋糕的名字,并输出其字符长度调用字符串的length()方法可以获得字符串的长度要想打印输出引号(”),必须在字符串中使用转义序列\”案例导入计算字符串长度/字符串长度调用length()方法获得返回字符串中的字符数调用方法:字符串标识符.length();方法原型:publicintlength(){}

1/字符串长度equals()方法比较原理输入的“Tiramisu”和“tiramisu”代表同一个

“提拉米苏”蛋糕,如何解决?使用equalsIgnoreCase()方法结合toUpperCase()或toLowerCase()/字符串1字符串2检查组成字符串内容的字符是否完全一致

1/字符串比较使用equalsIgnoreCase()方法解决/比较时忽略大小写形式if(favCake1.equalsIgnoreCase(favCake2)){System.out.println(“最喜欢的蛋糕相同");}else{System.out.println(“最喜欢的蛋糕不相同");}

1/字符串比较结合toUpperCase()方法解决/Tiramisu使用toUpperCase(

)

方法Tiramisu使用toLowerCase(

)

方法tiramisuif(favCake1.toUpperCase().equals(favCake2.toUpperCase())){System.out.println(“最喜欢的蛋糕相同");}else{System.out.println(“最喜欢的蛋糕不相同");}

1/字符串比较TIRAMISU

WF蛋糕店每天销售如表所示,输出他的销售单蛋糕销量tiramisu80cheeseCake90cocoCake86.7/publicstaticvoidmain(String[]args){inttiramisu=80;//提拉米苏销量intcheeseCake=90;//芝士蛋糕销量doublecocoCake=86;//可可蛋糕//创建成绩单Stringscore="tiramisu:"+tiramisuScore+"

cheeseCake:"+javaScore+"

cocoCake:"+cocoCakeScore;//打印System.out.println(“*****WF蛋糕店销量*****");System.out.println(score);

}“+”连接字符串Stringscore="tiramisu:\t"+tiramisuScore+"\ncheeseCake:\t"+javaScore+"\ncocoCake:\t"+cocoCakeScore;数值型变量自动转换成String类型

1/字符串连接案例导入

1/字符串连接方法1:使用“+”方法2:使用String类的concat()方法我喜欢,提拉米苏!Strings=newString(“我喜欢,");Stringname=newString(“提拉米苏!");Stringsentence=s.concat(name);System.out.println(sentence);输出结果A.concat(B):B字符串将被连接到A字符串后面

1/字符串的分割字符串的分割,就是控制分割后,形成多个字符串

String[]ses=s.split(str);如:Stringstr=newString(“提拉米苏,芝士蛋糕,巧克力蛋糕");String[]courses=str.split(",");

1/提取单个字符在这里我们可以使用charAt();Stringa=“tiramisu”;charb=a.charAt(3);System.out.print(b);a注意:charAt()方法返回的是char类型的值,里边的参数是要求提取的位置/

1/String常用提取方法常用提取方法举例方法说明publicintindexOf(intch)搜索第一个出现的字符ch(或字符串value)publicintindexOf(Stringvalue)publicintlastIndexOf(intch)搜索最后一个出现的字符ch(或字符串value)publicintlastIndexOf(Stringvalue)返回出现第一个匹配的位置,如果没有找到字符或字符串,则返回-1提拉米苏0123

位置//

1/String常用提取方法方法说明publicStringsubstring(intindex)提取从位置索引开始的字符串部分publicStringsubstring(intbeginindex,intendindex)提取beginindex和endi

温馨提示

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

最新文档

评论

0/150

提交评论