《Java程序设计(微课版)》全套教学课件_第1页
《Java程序设计(微课版)》全套教学课件_第2页
《Java程序设计(微课版)》全套教学课件_第3页
《Java程序设计(微课版)》全套教学课件_第4页
《Java程序设计(微课版)》全套教学课件_第5页
已阅读5页,还剩550页未读 继续免费阅读

下载本文档

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

文档简介

第1章Java语言概述PPT模板下载:/moban/行业PPT模板:/hangye/节日PPT模板:/jieri/PPT素材下载:/sucai/PPT背景图片:/beijing/PPT图表下载:/tubiao/优秀PPT下载:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/资料下载:/ziliao/PPT课件下载:/kejian/范文下载:/fanwen/试卷下载:/shiti/教案下载:/jiaoan/

全套可编辑PPT课件主要内容Backtoschool1.1Java语言的特点1.2Java运行与开发环境1.3Java程序举例1.1

Java语言的特点P3Java语言是20世纪90年代由SunMicrosystems公司开发的革命性的编程语言Java技术的通用性、高效性、平台移植性和安全性,使之成为网络计算的理想技术。Java语言在世界编程语言排行榜中一直处于前两位Java已经成为最流行的编程语言。6.1.1最初是由美国SunMicrosystems公司的JamesGosling等人开发。语言最初取名为Oak(橡树)。Java于1995年5月23日正式发布。Java随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

Java语言在世界编程语言排行榜中一直处于前两位。Java的起源6.1.1/tiobe-index/编程语言最新排名6.1.120多年来,Java语言不断推出新版本,增加新功能。Java语言发展历程1995.5.23正式发布1996Java1.01997Java1.11999J2SEJ2EE发布2000Java1.32002Java1.42004J2SE52006Java6.02017.9Java92014Java8.02008JavaFX1.02007开放源代码2011Java7.0Java语言的特点P7Java语言是一种高级编程语言,它具有简单、结构中立、面向对象、可移植、分布式、高性能、多线程、健壮、动态、安全等特点。Java程序的开发过程Java语言的特点P8由于Java虚拟机可以运行在不同的操作系统之上,因此同一个字节代码文件可以在Windows、SolarisOS、Linux、MacOS等操作系统上运行。通过Java虚拟机,同一个Java程序可以在各种平台上运行

Java平台的体系结构P9Java技术为程序员的软件开发提供了多种支持,主要包括:各种开发工具。如编译器、解释器、文档生成器、以及文件打包工具等。应用程序编程接口(ApplicationProgrammingInterface,API)。应用程序编程接口包含了对软件常用功能的支持,涉及到基本数据对象、用户界面、网络与安全、XML生成、数据库访问等众多方面。目前Java的体系结构已经变得相当庞大。Sun公司在1998年将Java平台划分成J2EE、J2SE、J2ME共3个版本(目前改称为JavaEE、JavaSE、JavaME),针对不同的市场目标和设备进行了定位。JavaEE(JavaPlatform,EnterpriseEdition)的主要目的是为企业计算提供一个应用服务器的运行和开发平台。JavaSE(JavaPlatform,StandardEdition)的主要目的是为台式机和工作站提供一个开发和运行平台。JavaME(JavaPlatform,MicroEdition)主要面向电子消费产品,目的是为电子消费产品提供一个Java的运行平台,使得Java程序可以在手机、PDA、机顶盒等产品上运行。1.2

Java运行环境与开发环境P10Java提供了一个免费的Java开发工具集(JavaDevelopmentKits,JDK),编程人员可以利用这些工具来开发或者调试Java程序。它是编译和运行Java程序的必备软件。可从Oracle官方网站/免费下载JDK。JVM(JavaVirtualMachine)Java虚拟机。运行字节码。JRE(JavaRuntimeEnviroment)

Java运行时环境。JVM和Java类库一起构成。1.2.1JDK的安装与环境变量的配置1.2.1JDK的安装与环境变量的配置1.2.1JDK的安装与环境变量的配置1.2.1JDK的安装与环境变量的配置1.2.1JDK的安装与环境变量的配置在弹出的新建系统变量里的变量名中输入JAVA_HOME,在变量值中输入JDK的根目录:C:\ProgramFiles\Java\jdk1.8.0_101。然后点击确定,返回环境变量对话框,再次点击新建按钮,分别输入classpath和.;%JAVA_HOME%\lib;,注意,此变量值以英文句点符号开始,以分好结束。然后点击确定,返回环境变量对话框。1.2.1JDK的安装与环境变量的配置最后,在系统变量里面找到Path变量,注意,这次是点击编辑按钮,在弹出的对话框中的变量值的最后,一定是最后,添加如下字符串:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin。注意,前面第一个是分号。如果没有Path变量,则添加Path变量,添加步骤和前面一样,不在重复。检验是否配置成功运行cmd输入java-version若如图所示显示版本信息则说明安装和配置成功。1.2

Java运行环境与开发环境P18Eclipse是一款开放源代码的、跨平台的、基于Java的可扩展集成开发环境(IDE)。要使用Eclipse首先需要安装JDK环境,然后从Eclipse官方网站(/downloads/)选择EclipseIDEforJavaDevelopers和对应的操作系统进行下载。下载完成之后,解压下载的文件到任意目录既可完成安装。1.3

Java程序举例P20常见的Java程序主要有2类,即Application(应用程序)和Servlet(服务器端小程序)。应用程序在计算机中单独运行Servlet是运行在服务器端的小程序,它可以处理客户端传来的请求(request),然后将处理结果以响应(response)的方式传回给客户端。本节将介绍简单的Java应用程序,关于服务器端小程序的内容将在网络编程中介绍。下面我们先介绍简单的Java程序,并对其进行分析。【例1-1】要求在命令行窗口显示“HelloWolrd!”。我们将该文件命名为HelloWorldApp.java,其源程序如下://HelloWorldApp.javapublicclassHelloWorldApp//一个应用程序{publicstaticvoidmain(Stringargs[]){System.out.println(″HelloWorld!″);}}1.3

Java程序举例程序也可写成如下形式://HelloWorldApp.java

publicclassHelloWorldApp

{//一个应用程序

publicstaticvoidmain

(Stringargs[]){System.out.println(″HelloWorld!″);}}

首先把它放到一个名为HelloWorldApp.java的文件中,这里,这文件名应和类名相同,而且大小敏感,因为Java解释器要求公共类必须放在与其同名的文件中。1.3

Java程序举例publicclassHelloWorldApp{publicstaticvoidmain(Stringargs[]){System.out.println(″HelloWorld!″);

}}

Java解释器在没有生成任何实例的情况下,以main()作为入口来执行程序。Java程序中可以定义多个类,每个类中可以定义多个方法,但是最多只有有一个公共类,main()方法也只能有一个,作为程序的入口。在main()方法定义中,括号()中的Stringargs[]是传递给main()方法的参数,参数名为args,它是类String的一个实例,参数可以为0个或多个,多个参数间用逗号分隔。1.3

Java程序举例publicclassHelloWorldApp{//一个应用程序

publicstaticvoidmain(Stringargs[]){

System.out.println(″HelloWorld!″);}}

在main()方法的实现(大括号内)中,只有一条语句:

System.out.println(″HelloWorld!″);

它用来实现字符串的输出,这条语句实现与C语言中的printf语句和C++中cout<<语句相同的功能。另外,//后的内容为注释。程序也可写成如下形式://HelloWorldApp.javapublicclassHelloWorldApp{//一个应用程序

publicstaticvoidmain(Stringargs[]){System.out.println(″HelloWorld!″);

}}在程序中,首先用保留字class来声明一个新的类,其类名为HelloWorldApp,它是一个公共类(用public修饰)。整个类定义由大括号{}括起来。在该类中定义了一个main()方法,其中public表示访问权限,指明所有的类都可以使用这一方法;static指明该方法是一个类方法,它可以通过类名直接调用;void则指明main()方法不返回任何值。对于一个应用程序来说,main()方法是必需的,而且必须按照如上的格式来定义。该文件保存在d:\user\chap01目录下。然后对它进行编译:

d:\user\chap01>javacHelloWorldApp.java编译的结果是生成字节码文件HelloWorldApp.class。最后用java解释器来运行该字节码文件:

d:\user\chap01>javaHelloWorldApp

结果在命令行窗口屏幕上显示HelloWorld!用Eclipse编写带命令行参数的应用程序P28publicclassCommandLine{ publicstaticvoidmain(String[]args){ System.out.println("打印命令行参数"); for(inti=0;i<args.length;i++){ System.out.println(args[i]); } }}用Eclipse编写第一个JavaApplication

P29Java程序设计第2章Java程序设计基础PPT模板下载:/moban/行业PPT模板:/hangye/节日PPT模板:/jieri/PPT素材下载:/sucai/PPT背景图片:/beijing/PPT图表下载:/tubiao/优秀PPT下载:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/资料下载:/ziliao/PPT课件下载:/kejian/范文下载:/fanwen/试卷下载:/shiti/教案下载:/jiaoan/

主要内容Backtoschool2.1标识符和关键字2.2常量和变量2.3基本数据类型2.4运算符2.5表达式2.6程序控制语句标识符:为程序中的各个元素进行命名。一般地,在Java中标识符是以字母、下划线(_)、美元符号($)等其它货币符号(如£,¥)开始的一个字符序列,后面可以跟字母、下划线、美元符号、数字等字符。Java语言使用Unicode字符集。标识符是大小写敏感的,没有最大长度的限制,不能和关键字相同。2.1标识符和关键字标识符总体来说定义标识符可以使用的字符包括:大小写字母、数字;Unicode字符集中编号大于0xC0的所有字符。凡是用Character.isJavaIdentifierStart()返回true,都可作为首字符,Character.isJavaIdentifierPart()返回true,都可作为标识符的一部分。合法的标识符:Body,_test,$hello非法标识符:

5Test,hello*,world#,class注意:在中文环境下,可以使用汉字作为标识符。例如,int中文=5;练习题Whichdeclarationsofidentifiersarelegal?$personsTwoUsers*pointthis_endline关键字P35Java不允许对关键字赋予别的含义。所有的关键字都是小写的,如果被大写,就不是关键字了。byteshortintlongfloatdoublecharbooleanifelseswitchcasedefaultdowhileforbreakcontinuereturnvoidprivatepublicprotectedfinalstaticabstractsynchronizedvolatiletrycatchfinallythrowthrowsnewextendsimplementsclassinstanceofthissuperfalsetruenullpackageimport关键字所有的关键字都是小写的。如果被大写,就不是关键字了。用于数据类型的关键字byteshortintlongfloatdoublecharboolean用于流程控制语句的关键字ifelseswitchcasedefaultdowhileforbreakcontinue方法、类型、变量的修饰关键字privatepublicprotectedfinalstaticabstractsynchronizedvolatile异常处理关键字trycatchfinallythrowthrows关键字对象相关关键字newextendsimplementsclassinstanceofthissuper字面值常量关键字falsetruenull方法相关关键字returnvoid包相关关键字packageimport练习题WhichofthefollowingareJavakeywords?1)NULL2)new3)instanceOf4)wend注释单行注释单行注释以“//”开头,至该行结尾,其格式如下://注释内容……多行注释多行注释以“/*”开始,遇到“*/”结束,其格式如下:/*注释文本

……*/文档注释文档注释以“/**”开头,遇到“*/”结束,在注释中每行“*”开始。/**注释文本*注释文本*……*/2.2常量和变量常量整形常量234,实型常量23.4,字符常量’a’,布尔常量true和false,以及字符串常量“helloworld!”

final关键字finalintMAX=100;finalintMAX_LOOP=5;变量[修饰符]<类型名><变量名>[=<初值>][,<变量名>[=<初值>]….];

inti;intj=5,k=4;作用域分,变量大致可分为:局部变量、类成员变量、方法参数、异常处理参数。注意:在一个作用域中,变量名应该是唯一的。在一个作用域中,如果有多个同名的变量可以访问,则按照“邻近”原则,在当前域中定义的变量隐藏其它同名的变量。变量作用域局部变量是在方法内部或代码块中声明的变量,它的作用域为它所在的代码块,在程序设计中,以“{……}”为界。类成员变量,它的作用域是整个类。又可以细分为静态变量和实例变量方法参数的作用域,是它所在的方法异常处理参数的作用域,是它所在的异常处理部分变量隐藏(按作用域的大小)变量的作用域和使用P44Java程序设计2.3基本数据类型PPT模板下载:/moban/行业PPT模板:/hangye/节日PPT模板:/jieri/PPT素材下载:/sucai/PPT背景图片:/beijing/PPT图表下载:/tubiao/优秀PPT下载:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/资料下载:/ziliao/PPT课件下载:/kejian/范文下载:/fanwen/试卷下载:/shiti/教案下载:/jiaoan/

2.3基本数据类型两类:基本数据类型(PrimitiveType)和引用类型(ReferenceType)Java的基本数据类型都有固定的数据位,不随运行平台的变化而变化。引用类型都是用类或对象实现的。布尔类型P47布尔型数据类型用关键字boolean表示,只有true和false两个值例如:booleanb=false;字符类型P48字符类型变量用char表示,在Java虚拟机中一般用16位表示一个char值,范围为0~65535。字符型变量定义格式如下:charc,c1=‘a’;Java的字符型数据不同于整数,但是可以和整数在一起运算inti=20000;charone=’1’;intj=’a’;//由字符向整数,自动类型转换charc=(char)(i+one+j);字符类型转义字符

描述

\ddd1到3位8进制数所表示的字符(ddd)

\uxxxx1到4位16进制数所表示的字符(xxxx)

\'

单引号字符\"双引号字符

\\反斜杠

\r回车

\n换行

\f走纸换页

\t横向跳格

\b

退格Java提供了转义字符,以反斜杠(\)开头整数类型P50十进制:用0~9的数表示,首位不能为0,例如:124,-100;八进制:以0开头,后跟多个0~7之间的数字,如0134;十六进制:以0x或者0X开头,后跟多个0~9之间的数字、或A~F之间字母的大小写形式。a~f或者A-F分别表示10~15,例如,0x23FE,等于十进制数9214。二进制:以0b或者0B开头,后跟多个0~1之间的数字。数据类型的表示范围P51数据类型所占位数数的范围byte8-27

~(27-1)

short16-215~(215-1)int32-231~(231-1)long64-263~(263-1)一个整数数字隐含为int型,在表示long型常量时,需要在数字后面加上后缀L或者l。例如3L表示一个long型的常量,而不是int型常量。浮点类型P52标准计数法:由整数部分、小数点和小数部分组成,如2.0,345.789。科学计数法:由十进制数、小数点、小数和指数构成,指数部分由字母E或e跟上正负号的整数表示,例如,345.789,可以表示成3.45789E+2;数据类型所占位数数的范围float(单精度浮点数)323.4e-038~3.4e+038double(双精度浮点数)641.7e-308~

1.7e+308一个浮点数隐含为double型。在一个浮点数后加字母F或f,表示float型。常量值3.45的类型是double;3.45F的类型是float。各类型数据间的相互转换自动类型转换从低级到高级发生自动类型转换。从表达范围小的类型向表达范围大的类型发生自动类型转换。不同数据类型的转换如下所示:注意:byte,short和char在一起运算时,首先转换为int类型进行运算。【例2-1】分析下面程序中的错误。byteb1=5;shorts1=6;shorts2;s2=b1+s1;低——————————————————————>高byte,short,char—>int—>long—>float—>double类型转换强制类型转换由高级向低级数据类型转换时,需要强制类型转换。例如:

inti=65;

charc;c=(char)i;//把int型变量转换成char型,需要强制类型转换。练习题Whichofthefollowingarelegalstatements?A)floatf=1/3;B)inti=1/3;C)floatf=1.01;D)doubled=999d;Java程序设计2.4运算符和表达式PPT模板下载:/moban/行业PPT模板:/hangye/节日PPT模板:/jieri/PPT素材下载:/sucai/PPT背景图片:/beijing/PPT图表下载:/tubiao/优秀PPT下载:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/资料下载:/ziliao/PPT课件下载:/kejian/范文下载:/fanwen/试卷下载:/shiti/教案下载:/jiaoan/

算术运算符P57运算符用法含义结合性二元运算符+op1+op2加法左-op1-op2减法左*op1*op2乘法左/op1/op2除法左%op1%op2模运算(求余)左一元运算符++op1正数右--op1负数右++++op1,op1++自增右,左----op1,op1++自减右,左算数运算符的特点对于二元运算符,运算结果的数据类型一般为两个操作数中表达范围较大的类型。例如,一个整数和浮点数运算的结果为浮点数。对于一元运算符,运算结果的类型与操作数的类型相同。自增、自减运算符有前缀和后缀两种形式,当是前缀形式(即++、--符号出现在变量的左侧)时,对变量实施的运算是“先运算后使用”;当是后缀形式(即++、--符号出现在变量的右侧)时,对变量实施的运算是“先使用后运算”。运算符的注意事项P59在Java中,"%"(求模运算符)的操作数可为浮点数,如52.3%10=2.3;Java对"+"运算进行了扩展,可作字符串连接运算符,如"ab"+"efd"得"abefd";做"+"运算时,如果一个操作数是字符串,其它操作数自动转换成字符串.如:

Strings;s="s:"+4*5;

//结果是s="s:20";byte,short,char等类型进行混合运算时,会先自动转换为int类型再运算。赋值运算符P60<变量名>=<表达式>inti,j;i=10;j=i+20;扩展赋值运算符运算符示例含义+=count+=3count=count+3-=count-=3

count=count-3*=count*=3

count=count*3/=count/=3

count=count/3%=count%=3count=count%3赋值相容P61如果变量的类型和表达式的类型是相同的,就可以赋值,称为类型相同;如果两者类型不同,并且变量类型比表达式类型长时,系统会自动将表达式的结果转换为较长的类型。如int转换为long,这时也可以赋值,称为赋值相容;赋值不兼容时,可以使用强制类型转换,其格式如下:(<目标类型>)<表达式>例如:inti=(int)123123123123L;//强制类型转换条件运算符P62(boolean_expr)?true_statement:false_statement;例如:intresult=(sum==0)?100:2*num;位运算符P63所有的数在Java虚拟机中都会转换为补码二进制表示例如:整数1表示为补码二进制为

00000000000000000000000000000001(4个字节)整数-1表示为补码二进制为11111111111111111111111111111111(4个字节)运算符示例含义&Op1&Op2使Op1和Op2按位相与|Op1|Op2使Op1和Op2按位相或~~Op对Op按位取反^Op1^Op2使Op1和Op2按位异或<<

Op1<<Op2使Op1左移Op2位,右补0>>

Op1>>Op2使Op1右移Op2位(左边补充符号位)>>>

Op1>>>Op2使Op1无符号右移Op2位(左边始终补添0)练习题Whatwillbeoutputbythefollowingstatement?System.out.println(-1>>>1);1)0

2)-1

3)1

4)

2147483647Whatwillbeoutputbythefollowingstatement?System.out.println(1<<32);1)1

2)-1

3)32

4)-2147483648注意事项除~为右结合外,其余为左结合。操作数的类型一般为整型或字符型。&,|,^三个运算符可以用于boolean。">>"右移是用符号位来填充右移后留下的空位,">>>"是用零来填充空位.若两个数据的长度不同,如a&b,a为byte型,b为int型,系统首先会将a的左侧24位填满,若a为正,则填满0,若a为负,填满1即进行“符号扩充”。关系运算符P66关系运算符用来比较两个值之间的大小,结果返回布尔值:true或者false。运算符示例含义==Op1==Op2比较两个数据是否相等!=Op1!=Op2比较两个数据是否不等<

Op1<Op2比较一个是否小于另一个>

Op1>Op2比较一个是否大于另一个<=Op1<=Op2比较一个是否小于等于另一个>=Op1>=Op2比较一个是否大于等于另一个逻辑运算符P67逻辑运算,也叫布尔运算符,只能处理布尔类型的数据,所得结果也是布尔值。逻辑运算符支持“短路运算”(short-circuit)。xyx&&yx||y!x!ytruetruetruetruefalsefalsetruefalsefalsetruefalsetruefalsefalsefalsefalsetruetrue表达式P68表达式是由运算符和操作数组成的符号序列。它根据运算符的优先级别和结合性,首先执行指定的计算再返回某个值。在对表达式进行运算时,遵循一定的规则,要按运算符的优先级从高到低进行,同级的运算符则按从左到右的在表达式中,为了使表达式的结构更清晰,可以显示的用()标明运算次序,括号中的表达式首先被计算。方向进行。((x<y)&&(x>10))||(((y>0)&(x<50))|(y>50));运算符的优先级高|||||||||||||低

1.[]()++--!~instanceof2new(type)3*/%4+-5>>

>>>

<<6<><=>=7==!=8&9^10|

11&&12||13?:14=+=-=*=/=%=∧=15&=!=<<=>>=>>>=几个特点赋值运算符的优先级最低,因为赋值运算符要使用表达式的值;关系运算符的优先级比布尔逻辑运算符的优先级高;.,[],()等运算符的优先级最高;一元运算符的优先级也比较高;算术元算符要比关系运算符和二元逻辑运算符的优先级要高。Java程序设计2.5程序控制语句PPT模板下载:/moban/行业PPT模板:/hangye/节日PPT模板:/jieri/PPT素材下载:/sucai/PPT背景图片:/beijing/PPT图表下载:/tubiao/优秀PPT下载:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/资料下载:/ziliao/PPT课件下载:/kejian/范文下载:/fanwen/试卷下载:/shiti/教案下载:/jiaoan/

2.5

程序控制语句P72if语句if(condition)statement1;elsestatement2;阶梯if语句P73if语句switch语句P74

多路分支表达式expression的计算结果必须为byte、short、int、char、字符串或者enum类型,每个case语句后的值value必须是与expression类型兼容的一个常量(它必须为一个常量,而不是变量)。重复的case值是不允许的。while与do-while语句P75当它的条件表达式是true时,while语句重复执行循环体,循环体可以是一个语句或者语句块。for语句P76for语句break语句P78break语句P79continue语句P80强迫一次循环提前结束从而进行下一次循环。continue语句P81强迫一次循环提前结束从而进行下一次循环。使用Return语句return语句用来明确地从一个方法返回,如果使用return语句返回一个值,其格式如下:return

返回值classReturn{publicstaticvoidmain(Stringargs[]){booleant=true;System.out.println("Beforethereturn.");if(t)

return;System.out.println("Thiswon'texecute.");}}实用案例1P83计算斐波那契(Fibonacci)数列输出前40项。该数列的前两项都是1,从第3项开始,其后的每一个数据项都是前面的两个数据项之和。第3章数组PPT模板下载:/moban/行业PPT模板:/hangye/节日PPT模板:/jieri/PPT素材下载:/sucai/PPT背景图片:/beijing/PPT图表下载:/tubiao/优秀PPT下载:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/资料下载:/ziliao/PPT课件下载:/kejian/范文下载:/fanwen/试卷下载:/shiti/教案下载:/jiaoan/

主要内容Backtoschool3.1一维数组3.2二维数组和Arrays类初识数组P87数组是一组具有相同类型的有序数据组成的集合。数组中的一个数据成员称为数组元素,通过数组名+下标来唯一确定。每个数组元素类似于一个普通变量,可以用来保存数据,所以数组是有序变量的集合。Java中数组的元素类型可以是简单的数据类型,也可以是类。3.1一维数组P88一个数组的创建需要三个步骤:1.定义数组数组元素类型数组名[];或数组元素类型[]数组名;2.生成数组数组名=new数组元素类型[数组长度];3.初始化数组使数组中的各个元素有确定的数值。定义一维数组P89数据类型数组名[];或数据类型[]数组名;数据类型是指数组元素的数据类型;[]表示定义的变量是一个数组变量,并且是一维的。例如:inta[];(或int[]a;)//声明一个一维整型的数组acharb[];(或char[]b;)//声明一个一维字符型的数组bdoublec[];(或double[]c;)//声明一个一维双精度实型的数组c注意:Java定义数组时,不会为数组分配存储空间。因此,数组声明时,是不指明长度的。生成一维数组P90数组定义只是建立了一种数组的引用,还必须使用关键字new为其分配内存空间。数组变量名=new数据类型[数组长度]如:chars[];s=newchar[5];也可以在定义数组的同时为之分配内存空间:inttemp[]=newint[10];初始化一维数组P91可以通过对数组成员赋值的方式对数组初始化如:ints[];s=newint[3];s[0]=1; //为第一个元素分配空间s[1]=2; //为第二个元素分配空间s[2]=3; //为第三个元素分配空间也可以将内存空间分配,初始化工作放在一条语句中

ints[]={1,2,3};使得s[0]=1,s[1]=2,s[2]=3

此时数组的长度由给定初值的个数自动决定。注意:数组不能整体进行赋值。访问一位数组P92数组元素的访问可通过数组名加下标来实现:数组名[下标]如数组temp:temp[0],temp[1],…,temp[9]

表示分别引用数组的第1个到第10个元素。注意:数组的下标是从0开始,到数组长度减1。

数组长度可以通过“数组名.length”来获取。本章案例1P93求一维数组的最大值及位置。3.2二维数组和Arrays类P94数组的下标数也称为数组的维数,维数大于1的数组叫多维数组。多维数组的使用方法基本类似,下面我们以二维数组为例进行分析。二维数组可看作是特殊的一维数组,即:二维数组中每一个元素又是一个一维数组。利用二维数组可以更方便地处理表格、空间形式的数据,如(x,y)坐标系中的点。二维数组的定义与初始化(1)P95二维数组的定义与一维数组相似:数据类型数组名[][];

或者

数据类型[][]数组名;可以先定义数组,再分配内存空间,也可以同时进行这两项工作。如:inttemp[][];temp=newint[2][3];inttemp[][]=newint[2][3];//即创建一行数为2,列数为3的整数数组temp也可将其视为一长度为2的一维数组,每个数组成员又是一个长度为3的一维数组。这些数组成员按行排列如下:temp[0][0],temp[0][1],temp[0][2],temp[1][0],temp[1][1],temp[1][2],二维数组的定义与初始化(2)P96可以在定义数组的同时对其进行初始化,格式为:类型名数组名[][]={{数据11,数据12,……},{数据21,数据22,……},……}如:inttemp[][]={{1,2},{3,4},{5,6}}注意:(1)等式右边大括号内嵌套的大括号不能省,它代表数组的一行;(2)允许每个二维数组成员的长度不同,如inta[][]={{1,2},{3,4,5},{6,7,8}}(3)系统根据初始值自动确定数组长度和内存空间大小,如上面数组a的第二维长度分别为2,3,3。二维数组的使用P97引用二维数组元素基本方式为:

数组名[下标1][下标2]下标1和下标2与一维数组的下标要求相同。可以通过length属性求每一维数组的长度,如:inttemp[][]=newint[3][5];System.out.println(temp.length);//求二维数组的长度实际是求它的行数3System.out.println(temp[0].length);//temp[0]的长度为5对二维数组元素的引用通常使用嵌套的循环结构完成。本章案例2P98求二维数组中各元素的和Arrays类P99为方便数组的使用,Java在包java.util定义了一个叫Arrays的类。Arrays类提供了多个操作数组的静态方法:statictype[]copyOf(type[]original,intlength)

将original数组复制为一个新数组,其中length为新数组的长度。staticintbinarySearch(type[]a,typekey)

使用二分搜索法在数组a中搜索指定值key;staticbooleanequals(type[]a,type[]b)

比较两个数组是否相等;staticvoidfill(type[]

a,type

val)

用一个指定的值val填充数组a;staticvoidfill(type[]

a,int

fromIndex,int

toIndex,typeval)

与前一个方法类似,但填充时仅仅针对下标为fromIndex到toIndex-1的数组元素赋值为val;staticvoidsort(type[]a)

对数组a排序;本章案例3P100Arrays类的基本使用本章案例3(续前)P101定义类定义类的语法格式:[修饰符]class类名{….类体…..}类体可以由多个属性(成员变量)、方法、构造器组成。注意:类的修饰符可以是public、final、abstract或省略这3个。类名只要是合法的标识符.一个类里可以包含三种最常见的成员:构造器、属性、方法。没有顺序,可相互调用?注意:static修饰的成员不能访问没有static修饰的成员。定义属性的格式语法[修饰符]属性类型属性名[=默认值];修饰符:可以省略,也可以是public,protected,private,static,final,transient(短暂的,不被序列化),volatile(异变的)。类型:基本类型和引用类型属性名:合法标识符默认值:可选定义方法的格式语法[修饰符]方法返回值类型方法名(形参列表){….方法体….}

方法中的修饰符可以是public,protected,private,static,final,abstract,其中访问控制符只能出现一个,abstract,final只能出现其一.返回值类型可以是基本类型和引用类型,如果无返回值,要用void来声明形参列表,可以由零到多组组成,参数之间用逗号(“,”)隔开.static是一个特殊的关键字,译为“静态”,所有有static修饰的叫类属性,类方法,类成员.定义构造器的语法格式[修饰符]类名(形参列表){……}修饰符可以是publicprotectedprivate

构造器必须和类名相同,形参和方法的形参一样.构造器名:必须和类名相同形参列表:和定义方法形参列表的格式相同注意:构造器不能定义返回值类型,也不能用void,但究竟有返回值没?如果类中没有定义构造器,系统将为它提供一个默认的构造器,系统提供的构造器总是没有参数的。使用类:定义变量,创建对象,调用方法或变量对象的产生和使用创建对象的根本途径就是构造器,所以创建对象通过关键字new加上对应的构造器即可.如果访问权限允许,类里定义的属性和方法可以通过类或实例来调用,有static修饰的访求和属性,既可通过类来调用,也可以通过实例来调用.对象、引用和指针Personp=newPerson();,这行代码创建了一个Person实例,也被称为对象,这个对象被赋给了p变量;也就是说引用型变量里存放的仅仅是一个引用(栈内存),它指向实际的对象(堆内存);堆内存里的对象可以有多个引用,如果堆内存中的对象没有任何变量指向它,程序将无法访问该对象,即为垃圾。P=0x12345678;对象的this引用this关键字总是指向调用该方法的对象.1.构造器中引用该构造器执行初始化的对象2.在方法中引用调用该方法的对象在方法里的this代表调用该方法的实例对象;Java允许对象的一个成员直接调用另一个成员,可以省略this前缀;注:this不能用在有static修饰的方法中,包括publicstaticmain方法.即:静态成员不能直接访问非静态成员。this不属于类成员,不可以获取,但可以返回。成员变量和局部变量成员变量指的是在类范围内(方法外,代码块外)定义的变量;局部变量指的是在一个方法内定义的变量。不管是成员变量还是局部变量都遵守相同的命名规则。成员变量分为类变量和实例变量.对于类变量无论通过类还是对象来访问都是访问同一个对象,只要一个对象改变了类变量,那么其他对象对应的类变量也改变了;成员变量不用显式初始化,只要定义了一个类变量或实例变量,系统默认进行初始化。局部变量局部变量可分为三种:形参;方法局部变量;代码块局部变量。与成员变量不同的是除了形参外,其他局部变量都必须显式地初始化。局部变量同名一个类里不能定义两个同名的成员变量;一个方法里不能定义两个同名的方法局部变量,方法局部变量与形参也不能同名;同一个方法中不同代码块内的代码块局部变量可以同名;如果先定义代码块局部变量,后定义方法局部变量,前面定义的代码块局部变量与后面定义的方法局部变量可以同名,反过来不能同名;Java里允许局部变量和成员变量重名。这样局部变量会覆盖成员变量,这时通过this来调用实例的属性.成员变量的初始化当类被加载时,类成员就在内存中分配了一块空间。当对象被创建时,实例成员就在内存中分配了内存空间。实例变量与实例共存亡;类变量与类本身共存亡。局部变量的运行机制局部变量定义后,必须经过显式初始化后才能使用,系统不会为局部变量执行初始化。意味着初始化时才为局部变量分配内存;局部变量仅在方法内有效。当方法执行完成时,局部变量便会自动销毁。总结:变量的使用规则?使用构造器执行初始化构造器最大的用处就是在创建对象时执行初始化,系统会默认的进行初始化。构造器的访问权限:public、protected和private;如果程序员没有Java类提供任何构造器,则系统会为这个类提供一个无参的构造器。一旦程序员提供了自定义的构造器,遇系统不再提供默认的构造器。如何需要保留系统的默认构造器呢?构造器的重载构造器的重载和方法的重载一样,(两同一不同),都是方法名相同,形参列表不相同。系统根据传入的实参列表来决定调用哪个构造器;如果类中包含多个构造器,其中一个构造器的执行体完全包含另一个构造器的执行体,则可以:在构造器中可通过this来调用另外一个重载的构造器。如this(param1,param2…);注意:只能在构造器中使用;只能作为第一条语句;不能有递归构造器的调用。初始化块使用初始化块:初始化块由大括号括起{…},只能由static修饰。[修饰符]{

//初始化块的可执行性代码}初始化块和构造器:初始化块总在构造器之前执行,初始化块不能接受形参。静态初始化块用static修饰的初始化块为静态初始化块,由于是静态的,所以是属于类,当类加载时,就执行静态初始化块,但执行一个子类时,最先执行其最顶层父类的静态初始化,初始化块是属于实例的。只要创建一次对象,初始化块就执行一次。方法的详解方法的所属性一旦将一个方法定义在一个类里,如果用static修饰了,这个方法属于这个类,否则属于这个类的对象.方法不能独立执行,必须要有调用者.(如:类.方法、对象.方法)方法不能独立定义,只能定义在类里.方法要么属于一个类,要么属于一个对象方法的参数传递机制传递方式只有一种:值传递.所谓值传递,就是将实际参数值的副本传入方法内,而参数本身不会受到任何影响。疑问:如果参数是引用类型呢?形参个数可变的方法如果在定义方法时,在最后一个参数的类型后增加三点…,则表明该形参接受多个参数值,多个参数值被当成数组传入.长度可变的形参只能位于最后一个参数,并且一个方法里只能有一个可变长度的参数.递归递归就是在方法中再次调用自己。递归一定要向已知方向递归.否则可能会进入无穷递归,即死循环。方法的重载Java允许在一个类里定义多个同名方法,只要形参列表不同即可.所以方法的重载只要满足两个条件(两同一不同):1.同一个类中,方法名相同;2.形参不同。和返回值类型无关.所以在调用这些方法时要传入不同的参数值.封装理解封装:封装是面向对象的三大特征之一。它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。封装包含两方面含义:(1)合理隐藏。把对象的成员变量和实现细节隐藏起来,不允许外部直接访问。(2)合理暴露。把方法暴露出来,让方法来控制对这些成员变量进行安全的访问和操作。把该隐藏的隐藏起来,把该暴露的暴露出来,这两个方面都需要通过Java提供的访问控制符来实现。3个访问控制符:private、protected和public,分别代表3个访问控制级别,另外还有一个不加任何访问控制符的访问控制级别(default)。private私有的。在同一个类里能被访问。default默认的。包访问权限protected受保护的。子类中也能访问public公共的。在任何地方都可以访问使用访问控制符privatedefaultprotectedpublic访问控制级别由小到大外部类只能有两种访问控制级别:public和默认,外部类不能使用private和protected修饰,因为外部类没有处于任何类的内部,因此private和protected访问控制符对外部类没有意义。使用public修饰的外部类可以被所有类使用,如声明变量、创建实例;不适用任何访问控制符修饰的外部类只能被同一包中的其他类使用。使用访问控制符修饰外部类类里的绝大部分成员变量都应该使用private修饰,只有一些static修饰的、类似全局变量的成员变量,才可能考虑使用public修饰;如果某个类主要用作其他类的父类,该类里包含的大部分方法可能仅希望被其子类重写,而不想被外界直接调用,则用protected修饰;希望暴露出来给其他类自由调用的方法应该使用public修饰,如类的构造器,从而允许在其他地方创建该类的实例。使用访问控制符的基本原则package包(package)的来源。package打包格式:package包名;放在源文件顶端,一个源文件只能指定一个包,只能有一条package语句,该源文件中可以定义多个类,这些类将全部位于该包下。包机制的两个方面的保证。1.源文件里要使用package语句指定包。2.class文件必须放在对应的路径下。如果没有显式指定package语句,则处于默认包下。同一个包下的类可以自由访问,不需要添加包前缀,不同包中使用类应该加包前缀,如:包名.类名;包里面可以有子包,如:packagebao.bao1.bao2;如果父包中的类需要使用子包中的类,则必须使用子包的全名,而不能省略父包部分。import为了简化编程,引入import,import可以向某个Java文件中导入指定包层次下某个类或全部类,import语句在package语句后、类定义之前;一个源文件可以包含多个import语句。importpackage.subpackage…classname;//单个类importpackage.subpackage…*;//全部类,这个*只能代表类,不能代表包。import引入包格式,分为两种:非静态导入,导入的是包下所有的类。如:importpackage.subpackage.(classname|*);静态导入,导入的是类的静态变量或静态方法。如:importstaticpackage.className.(fieldname|methodname|*);package语句//0-1个import|importstatic语句//0-N个publicclassDefinition|interfaceDefinition|enumDefinition//0-1个classDefinition|interfaceDefinition|enumDefinition

//0-N个Java源文件大体结构Java的常用包java.lang.*;//核心类,string、math、system等java.util.*;//工具类/接口、集合框架类/接口.*;//网络编程有关的java.io.*;//输入输出流java.text.*;//java格式化有关的类java.sql.*;//JDBC数据库编程java.awt.*;//图形界面java.swing.*;//图形界面继承子类继承父类的语法格式如下:[修饰符]

classsubclassextendssuperclass{ //类定义部分}子类扩展了父类,将可以获得父类的全部属性和方法,但不能获得父类构造器!Java里的继承都是单继承,也就是只能有一个直接的父类,可以有n个间接父类。自定义的java类默认继承java.lang.Object类。重写父类的方法方法的重写要遵循“两同两小一大”原则:指的是:方法名相同,形参列表相同。返回值类型更小或相同,抛出的异常更小或相同,访问控制权限要更大。注意:重写方法和被重写方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法。疑问:子类如何访问父类中被子类重写的方法?类方法呢?private方法呢?重载overload和重写override的区别?父类实例的super限定通过关键字super来调用父类的方法或属性。super是Java提供的一个关键字,super用于限定该对象调用它从父类继承得到的实例变量或方法。super和this一样,都不能出现在static修饰的方法中。疑问:系统查找方法中变量的顺序?疑问:如果被覆盖的是类变量呢?子类定义了同名变量,将隐藏父类中的变量。注意不是完全覆盖,因此创建子类对象时,依然会为父类中定义的、被隐藏的变量分配内存空间。在子类中调用被隐藏的父类变量publicclassTest{publicstaticvoidmain(Stringargs[]){System.out.println(newJi().b);

}}classAnimal{intage=6;}classBirdextendsAnimal{booleanage=true;intx=super.age;}classJiextendsBird{floatage=5.23f;Birdbd=this;intb=((Animal)bd).age;}super调用父类的构造器子类不会获得父类的构造器,但子类构造器里面可以调用父类构造器的初始化代码;在构造器中调用本类重载的构造器用this,在子类构造器中调用父类构造器用super;使用super调用父类构造器必须出现在子类构造器执行体的第一行;子类构造器总会调用父类构造器。如果子类构造器没有显式使用super调用父类构造器,子类构造器默认会调用父类无参数的构造器。子类调用父类的构造器的几种情况子类构造器执行体第一行使用super显式调用父类构造器;子类构造器的执行体第一行代码使用this显式调用本类中重载的构造器;子类构造器执行体中既没有super调用,也没有this调用,系统将会执行子类构造器之前,隐式调用父类无参数的构造器。(这里可能有问题!)子类和父类的构造器执行顺序创建一个子类实例时,总会先调用最顶层父类的构造器,然后依次向下执行,最后才执行本类的构造器。如果某个父类通过this调用了同类中重载的构造器,则会依次执行此父类的多个构造器。不管子类如何调用父类构造器,当调用子类构造器来初始化子类对象时,父类构造器总会在子类构造器之前执行;不仅如此,执行父类构造器时,系统会再次上溯执行其父类构造器…因此,最先执行的总是java.lang.Object类的构造器。(但为啥感觉不到呢?)classCreature{ publicCreature(){ System.out.println("Creature无参数的构造器"); }}classAnimalextendsCreature{ publicAnimal(Stringname){ System.out.println("Animal带一个参数的构造器,"+"该动物的name为"+name); } publicAnimal(Stringname,intage){

this(name); System.out.println("Animal带两个参数的构造器,"+"其age为"+age); }}publicclassWolfextendsAnimal{ publicWolf() {

super("灰太狼",3); System.out.println("Wolf无参数的构造器"); } publicstaticvoidmain(String[]args) { newWolf(); }}子类和父类的构造器执行顺序(示例代码)Java程序设计4.9多态性PPT模板下载:/moban/行业PPT模板:/hangye/节日PPT模板:/jieri/PPT素材下载:/sucai/PPT背景图片:/beijing/PPT图表下载:/tubiao/优秀PPT下载:/xiazai/PPT教程:/powerpoint/Word教程:/word/Excel教程:/excel/资料下载:/ziliao/PPT课件下载:/kejian/范文下载:/fanwen/试卷下载:/shiti/教案下载:/jiaoan/

5.2Java的多态性

多态(Polymorphism)的意思就是用相同的名字来定义不同的方法。在Java中,普通类型的多态为重载,这就意味着可以使几个不同的方法使用相同的名字,这些方法以参数的个数不同、参数的类型不同等方面来进行区分,以使得编译器能够进行识别。也可以这样讲,重载是同一个方法具有不同的版本,每个版本之间在参数特征方面有差异。重载是Java实现多态性的方式之一。

5.2Java的多态性例如:family()方法可以有三个版本,如下:

family(){}family(Stringch){address=ch;}family(Stringch,floatn){address=ch;pay=n;}

这些方法并存于程序中,编译时,编译器根据实参的类型和个数来区分从而调用那个方法。如果这些方法作为函数或过程同时出现在其它语言的程序中,如C,那将导致灾难性的错误。5.2Java的多态性构造方法重载的例子classperson{Stringname="Johnson";//姓名

intage=45;//年龄

person(){}

person(Stringa){name=a;}

person(Stringa,intb){nam

温馨提示

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

评论

0/150

提交评论