收藏 分销(赏)

Java编程基础教学课件整本书电子教案全套教学教程电子教案.pptx

上传人:精*** 文档编号:10251440 上传时间:2025-04-30 格式:PPTX 页数:612 大小:5.92MB
下载 相关 举报
Java编程基础教学课件整本书电子教案全套教学教程电子教案.pptx_第1页
第1页 / 共612页
Java编程基础教学课件整本书电子教案全套教学教程电子教案.pptx_第2页
第2页 / 共612页
点击查看更多>>
资源描述
,Java,编程基础,第,1,章,Java,语言概述,本章内容,/,Contents,1.3,1.4,1.5,1.6,Java 的历史,Java 技术三大平台,高级语言运行机制,Java 语言的特点,开发工具 Eclipse,1.1,1.2,Java 开发,环境的安装与配置,Java,的历史,1.1,1.1,Java的历史,1,、,Oak(橡树)的产生,2,、网页浏览器 HotJava,3,、,Java,诞生,1.1,Java的历史,Java,商标的由来:,Sun 公司给 Oak 注册商标时,发现它已被另一 产品注册。项目组成员在一家名叫“爪蛙咖啡”的咖啡店品尝咖啡时得到了灵感,有人提 议该门语言取名“Java”(印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名),后来一杯 热气腾腾的咖啡图案成为了 Java 语言的商标,Oak 更名为 Java。,Java 程序设计语言的发展历程:,1995-1997,1998,1999,2000-2004,2006,2009,至今,Java,诞生至,JDK1.1,发布,J2EE问世,Java,三大版本,Java,发布,J2SE1.3,、,1.4,、,1.5,J2SE 更名为 Java SE,J2ME 更名为 Java ME,J2EE 更名为 Java EE,Oracle 公司收购,Sun,公司,持续更新至,Java SE 13,Java 技术三大平台,1.2,1.2Java 技术三大平台,1,、,Java 标准版:,Java Standard Edition(Java SE),前身为 J2SE。包括 Java 语言核心以及标准 API,,支持 Java Web 开发的类。,应用于桌面、服务器、嵌入式等。Java SE 还提供了。,2,、,Java 企业版,:Java Platform Enterprise Edition(Java EE),前身为 J2EE。,Java EE 以 Java SE 为基础,它主要包括 Servlet、JSP、WebService 等技术。,应用于开发企业级服务器端 Java 应用程序,可移植、健壮、可伸缩且安全较高。,3,、,Java 微型版,:Java Platform Micro Edition(Java ME),前身为 J2ME。,具有灵活的 UI、鲁棒性高的安全模型、适应多种网络协议、支持多种离线应用程序,为无线交流量身打造。,应用于开发嵌入式设备。,高级语言运行机制,1.3,1.3,高级,语言运行机制,1,、,编译型语言,2,、,解释型语言,3,、,Java,语言特征,1.3.1语言运行机制,1、编译型语言,源代码一次编译成型,即可脱离开发环境,但如果改变运行平台,源代码必须重新修改并使用特定编译器进行编译,可移植性较差。,常用的 C 语言即为编译型语言。,1.3,高级,语言运行机制,1.3,高级,语言运行机制,2、解释型语言,需要专门的解释器,每执行一次解释型语言都要逐行对源代码进行编译。解释型语言不能离开解释器而单独运行,只需要特定平台的解释器,解释型语言便可以在平台之间实现移植。,1.3,高级,语言运行机制,3、Java 语言运行机制及其跨平台性,因为 Java 源程序(.java 文件)经过编译之后得到的是一种与任何平台无关的中间代码-字节码(.class 文件)。,负责解释字节码的是“Java 虚拟机”,简称 JVM(Java Virtual Machine),虚拟机中的 Java 解释器将字节码文件解释成为特定平台的二进制代码。,Java 虚拟机不是一个独立的程序,,,为字节码提供了统一的虚拟运行平台,负责与不同的底层机器沟通,这样既兼顾了高效率执行也达到了很好的跨平台性,真正做到“一次编写,到处执行”的目的。,Java 运行环境(Java Runtime Environment,简称 JRE)为 Java 程序运行提供了可能,其中包含了 Java 虚拟机以及本地平台的核心类库,。,JRE 仅能运行 Java 程序,不能进行 Java 开 发与调试。,JRE 包含两个部分:Java Runtime Environment 和 Java Plug-in。,1.3,高级,语言运行机制,1.3.2JRE,1.类加载器(Class Loader)。,2.字节码校验器(Bytecode Verifier)。,3.解释器(Interpreter)。,4.JIT(Just In Time)代码生成器。,5.API 类库。,6.硬件接口。,1.3,高级,语言运行机制,1.3.3JDK,JDK(Java Developm Kit)Java 标准开发包,是 JRE 的超集,它提供了编译、运行 java 程序所需要的各种工具和资源。,包括:Java 类库、Java 编译器、Java 调试器与 JRE。至今,经历了多个版本的更新。,1.3,高级,语言运行机制,1.3.4Java 虚拟机(JVM),Java 虚拟机中,实现实现内存管理功能的工具称为垃圾收集器,垃圾收集器负责将堆、元空间内的废弃的对象、常量和无用的类进行回收。,字节码经过 java 虚拟机转化成特定平台架构的机器码,才实现了 Java 的跨平台。,Java 虚拟机将运行时数据区域划分为五个部分,分别为方法区、堆、PC 寄存器、Java 方法栈和本地方法栈,,1.3,高级,语言运行机制,Java 语言的特点,1.4,1.4Java 语言的特点,1、操作简单。,2、跨平台易移植。,3、安全性高。,4、面向对象。,5、封装性。,6、继承性。,7、多态性。,Java 开发,环境的安装与配置,1.5,1.5Java 开发环境安装及配置,JDK,下载:,Orac,el,官网下载。,1.5Java 开发环境安装及配置,点击 JDK13 版本的下载链接后,可针对不同的操作系统进行下载,1.5Java 开发环境安装及配置,接下来以 64 位 Windows 系统下的 JDK 安装为例向读者介绍 JDK 的安装与配置。,第一步:JDK 安装包下载完成之后,双击安装包 jdk-13.0.1_windows-x64_bin.exe 即可开始安装,双击后会弹出如图的对话框。,1.5Java 开发环境安装及配置,第二步:单击“下一步”安装程序会自动跳转到路径选择对话框,如图所示。可 以选择默认安装,也可以单击对话框中的“更改”按钮,更改 JDK 的安装目录,单击“下 一步”按钮。,1.5Java 开发环境安装及配置,第三步:弹出安装进度对话框,等待 JDK 自动安装完成。如果选择默认路径安装,则 JDK 安装成功后,在 C:Program FilesJava 路径下可以看到 jdk-13.0.1 文件夹,该文件 夹中包含 bin 目录和 lib 等目录。bin 目录中包含用于 Java 程序编译器(javac.exe)、解释 器(java.exe)、调试器等主要工具软件,如图所示。lib 中存放的是 Java API 库文件。,1.5Java 开发环境安装及配置,第四步:在首次编译和运行 Java 程序前,一般需要设置 path 环境变量,才能正常使用 JDK。右击桌面上的“计算机”图标,点击“属性”菜单项,在打开的窗口,单击左边栏中的“高 级系统变量”链接,出现系统属性对话框,如图所示。单击右下部分的“环境变量”按钮,进行环境变量的设置。,1.5Java 开发环境安装及配置,第五步:设置环境变量。在系统变量框中选择“Path”(如果没有该变量,新建一个),点击“编辑”按钮,打开“编辑系统变量”对话框。在“变量值”中添加“C:Program FilesJavajdk-13.0.1”(该值以实际 JDK 安装位置和版本为准),确定。,1.5Java 开发环境安装及配置,第六步:配置完成后,打开操作系统的命令行界面,在命令提示符下输入 javac 或 java 命令,出现如图所示信息,说明配置成功;如果提示java不是内部或外部 命令,也不是可运行的程序或批处理文件(或 Command not found),说明环境变量配置有误。,开发工具 Eclipse,1.6,1,、下载,Eclipse,读者,可以通过,Eclipse,在官网下载所需要的版本。,接下来,以 Eclipse2019-12 版本为例,展示,Eclipse,的下载。,如左图所示,,选择“Eclipse IDE for Java Developers”,右侧根据计算机安装的操作系统选择,此处选择 Windows 64-bit,进入如,右图,所示页面,单击 Download 按钮,设置保存路径下载即可。,2,、认识,Eclipse,左一,右一,右二,Eclipse,界面介绍:,如图左一为项目列表,,Eclipse,中的项目均可以在这一部分查看。,如图右一为编辑窗口,用户在此处可以编辑、查看代码。,如图右二为结果显示窗口,用户在此处可以查看运行结果。,第一个 Java 程序,1.7,1.7第一个 Java 程序,第一步:Eclipse 启动后,会出现如图所示的对话框,用来设置存放项目文件的工作路径:Workspace,读者可通过“Browse.”选择合适的路径。,1.7第一个 Java 程序,第二步:创建 Java 项目。可以在弹出的欢迎界面中单击“Create a new Java project”创建,如图所示。Project name 文本框中输入 Java 项目,单击“Finish”按钮后,可进入 Eclipse 主界面,。,1.7第一个 Java 程序,也可以单击“File”“New”“Java Project”命令创建或者单击主界面左侧 Package Explorer 中的“Create a new Java project”创建。如图所示。,1.7第一个 Java 程序,第三步:认识 Eclipse 主界面。如图所示,左侧 Package Explorer,用于管理指定目录下的所有程序文件。中间部分为 Java 程序编辑区。下方的选项卡是一系列调试工 具,其中“Console”用于将 Java 程序的数据写入到控制台。可通过“Window”“Show view”选择需要显示的视图。,1.7第一个 Java 程序,第四步:创建类 HelloWorld.java。在已有项目(例如上面创建的 FirstPro)上右击选择“New”“Class”命令,弹出“New Java Class”对话框,如图所示。在“Name”中填写类名称 HelloWorld(需要遵循标识符的命名规则),选中“public static void main(String args)”复选框(此处创建主类,如果是非主类则不勾选),对话框中其他部分默认,单击“Finish”完成。,1.7第一个 Java 程序,第五步:编写程序并运行。创建成功之后,如图所示编辑区会自动出现一些默 认生成的代码。,1.7第一个 Java 程序,在 main 方法中编写语句“System.out.print(Hello World!);”,在编辑区点击鼠标右键,弹出的窗口中选择“Run As/Java Application”命令或单击工具栏中的按钮 运行,在控制台中查看运行结果:Hello World!。如图所示。,本章小结,本章小结,通过本章的学习,读者应了解:,1,、Java 的发展史、名称由来、个版本信息、三个平台等;,2,、明确 Java 语言的运行机制,Java 语言面向对象、可移植性、跨平台性的特点;,3,、了解 JRE、JDK、JVM 的概念以及作用;,4,、了解 JDK13 的最新特性,熟练掌握如何下载、安装 JDK,并会配置环境变量;,5,、熟练掌握 Eclipse 的下载与简单使用;,6,、熟练掌握 Java 项目创建 的方法。,Java,编程基础,第,2,章,Java,语言基础,本章内容,/,Contents,2.3,2.4,2.5,2.6,Java 语言基本格式,Java 语言的基本元素,工程实践中 Java,程序的书写规范,基本数据类型,基本类型的类型转换,2.1,2.2,运算符与表达式,流程控制,数据的接收,Scanner 类,2.7,2.8,Java 语言基本格式,2.1,2.1,Java 语言基本格式,1、基本格式(类和 main 方法),在一般应用程序中,main()方法所在的类即为,主类,,主类以它作为程序执行的起始点,并且从它结束,在 Java 中 main()方法的书写格式基本是,固定,的。,main()方法书写格式如下:,public static void main(String args),.,类的书写格式如下:,修饰符 class 类名,.,2.1 Java 语言基本格式,Java 程序保存时,源文件的命名需要遵循一定的规则:,Java 程序源文件的扩展名应为.java,.,如果 Java 源代码中定义了一个 public 类,则该源文件的文件名,必须,和该 public 类的名称,一致,。因此,一个 Java 源文件里,最多只能定义一个,public 类。,2.1 Java 语言基本格式,2、空白,空白包括每条语句左端距离该行左端空白缩进或者多行之间的空白行,这些空白并不 是必须的,也不影响源程序的运行,但加上这些空白有助于代码编写者的阅读。,Java 语言的基本元素,2.2,2.2,Java 语言的基本元素,2.2.1Java 语言使用的字符集,Unicode(Universal Multiple-Octet Coded Character Set),,Unicode 采用,双字节编码方式,,即每个字符编码由,16 位二进制数,组成。,Java 程序在书写的过程中经常会涉及的字符主要有,标识符、关键字、分隔符、转义字符,等,Java 程序编译的过程 中,字节码文件,即*.class 文件中使用改进的 UTF-8,JVM 加载 Class 文件之后,将其 中的字符转化为 UTF-16 编码序列。,2.2,Java 语言的基本元素,2.2.2标识符,标识符由字母、数字、“_”、“$”任意组合组成,但数字不能出现在标识符的首位;,标识符不能是 Java 语言的关键字与保留字,标识符中不能含有空格;,标识符没有长度限制;,标识符对大小写敏感。,编写实践中,推荐使用,大驼峰,和,小驼峰,书写规则。,2.2,Java 语言的基本元素,2.2.3关键字与保留字,Java 语言中有一组具有,特殊意义,的词被称为关键字,它们可以用来声明数据类型、修饰方法或类等等。关键字,不能,作为变量名、方法名、类名、包名等使用。,2.2,Java 语言的基本元素,注意:,Java 中的关键字都是小写的。,goto 和 const 也被称为保留字,。,true、false 和 null 这三个直接量是具有实际意义的字,严格地说不能算关键字,所 以没有在表中列出。,用户在程序中自定义的标识符不能使用关键字(包括 Java 语言以后可能使用的关 键字 goto 和 const),也不能使用 true、false 和 null 这三个实义字。,工程实践中 Java 程序的书写规范,2.3,2.3,工程实践中 Java 程序的书写规范,2.3.1Java 程序的注释,注释是对代码的说明与解释,目的是为了让人们更加清晰地了解程序结构、方法作用等。根据注释目的不同可将注释分为,序言注释、功能注释,。,注意:,注释的目的是为了提高代码的清晰度,应避免书写会令人产生歧义的注释。,注释应该简洁明了,让人一目了然,应避免内容过于冗长或者难以理解的注释。,应在代码编写之前书写注释。,注释中应注明被注释内容的编写目的、功能描述等内容。,2.3,工程实践中 Java 程序的书写规范,1,、单行注释,int a;/声明 int 型变量 a,2、多行注释,/*,*说明性描述,*功能性描述,*.,*/,3、文档注释,/*,*文件名,*创建人,*创建时间,*修改人,*描述,*版本号,*/,2.3,工程实践中 Java 程序的书写规范,2.3.2命名书写规范,(1)包(Package)、类(Class)、接口(Interface)、组件(Component)、字段、参数、局部变量、成员方法应使用完整的英文描述符,其他命名尽量使用完整的英文描述符;,(2)采用与本工程相关的领域术语进行命名;,(3)采用合理的大小写混合方式,提高命名的可读性;,(4)慎用缩写,且使用缩写时要保持整个工程前后一致;,(5)除特殊情况外,命名长度控制在 25 个字符之内;,2.3,工程实践中 Java 程序的书写规范,2.3.2命名书写规范,(6)避免相似的命名;,(7)除静态常量外,命名中避免使用下划线;,(8)获取成员的方法以“get”为命名前缀;,(9)布尔型获取方法以“is”为命名前缀;,(10)静态常量命名全部使用大写,单词之间使用“_”连接。,2.3,工程实践中 Java 程序的书写规范,2.3.3文件样式及其他书写规范,1,、,文件样式规范,2其他常用书写规范,基本数据类型,2.4,2.4,基本数据类型,变量必须“先声明,后使用”,。,2.4.1变量和常量,1,、,变量,编译器根据变量的数据类型去申请内存空间,程序需要给这个空间起一个名字,并且这个名字必须符合标识符的命名规则,称为,变量名,。通过变量名可以访问内存空间中的值,该内存空间 中的值是可以改变的,由此而称为,变量,。,变量的声明与赋值如下所示:,int a;/声明一个变量,变量名为 a,a=10;/给变量 a 赋值为 10,char c=a;/声明一个变量并赋值,。,2.4,基本数据类型,2,、,常量和直接量,直接量是在程序中通过数据直接表示的量,是常量的具体和直观的表现形式,例如Stirng s=abc,中的,abc就是,直接量,。,常量是指在程序中不可改变的量,它可以在程序中用符号来代替常量值使用,因此在使用前必须先定义,,常量一旦初始化就不可以被修改,。,在 Java 程序中定义的常量通过,final,关键字声明,通常用,大写字母,表示。,常量声明格式如下:,final float PI=3.14f;/声明一个常量并赋值,2.4,基本数据类型,2.4.2数值型数据,1整型,根据所占内存空 间的大小分为 byte、short、int、long,。,2.4,基本数据类型,整数类型在 Java 语言中可以用,十进制、八进制、十六进制,来表示,,但需注意以下几点:,十进制:用非 0 开头的数值表示,如 150 等;,八进制:用 0 开头的数值表示,如 026 等。,十六进制:用 0 x 或 0X 开头的数值表示,数字 10 15 分别用字母“A、B、C、D、E 和 F 表示”(也可以使用小写字母 a f),如 0 x41、0Xabc 等。,例 2-1,中,分别使用十进制、八进制、十六进制来表示整型值,,具体代码详见教材。,注意:,要想表示 long 类型的整数常量,需要加后缀 l 或 L,才能正常通过编译,得到 正确的输出结果。,例 2-2,用于说明,长整型直接量时要加后缀 l 或 L,,,具体代码详见教材,。,2.4,基本数据类型,2,、,浮点类型,浮点类型表示带小数部分的数据类型,分为单精度浮点型(关键字:float)与双精度浮点型(关键字:double)。它们分别对应不同的取值范围。,Java 语言默认小数 double 型,因此定义 float 类型数据时需要在数值后面加上后缀“F”或者“f”,不加会报错。double 类型的数据可以选择性的加后缀“D”或者“d”。,例 2-4,、,例 2-5,展示了浮点数的简单操作,具体代码详见教材。,2.4,基本数据类型,2.4.3字符型数据,字符型数据,占两个字节,使用关键字 char 声明。,字符型数据有,四种,表达形式:,(1)用 Unicode 码表示,,,“,char c=u0041;,”,。,(,2)直接通过单个字符表示,,,“,char c=A;,”,。,(,3,),用整数表示字符,,,“,char c=65;,”,。,(4)通过转义字符表示。,例 2-6,展示了四种,字符型数据的用法,,具体代码详见教材。,2.4,基本数据类型,2.4,基本数据类型,2.4.4布尔型数据,布尔型数据又称为逻辑型数据,逻辑值有两个:true 和 false,分别对应逻辑判断中的真和假,不能用非 0 或 0 代表,变量声明的关键字为 boolean,通常情况下在内存中占 1 个字节。布尔类型数据常用于流程控制语句中的条件判断。,布尔类型数据的声明与赋值如下:,boolean b=true;,运算符与表达式,2.5,2.5,运算符与表达式,2.5.1算术运算符与算术表达式,算术运算符,与操作数组成的表达式称为,算术表达式,。,2.5运算符与表达式,2.5.1算术运算符与算术表达式,自加运算符:,“+”运算符叫做自加运算符,只需要一个操作数,是一元(或单目)运算符,。,“+”在变量,左边,时,先将变量值加 1,之后再将变量值参与表达式的运算;,“+”在变量,右边,时,先将变量值参与表达式的运算,之后再将变量值加 1。,自减运算符:,“-”称为自减运算符,运算过程与“+”同理。,例 2-7、例 2-8 为自加、自减运算符举例,具体代码详见教材。,2.5运算符与表达式,2.5.1算术运算符与算术表达式,注意:,(,1,),“+”、“-”的操作数必须是变量,不能是常量和表达式,。,(2)运算符“+”、“-”、“*”的使用方法与数学运算中的方法相一致,。,(3)“/”运算结果与数学中的除运算结果不完全一致,如果两个操作数都是整数时,则结果也为整数,如 5/2=2,5/12=0(遵循“向零取整”的原则)。如果操作数中有一个 是浮点数,则运算结果也为浮点数,。,(4)%运算符可以应用于浮点类型和整型,如果两边的操作数都为整型,结果也为整 型。取余结果的符号与被除数一致,例如:7%4=3,。,2.5运算符与表达式,2.5.2关系运算符与关系表达式,关系运算符,又称比较运算符,其与操作数组成的表达式称为,关系表达式,。关系运算符 均为,二元运算符,,用于比较两个数据的大小或相等关系,关系表达式的结果为,boolean 类型数据,。当运算符表达的关系成立时,表达式结果为 true,否则为 false,关系运算符,经常在条件判断中使用,。例 2-9,为,输出两个变量的比较运算结果,,具体代码详见教材。,2.5运算符与表达式,2.5.3逻辑运算符与逻辑表达式,逻辑运算符与操作数组成的表达式称为,逻辑表达式,。逻辑表达式的操作数与结果均 为,boolean 类型数据,。,2.5运算符与表达式,2.5.3逻辑运算符与逻辑表达式,逻辑运算符的真值表如下所示:,短路:,使用“&”或者,“|”,运算符时,先判断表达式左边操作数的值,如果为 true 则继续计算右边操作数的值;如果为 false 则表达式不再 计算右边操作数,直接返回 false。例,2-10,、例,2-11,展示了短路与非短路运算的区别,具体代码详见教材。,2.5运算符与表达式,2.5.4赋值运算符与赋值表达式,赋值运算符,为变量指定某一个值,赋值运算符与操作数组成的表达式称为,赋值表达式,。,2.5运算符与表达式,连等赋值int,:,int num1,num2,num3;,num1=num2=num3=10;,num1=num2=num3=10;,错误,正确,2.5.4赋值运算符与赋值表达式,2.5运算符与表达式,2.5.5条件运算符与条件表达式,条件运算符格式如下:,(布尔表达式)?表达式 1:表达式 2,第一个操作数必须是布尔(逻辑)表达式,其他两个操作数可以是数值型或逻辑型表达式。当布尔表达式的值为 true 时,结果为表达式 1 的值,否则为 表达式 2 的值。,例 2-12,展示了条件运算符的用法,具体代码详见教材。,2.5运算符与表达式,2.5.6其他运算符,1,、,位运算符,除“按位与”和“按位或”之外其他的位运算符的操作数必须是,整数,。进行位运算时,当两个操作数精度不同时,,结果与高精度数一致,。,2.5运算符与表达式,2,、,移位运算,a 初值为011010,b初值为110010,时,移位运算结果如下表所示,。,有符号数移位,:,“”、“b?a:b;/通过return将两个整数中较大的数返回,要注意,return后面的表达式一定要保证方法在任何情况下都能返回相应数据类型的值。有些程序,即使有正确的return语句,但也不能保证程序的正确性,如下例所示:,int max(int a,int b),if(ab),return a;,该程序将会出现编译错误,因为max方法不能保证在任何情况下都有返回值。那么怎么改才会编译成功呢?,3.2.1,方法的声明和调用,返回值类型为void的方法不需要返回值,那么在这种方法中是不是就不能使用return呢?实际上也是可以使用的,但这时return语句的功能是终止方法的执行并返回到该方法的调用者。这时,return语句后不能出现表达式(即此时return后只能是空语句)。,public class Example3_1,String name;,String department;,public Example3_1(String ename,String e,d,ep),name=ename;,department=e,d,ep;,public void print(),System.out.println(name+at+department+);,return;/此时return后面为空语句,public static void main(String args),Example3_1 e=new Example3_1(张强,信息技术部);,e.print();,3.2.1,方法的声明和调用,2.方法的调用,根据方法是否有返回值,可分为两种调用格式:,(1)方法有返回值时的调用。如果方法返回一个值,则通常以表达式的方式调用。,例如,java.lang包中的数学类Math中,定义了求两个数中较大值的max方法,则通常按类似于下列的格式调用:,int larger=Math.max(3,4);,System.out.println(Math.max(3,4);,(2)方法无返回值时的调用。如果方法返回类型为void,即无返回值,则这时方法以语句的形式调用。,例如System类中终止程序执行的方法exit,只能按类似于下列的格式调用:,System.exit(1);,3.2.2,方法的参数传递机制,前面介绍了Java里的方法是不能独立存在的,调用方法时必须使用类或对象作为调用者。,如果声明方法时包含了参数列表,列表中的参数叫做形式参数,简称为形参,调用方法时,必须给这些参数指定参数值。把调用方法时实际传递给形参的参数叫做实在参数,简称为实参。,那么,Java中的实参值是如何传入方法的呢?实际上是将实参值进行拷贝然后传给对应的形参的。下面举例说明参数的传递情况。,3.2.2,方法的参数传递机制,1.参数为简单类型时的传递情况,class Example3_2,void swap(int a,int b),int temp;,temp=a;,a=b;,b=temp;,public static void main(String args),int a=5,b=8;,System.out.println(交换前:a=+a+,b=+b);,Example3_2 e=new Example3_2();,e.swap(a,b);,System.out.println(交换结束后:a=+a+,b=+b);,3.2.2,方法的参数传递机制,图,3-3,参数为简单类型时的传递过程,程序的运行结果为:,交换前:a=5,b=8,交换结束后:a=5,b=8,运行结果表明简单类型作为参数传递时,改变形参的值不影响实参。,3.2.2,方法的参数传递机制,2.参数为引用类型时的传递情况,/引用类型的参数传递,示例,/Example3_3.java,class Pass,int height;,int weight;,Pass(int h,int w),height=h;,weight=w;,public void change(Pass var),var.height=160;,var.weight=180;,public class Example3_3,public static void main(String args),Pass p=new Pass(170,200);,System.out.println(调用方法前:);,System.out.println(身高:+p.height+厘米);,System.out.println(体重:+p.weight+斤);,p.change(p);,System.out.println(调用方法后:);,System.out.println(身高:+p.height+厘米);,System.out.println(体重:+p.weight+斤);,3.2.2,方法的参数传递机制,图,3-4,参数为引用类型时的传递过程,程序的运行结果为:,调用方法前:,身高:170厘米,体重:200斤,调用方法后:,身高:160厘米,体重:180斤,运行结果表明,此时形参的值改变影响到了实参。,3.2.2,方法的参数传递机制,【案例3】已知平面直角坐标内两点p1、p2,求这两点之间的距离,。,程序分析、设计过程以及使用printf格式化的输出参见教材,3.2.3,方法的递归,方法的递归就是在一个方法的内部调用自身的过程。,【案例4】求n!,分析:,n!=n*(n-1)*.*3*2*1,求n的阶乘可以用递归方式定义:0!=1,n!=(n-1)!n。,递归必须要有结束条件,不然就会陷入无限递归的状态,永远无法结束调用。因此,定义递归方法时要遵循:递归一定要向已知方向进行。,递归程序的执行过程可以分为两个阶段:1、回溯阶段 2、递推阶段,图3-5所示是5!的回溯和递推过程。,图,3-5,求,5,!的递归过程,3.2.3,方法的递归,/TestFac.java,import java.util.Scanner;,public class TestFac,int fac(int n),if(n=0|n=1),return 1;,else,return fac(n-1)*n;,public static void main(String args),Scanner sc=new Scanner(System.in);,System.out.print(请输入一个正整数:);,int a=sc.nextInt();,TestFac t=new TestFac();,System.out.print(a+!=+t.fac(a);,3.2.4,方法的重载,一般方法的重载与构造方法的重载类似,都是指两个或两个以上的方法具有相同的名称和不同的形式参数。方法名与形式参数一般合称为方法头标志,调用方法时,Java系统能够根据方法头标志决定调用哪个方法。,方法重载的优点是执行相似任务的方法使用相同的名称,可使程序清晰、易读、便利。,重载的方法,其方法名必须相同,参数必须不同(指参数的类型、个数或顺序不同),不能通过返回值类型和方法的修饰符来区别重载的方法。,3.2.4,方法的重载,public class Example3_4,int max(int x,int y),return x=y?x:y;,double max(double x,double y),return x=y?x:y;,int max(int x,int y,int z),int temp;,temp=x=y?x:y;,return temp=z?temp:z;,public static void main(String args),Example3_4 e=new Example3_4();,System.out.println(两个整数里面比较大的数为:+e.max(5,2);,System.out.println(两个浮点数里面比较大的数为:+e.max(12.7,2.5);,System.out.println(三个整数里面最大的数为:+e.max(12,5,30);,成员变量和局部变量,3.3.1,类变量与实例变量,3.3.2,this,关键字,3.3.3,类成员与实例成员的使用规则,3.3,3.3,成员变量与局部变量,在Java语言中,根据定义变量位置的不同,将变量分为两大类:成员变量和局部变量。,成员变量,是在类中定义的变量(方法之外),用来描述对象的属性特征。,局部变量,是在类的方法中定义的变量,在方法中临时保存数据,如图3-6。,成员变量和局部变量的,区别,:,1.作用域不同,局部变量只能在方法中使用,所以它的作用域仅限于定义它,的方法;成员变量能够被本类的所有方法使用。,2.初始值不同,Java会默认给成员变量一个初始值,而不会默认给局部变量赋予初始值。,3.同一个方法中不允许有同名的局部变量,在不同的方法中可以有同名的局部变量,4.当成员变量和局部变量同名时,局部变量具有更高的优先级。,图3-6 成员变量和局部变量,3.3.1,类变量与实例变量,一个类中的成员变量:,如果使用了static修饰符进行了说明,则称为,类变量,,也叫静态变量,如果没有使用static修饰符进行说明,则称为,实例变量,1.类变量和实例变量的存储和访问,类变量独立于该类的任何对象,被类的所有实例共享,即JVM只为类变量分配一次内存,在加载类的过程中完成类变量的内存分配。,可用类名直接访问,当然也可以通过对象来访问(不推荐):,类名.变量名,实例名.变量名,实例变量可以在内存中有多个拷贝,即每创建一个实例,就会为实例变量分配一次内存,互不影响。,通过对象进行访问:,实例名.变量名,3.3.1,类变量与实例变量,class A,static int a;/类变量(静态变量),int b;/实例变量,public class Example3_5,public static void main(String args),A m1=new A();/对象1,A m2=new A();/对象2,m1.a=5;,m2.a=6;,m1.b=5;,m2.b=6;,System.out.print(m1.a+t);,System.out.print(m2.a+t);,System.out.print(m1.b+t);,System.out.println(m2.b);,图3-7 类变量和实例变量,3.3.1,类变量与实例变量,一个类中的成员变量:,如果使用了static修饰符进行了说明,则称为,类变量,,也叫静态变量,如果没有使用static修饰符进行说明,则称为,实例变量,1.类变量和实例变量的存储和访问,类变量独立于该类的任何对象,被类的所有实例共享,即JVM只为类变量分配一次内存,在加载类的过程中完成类变量的内存分配。,可用类名直接访问,当然也可以通过对象来访问(不推荐):,类名.变量名,实例名.变量名,实例变量可以在内存中有多个拷贝,即每创建一个实例,就会为实例变量分配一次内存,互不影响。,通过对象进行访问:,实例名.变量名,3.3.1,类变量与实例变量,2.static代码块,也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以任意,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。,示例代码参见教材,只要含有static关键字的类被加载,Java虚拟机就能根据类名找到它们。因此,static对象可以在类的任何对象创建之前访问,无需引用任何对象。,3.3.2 this,关键字,1.代表当前对
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服