Java语言教学课件汇总整本书电子教案全套教学教程完整版电子教案

上传人:教**** 文档编号:242907044 上传时间:2024-09-11 格式:PPTX 页数:403 大小:7.46MB
返回 下载 相关 举报
Java语言教学课件汇总整本书电子教案全套教学教程完整版电子教案_第1页
第1页 / 共403页
Java语言教学课件汇总整本书电子教案全套教学教程完整版电子教案_第2页
第2页 / 共403页
Java语言教学课件汇总整本书电子教案全套教学教程完整版电子教案_第3页
第3页 / 共403页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,1,章,-,绪论,前言,本章我们要了解,Java,语言的发展历程,理解,Java,语言的特点、,Java,程序的工作过程与类型,并 运行第一个,Java,程序。本章包含两个任务 :任务一带你认识,Java,语言,安装,JDK,(,Java Development Kit,),并在命令行运行第一个,Java,程序 ;任务,2,带你安装,Eclipse,,并在,Eclipse,中运行第,1,个,Java,程序。,本节概述和学习目标,了解,Java,语言的发展历程 ; 理解,Java,语言的特点 ;,理解,Java,程序的工作过程 ;,理解,Java,程序的分类以及两类程序的区别 ;,正确安装和配置,JDK,;,正确安装和使用,Eclipse,;,正确编写、编译和运行简单的程序。,目录,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.6 Java,程序的发展过程,1.2,安装,Eclipse,1.1.1Java,的诞生,Java,是一种可以撰写跨平台应用软件的面向对象的程序设计语言。它是由,Sun Microsystems,公司(简称,Sun,公司)于,1995,年,5,月推出的,Java,程序设计语言和,Java,平台 (即,Java SE,、,Java EE,、,Java ME,)的总称。,1.1.2 Java,的发展,1995,年,5,月,23,日,在,Sun World,大会上,,Java,和,HotJava,浏览器的第一次公开发布 标志着,Java,语言正式诞生,2006,年,12,月,,Sun,公司发布,JRE 6.0,。,2009,年,4,月,20,日,,Oracle,公司(中文译名为甲骨文公司)以,74,亿美元收购,Sun,公司, 取得了,Java,的版权。,2011,年,7,月,,Oracle,公司发布了,Java 7,的正式版。,2014,年,3,月,,Oracle,公司发布了,Java 1.8,版本,,Oracle,公司官方称其,Java 8,Java,平台由,Java,虚拟机和,Java,应用编程接口构成。,Java,分为三个体系,即,Java,平台标准版、,Java,平台企业版和,Java,平台微型版。,1.1.3 Java,语言的特点,Java,语言是当前最流行的网络编程语言之一,具有如下的优点:简单性、平台无关性、 面向对象、分布式、较高的安全性、支持多线程、具有健壮性和动态性等。,简单性。复杂性的省略和实 用功能的增加使得,Java,程序开发变得简单又可靠,平台无关性。,java,屏蔽了具体的平台环境的要求。,面向对象。面向对象的技术具有继承性、封装性和多态性等多种优点,,分布式。,Java,建立在扩展的,TCP/IP,网络平台上。,安全性。,Java,有建立在公共密钥技术基础上的确认技术,提 供了足够的安全保障。,支持多线程。多线程机制使应用程序能同时进行不同的操作及处理不同的事件。,健壮性。,Java,是强类型语言,,Java,没有指针,,Java,进行自动内存回收,Java,在编译和运行时,都要对可能出现的问题进行检查。,动态性。,Java,在类库中可以自由地加入新方法和实例变量,而不影响用户程序的 执行。,1.1.4 Java,程序的分类,根据程序结构和运行环境的不同,,Java,程序可以分为两类 :,Java,应用程序(,Java Application,)和,Java,小应用程序(,Java Applet,),Java Application,以,main(),方法作为程序入口,由,Java,解释器加载执行。,Java,应用程 序是完整的程序,能够独立运行。,Java Applet,不使用,main(),方法作为程序入口,需要嵌入到,HTML,网页中运行,由,Appletviewer,或其他支持,Java,的浏览器加载执行,不能独立运行。,1.1.5 Java,程序的工作过程,Java,语言包括,3,种核心机制 :,Java,虚拟机、垃圾收集机制和代码安全检测。,编写,Java,源文件。将编辑好的,Java,源程序以扩展名“,.java”,保存起来,即保存 成“*,.java”,文件。,编译,Java,源程序。使用,Java,编译器编译“*,.java”,源程序,从而得到字节码文 件“*,.class”,运行,Java,程序,Java,程序的开发流程,1.1.6 Java,程序开发过程,Java,最常用的开发平台是,JDK,,,Java,语言的主流开发环境是,JDK + Eclipse,,下面介 绍如何下载和安装,JDK,及配置,JDK,的环境变量。,JDK,是,Sun,公司(现在是,Oracle,公司)提供的,Java,开发环境和运行环境,是所有,Java,应用程序的基础。,JDK,为免费开源的开发环境,任何开发人员都可以直接从,Oracle,公司的官方网站下 载程序安装包。,1-2 Java,开发平台结构图,案例,1-2 JDK,的安装与配置,安装后会在,C:Program Filesjava,路径下创建名为“,jdk1.8.0_171”,和“,jre1.8.0_171”,的两个文件夹。,jdk1.8.0_171,文件夹下的目录结构,案例,1-2 JDK,的安装与配置,在,Windows,系统中,右击“我的电脑”图标,从弹出的快捷菜单中选择“属性”命令, 在弹出的“系统属性”对话框中选择“高级”选项卡,“高级”选项卡,案例,1-2 JDK,的安装与配置,单击“环境变量”按钮, 出现如图 所示的“环境变量”对话框,在此分别对,JAVA_HOME,、,Path,、,CLASSPATH,三个环境变量进行设置。,案例,1-2 JDK,的安装与配置,JAVA_HOME,环境变量的设置,Path,环境变量的设置,案例,1-2 JDK,的安装与配置,系统环境变量,CLASSPATH,的设置。需要新建一个系统变量,将其命名为,CLASSPATH,,并设置其值为,“,.;%Java_HOME% lib;%Java_HOME%jrelib”,或 者“,.;%Java_HOME%libtools.jar;%Java_HOME%libdt.jar; %Java_HOME%jrelibrt.jar;”,注意 :在上面变量值中,不要漏掉“,.”,,它代表当前路径,也就是在当前路径下寻找 需要的类,案例,1-2 JDK,的安装与配置,检查,Java,运行环境设置。在环境变量设置完成之后,需要测试,JVM,是否能正常 工作。打开,DOS,窗口,输入如下命令 :,java version,若出现如图所示的信息,就说明环境变量设置成功了。,案例,1-1 JavaApplication,程序编写举例,创 建 一 个,Java Application,源 程 序( 扩 展 名 为“,.java”,)。 创 建 一 个 名 为,HelloWorldApp.java,的文件,可在任何字符编辑器上输入并保存下列,Java,源程序代码 :,public class HelloWorldApp public static void main(String args) ,System.out.println(Hello Word!);,/,在控制台上输出字符串“,Hello Word!”, /main(),方法结束, /class,定义结束,应用程序的入口是,main(),方法,它有固定的书写方式 :,public static void main(String args) . ,案例,1-1 JavaApplication,程序编写举例,对已创建好的,Java,源程序进行编译。该步骤是用,Java,编译器对,Java,源程序进行编 译,生成对应的字节码文件(扩展名为“,.class”,)。如果编译成功,会产生一个文件名相同 的带“,.class”,扩展名的字节码文件。,进行编译命令格式如下:,javac HelloWorldApp.java,解释执行已编译成功的字节码文件。用,Java,解释器对,Java,字节码文件解释执行。 将上述得到的,HelloWorldApp.class,用,Java,解释器执行 :,java HelloWorld,案例,1-1 JavaApplication,程序编写举例,检查程序的运行结果。本程序的运行结果,HelloWorld.java,程序的运行结果,案例,1-1 JavaApplet,程序编写,编写,Java Applet,源程序,将其保存为扩展名为“,.java”,的文件。,编译,Java Applet,源程序,生成字节码文件(扩展名为“,.class”,)。,/,文件,HelloWorldApplet.java,import java.awt.*; /,引入,java.awt,包中的类,import java.applet.*; /,引入,java.applet,包中的类,public class HelloWorldApplet extends Applet /,继承,Applet,public void paint(Graphics g) /,重写,paint,方法,/,在,(50, 40),位置输出字符串,g.drawString(Hello World !, 50, 40 );, , , ,案例,1-1 JavaApplet,程序编写,编写,Java Applet,源程序,将其保存为扩展名为“,.java”,的文件。,编译,Java Applet,源程序,生成字节码文件(扩展名为“,.class”,)。,/,文件,HelloWorldApplet.java,import java.awt.*; /,引入,java.awt,包中的类,import java.applet.*; /,引入,java.applet,包中的类,public class HelloWorldApplet extends Applet /,继承,Applet,public void paint(Graphics g) /,重写,paint,方法,/,在,(50, 40),位置输出字符串,g.drawString(Hello World !, 50, 40 );, , , ,案例,1-1 JavaApplet,程序编写,使用,JDK,编译,Java Applet,:,使用,JDK,提供的,appletviewer,运行程序 :,提醒 :,Java Applet,必须创建一个,Applet,或,JApplet,的子类。,Java Applet,中不需要有,main(),方法。,javac HelloWorldApplet.java,appletviewer HelloWorldApplet.htm,目录,1.1,认识,Java,语言,1.2,安装,Eclipse,1.2.1 Eclipse,简介,1.2.2 Eclipse,的版本发展,1.2.3 Eclipse,的下载和安装过程,1.2.1 Eclipse,简介,在开发,Java,程序的过程中,有很多开发工具可供选择。用户可以根据项目的性质 和用途选择适合的开发工具。主流的开发工具有,TextPad,、,JCreator,、,NetBeans,、,Eclipse,、,JBuilder,、,MyEclipse,等,其中使用最广泛的是,Eclipse,。,Eclipse,是一个免费的、开放源代码的、基于,Java,的可扩展集成开发平台。,Eclipse,本 身只是一个框架和一组服务,用于通过插件、组件构建开发环境。,Eclipse,有几个下载版本,本书使用,Eclipse SDK,版本。,1.2.2 Eclipse,的版本发展,Eclipse,是目前最受欢迎的跨平台的,Java,自由集成开发环境(,IDE,)之一。,Eclipse,最 初是由,IBM,公司开发的。,2001,年,11,月被贡献给开源社区,现在由非营利软件供应商联盟,Eclipse,基金会(,Eclipse Foundation,)管理。,Eclipse 3.1,版本代号为,IO,,中文译名为“木卫一,伊奥”。,Eclipse 3.5,版本代号为,Galileo,,中文译名为“伽利略”。,Eclipse 3.7,版本代号为,Indigo,,中文译名为“靛青”。,Eclipse 4.2,版本代号为,Juno,,中文译名为“朱诺”。,Eclipse 4.4,版本代号为,Luna,,中文译名为“卢娜,月神”。,Eclipse 4.5,版本代号为,Mars,,中文译名为“火星”。,提醒 :,Eclipse,要求计算机上必须预先安装好,1.5,或更高版本的,JRE,,否则,Eclipse,不 能工作。,1.2.3 Eclipse,的下载和安装过程,Eclipse,的下载。,Eclipse,的安装程序可以从,Eclipse,官方网站上获 得。,Eclipse,可以安装在各种操作系统下。若在,Windows,系统下安装,Eclipse,作为,Java,开发环境,除了需要安装,Eclipse,之外,还需要安装,Java,的,JDK,或,JRE,。,Eclipse,的安装。,Eclipse,属于绿色软件,安装程序不会往注册表中写入信息。,Eclipse,安装程序是一个压缩包,只需要进行解压缩就可以运行,Eclipse,了。在解压缩后的,eclipse,文件夹中可以找到,eclipse.exe,,双击该可执行文件运行,Eclipse,。,1.2.3 Eclipse,的下载和安装过程,Eclipse,压缩包解压后的文件及目录,第一次启动,Eclipse,时会提示设置工作空间,我们可以自定义一个目录,也可以选择默认目录。设置完成后,单击,OK,按钮进入,Eclipse,的,Welcome,(欢迎)界面。,1.2.3 Eclipse,的下载和安装过程,单击欢迎中的关闭按钮(左上方的 )可关闭,Welcome,界面,进入,Eclipse,开发界 面,1.2.4 Eclipse,的基本使用,下面以案例,1-3,为例演示,Eclipse,的使用方法。:,在,Eclipse,中,创建名字为“,HelloWorld”,的,Java Project,(,Java,项目),并在该项目中创建包和类,最后输出“,Hello World”,到控制台。,启动,Eclipse,。双击,eclipse.exe,启动,Eclipse,,出现如图,1-17,所示的“,Workspace Launcher”,对话框,在该对话框中设置项目的默认路径(即工作空间对应的路径)。最后 单击,OK,按钮,即进入,Eclipse,主界面。,1.2.4 Eclipse,的基本使用,创建,Java,项目。进入,Eclipse,环境后,在包视图中会显示当前工作空间中已有的 项目,可以在已有项目下新建“包”,也可以选择,File,菜单下的,New Java Project,命令, 或者单击工具栏上的“,New Java Project”,按钮,新建一个项目。选择,New Java Project,命令后,系统将弹出如图 所示的创建,Java,项目窗口。,创建,Java,项目窗口,1.2.4 Eclipse,的基本使用,创建,Java,包。,Java,类的定义必须存在于包中。如果没有创建包,当在项目中创 建新的,Java,类时,系统就采用隐含的无名包。,创建包窗口,1.2.4 Eclipse,的基本使用,创建类并执行,Java,程序。在,Package Explorer,管理器视图中选中“,cn.cqvie. chapter01.exam1”,包名,然后右击,在弹出的快捷菜单中选择,New,命令,再选择,Class,选项, 弹出如图,1-20,所示的创建类窗口,在,Name,文本框输入类名“,HelloWorld”,,单击,Finish,按钮, 完成类的定义。,创建类窗口,1.2.4 Eclipse,的基本使用,此时就可以在代码编辑器视图中输入,HelloWorld.java,的源代码了。输入完成后,保存 即可。,类的结构图,1.2.4 Eclipse,的基本使用,案例 的源代码如下 :,最后选中项目中含有,main(),方法的类名,单击工具栏上,Run,按钮右侧的下三角按钮, 在弹出的下拉菜单中选择,Run As Java Application,命令,即可运行,Application,类型的,Java,程序。,package cn.cqvie.chapter01.exam1;,public class HelloWorld ,public static void main(String args) ,/,输出,Hello World,到控制台,System.out.println(Hello World); ,思考题,单选题,1,在,JDK,目录中,,Java,运行环境的根目录是( )。,A,Lib B,Demo C,Bin D,Jre,2,下列关于,Java,语言特点的叙述中,错误的是( )。,A,Java,是面向过程的编程语言,B,Java,支持分布式计算,C,Java,是跨平台的编程语言,D,Java,支持多线程,3,main(),方法是,Java Application,程序执行的入口点。关于,main(),方法的方法头, 以下( )项是合法的。,A,public static void main() B,public static void main(String args) C,public static int main(String arg) D,public void main(String arg),思考题,单选题,4,编译,Java Application,源程序文件将产生相应的字节码文件,这些字节码文件的扩 展名为( )。,A,“,.java” B,“,.class” C,“,.html” D,“,.exe”,5,下列说法中不正确的是( )。,A,Java,源程序文件名与应用程序类名可以不相同,B,Java,程序中,,public,类最多只能有一个,C,Java,程序中,,package,语句可以有,0,个或,1,个,并在源文件之首,D,Java,程序对字母大小写敏感,6,Java,程序语句的结束符是( ),A,“,.” B,“,;” C,“,:” D,“,=”,思考题,单选题,7,Java,程序中,注释的作用是( )。,A,在程序执行时显示其内容,B,在程序编译时提示,C,在程序执行时解释,D,给程序加说明,提高程序的可读性,8,下列说法中不正确的是( ),A,Java,应用程序必须有且只有一个,main(),方法。,B,System.out.println(),与,System.out.print(),是相同的标准输出方法,C,Java,源程序文件的扩展名为“,.java”,D,Java Applet,没有,main(),方法。,思考题,单选题,9,JDK,的,bin,目录下提供的,Java,编译器是( )。,A,javac B,Javadoc C,java D,Appletviewer,10,一个,Java,源文件中可以有( )公共类。,A,一个,B,两个,C,多个,D,零个,11,Java,语言是在( )年正式推出的。,A,1991 B,1992 C,2001 D,1995,思考题,填空题,1,Java,细分为三个版本,三个版本的简称分别为,_,、,_,、,_,。,2,Java,编译器将用,Java,语言编写的源程序编译成,_,。,3,Java,源程序的运行至少要经过,_,和,_,两个阶段。,4,Java,源程序文档和字节码文件的扩展名分别为“,_”,和“,_”,5,Java,程序可以分为,Java Application,和,_,。,思考题,实训题,1,下载并安装、测试,JDK,。,2,编写控制台程序,程序的功能是,输出“我喜欢,Java,程序设计!”和“我会刻苦学习!” 两行文字信息。,3.,下载并安装、测试,Eclipse,。,4.,在,Eclipse,中编写控制台程序,实现案例,1-3,的功能。,5.,在,Eclipse,中创建一个,HelloEclipse.java,的应用程序,其功能是在屏幕上显示“努 力学习,Eclipse,。”,编译并运行该程序。,Thank you,第,2,章,-,JAVA基础知识,前言,在认识,Java,语言的发展与特点并运行第一个,Java,程序后,本章将深入学习,Java,基础编程,包括标识符、常量、变量、常用数据类型、控制台输入输出的使用、常用运算符与表达式、类型转换机制。本章分为三个项目,项目一,带你认识标识符、常量、变量和数据类型,项目二,带你学习控制台的输入输出,项目三,带你学习常用运算符、表达式和类型转换机制,本节概述和学习目标,理解标识符、常量、变量;,正确使用常用数据类型;,正确实现控制台的输入输出;,理解常用运算符与表达式;,了解类型转换机制;,正确编写简单的顺序程序。,目录,1.1,标识符、常量、变量和数据类型,1.1.1,标识符,1.1.2,常量,1.1.3,变量,1.1.4,数据类型,1.2,控制台的输入输出,1.3,常用运算符、表达式和类型转换机制,1.1.1,标识符,标识符,(identifier),是给程序中的实体(变量、常量、方法、数组等)所起的一个名字。,注意:,标识符,必须以字母或下划线开头,由字母、数字或下划线组成;,用户不能采用,Java,语言已有的关键字作为同名的用户标识符;,标识符长度没限制;,标识符区分大小写。,1.1.1,标识符,例如,sum, PI , aa , bb43 , ch , a_53ff , _lab, area都是合法的标识符,4mm , ma , _ch#a,1sum均是不合法的标识符。,1.1.2,常量,常量是指在整个运行过程中其值始终保持不变的量。Java中的常量分为整型常量、浮点型常量、布尔常量和字符常量。,常量的定义格式如下:,final =,=;,例如:,final int a=10, b=20;,final char f1=f, d=F;,提醒:,在Java语言中,无类型后缀的实型常量默认为双精度类型,也可以加后缀D或d。指定单精度型的常量,必须在常量后面加上后缀F或f。实型常量可表示为指数型。,1.1.3,变量,变量是由标识符命名的数据项,它是Java程序中的存储单元,在该存储单元中存储的数据值在程序的执行过程中可以发生改变。每个变量都必须声明数据类型,变量的数据类型决定了它所能表示值的类型以及可以对其进行什么样的操作。,变量既可以表示基本数据类型,又可以表示对象类型(如字符串)的数据。,当变量表示的是基本数据类型时,变量中存储的是数据的,值,;当变量是对象(引用)类型时,变量中存储的是对象的,地址,,该地址指向对象在内存中的位置。,1.1.3,变量,Java中的变量在使用前必须先声明,其声明格式为:,,;,=,=;,例如:,int a, b, c;,float f1=2.16f;,double a1, a2=0.0;,其中,多个变量间用逗号隔开,a2=0.0是对双精度型变量a2赋初值0.0,,末尾的分号是不能少的,,只有这样才够成一个完整的Java语句。,任何变量都有其固有的作用范围,即,作用域,。当声明一个变量的同时,就也指明了它的有效作用范围。有关变量的作用域还将在后续章节里讲解。,1.1.4,数据类型,基本类型包括,8种,:布尔型(boolean)、字节型(byte)、字符型(char)、短整型(short)、整型(integer)、长整型(long)、浮点型(float)和双精度型(double)。,引用数据类型包括3种:类(class)、接口(interface)、数组(array)。,任务,1,的实现,任务,1,:编写一个应用程序,实现从键盘上输入圆的半径值后,程序自动计算圆面积并将结果显示在控制台上,即圆面积计算器。,解决步骤:,任务,1,练习,编写程序,完成对两个变量分别赋值为,1,和,2,,计算,1,2,的最终结果?,什么是运算符,?,什么是表达式?,若已知,a=3,b=4,c=false;,试计算下列表达式的值。,d=ay,d=ab|!c,目录,1.1,标识符、常量、变量和数据类型,1.2,控制台的输入输出,1.2.1 输入输出概述,1.2.2 控制台输出的实现,1.2.3 控制台输,入,的实现,1.3,常用运算符、表达式和类型转换机制,1.2.1,输入输出概述,要完成本任务,必须输入5个字符源码和输出密码,即涉及到数据的输入和输出。数据的输入输出在程序设计和开发中占有重要的地位,一个程序如果没有输出语句,就缺少和用户交流过程中最后的也是最重要的交互步骤,同时也缺少对程序正确性的验证;一个程序如果没有输入语句,则数据来源呆板,使得程序设计缺少灵活性。所以一般情况下,,一个程序都至少有一个输出语句和必要的输入语句,。,Java使用System.out来表示标准输出设备,而使用System.in来表示标准输入设备。默认情况下,,输出设备是显示器,而输入设备是键盘,。,1.2.2,控制台输出的实现,为了完成控制台的输出,只需要使用println方法就可以在控制台上显示基本值或字符串。在绪论章节中,已经介绍过输出的方法,比如在控制台上输出字符串Hello Java!,具体代码如下所示。,提醒:println方法会在输出的,末尾换行,,如果不需要换行,可以使用print方法输出。,1.2.2,控制台输入的实现,Java并不直接支持控制台输入,但是可以使用Scanner类创建它的对象,以读取来自System.in的输入。如下所示:,语法new Scanner(System.in)表明创建了一个Scanner类型的对象,语法Scanner in 声明in是一个Scanner类型的变量。整行的Scanner in = new Scanner(System.in)表明创建了一个Scanner对象,并且将它的引用赋值给变量in。对象可以调用自身的方法。调用对象的方法就是让这个对象完成某个任务。可以调用表2-3中的方法以读取各种不同类型的输入。,1.2.2,控制台输入的实现,例如,从键盘读取一个整数,并赋值给变量a,可以使用如下代码实现。,任务,2,的实现,任务,2,:,谍战片中,特工时常通过“加密”电报,也就是一连串的数字和字符,向大本营传递“情报”。本任务将完成一个简单的加密程序,就是将输入的“china”译成密码,并输出。密码规律是:用原来字母后面第4个字母代替。具体步骤如下:,提示用户输入5个源码;,根据加密规则计算;,输出5个加密码;,任务,2,的练习,求解一元二次方程,提示用户键盘输入,a,、,b,、,c,,求一元二次方程,ax2,bx,c=0,的实根。作为顺序程序,对方程是否有实根不作判断。,随机产生一个,4,位自然数,输出它的逆数。如设某数,2015,,则其逆数为,5102,。,目录,1.1,标识符、常量、变量和数据类型,1.2,控制台的输入输出,1.3,常用运算符、表达式和类型转换机制,1.3.1 运算符与表达式,1.3.2 数据类型转换,1.3.3 数据类型转换表达式、语句和块,1.3.1,运算符与表达式,赋值运算符与赋值表达式,赋值运算符“”把右边的数据赋值给左加的变量,左边只能是变量,,右边可以是变量也可以是表达式,。,赋值运算的一般格式为:变量数据或表达式;,例如:,int a; /定义整型变量,float b; /定义float型变量,char ch; /定义字符型变量,1.3.1,运算符与表达式,扩展赋值运算符,在赋值符“”前加上其他运算符,即构成扩展赋值运算符,它将运算的结果直接存到左边的已命名变量中去。Java支持的扩展赋值运算符如表2-4。,1.3.1,运算符与表达式,算术运算符与算术表达式,算术运算符,算术运算符用于数值类型数据(整数或浮点数)的运算,算术运算符符根据需要的,操作数个数的不同,,可以分为单目操作符(三个)和双目操作符(五个)两种。如表2-5所示。,1.3.1,运算符与表达式,下面以 + 操作符为例,说明单目操作符 + 和 - 的前缀式后缀式在使用上的区别:,例如:,int a, b, x=2, y=2;,a = (+x) * 2; /,先对x加1,再做乘法;前缀方式相当于“先增加,再使用”,。,b = (y+) * 2; /,先做乘法,再对y加1;后缀方式相当于“先使用,再增加”,。,执行之后的结果是a=6, b=4, x=3, y=3。显然,单目操作符的前缀式和后缀式会影响到单目操作符与整个表达式运算的先后顺序,进而影响到整个表达式的最终结果。,1.3.1,运算符与表达式,算术运算符,用算术运算符和括号将数据对象连接起来的式子,称为算术表达式。如表达式:a*d/c-2.5+a就是一个合法的算术表达式。表达式的运算按照运算符的结合性和优先级来进行。,运算符具有结合方向,,即结合性,。例如表达式7+9+1计算机在运算时,是先计算7+9还是先计算9+1呢?这就是一个左结合性还是右结合性的问题。一般运算的结合性是自左向右的左结合,但也有右结合性的运算,今后会遇到。,如果只有结合性显然不够,上面的例子属于同级运算(只有加运算),但是如7+9*2,岂能只考虑运算的结合性?这就要考虑运算符的,优先级,的问题了。其实在小学里我们就知道混合运算规则:,先算括号里面的,然后乘除,最后算加减。,1.3.1,运算符与表达式,常用运算符的优先级从高到低是:,() 负号 *、/ 、% +、-,其中:* 、/ 、%优先级相同,+、- 优先级相同。表达式求值时,先按运算符优先级别高低依次执行,遇到相同优先级的运算符时,则按“左结合”处理。如表达式:a+b*c/2,其运算符执行顺序为:* / +。,1.3.1,运算符与表达式,关系运算符,关系运算是用来比较两个数的大小,关系操作符是双目操作符。其中“”、“=”、“”、“ (b=5)的值是多少?,分析:由于表达式有小括号,所以自左向右先做括号里面的,即先给变量a赋值3,接着给变量b赋值5,最后是a与b值的比较,由于35为假,所以表达式的值是false。,表达式c!=C的值是多少?,分析:该表达式是两个字符的比较,事实上也就是字符ASCII值的比较,由于字符c的值是99,而字符C的值是67,所以它们是不相等的,故表达式的值为true。,1.3.1,运算符与表达式,逻辑运算符与逻辑表达式,逻辑运算符用于进行逻辑运算。逻辑运算符常与关系运算符一起使用,作为流程控制语句的判断条件。Java中的逻辑运算符见表,1.3.1,运算符与表达式,逻辑运算符与逻辑表达式,逻辑运算“&”与“”是,短路(Short-Circuit)逻辑运算符,,它们的运算顺序是从左向右进行的,如果左边已经满足了可执行的条件,则后面有的所有条件都会跳过去而不会再执行,所以称它们为短路逻辑运算符。,“&”与“|”被称为非简洁运算符,它们需要把所有条件全部执行一遍。,很显然,为了提高程序执行效率,应优先使用逻辑与“&”和逻辑或“|”运算符,而且对于逻辑与“&”,应尽可能预见性地把条件值为false的语句写在逻辑表达式的前边;对于逻辑非“|”,就尽可能地把条件值为true的语句写在逻辑表达式的前边。但是,如果需要每个条件都必须运行时,则只能选择使用布尔逻辑与“&”、布尔逻辑或“|”了。,1.3.1,运算符与表达式,逻辑运算符与逻辑表达式,下面比较说明“&”与“&”的区别。,左边程序使用“&” 右边程序使用“&”,int a=5, b=7; int a=5, b=7;,boolean x = a b ,运算结果:a=5,b =7,x为flase。 运算结果:a=6,b=6,x为flase。,因为在计算布尔型的变量x的取值时,&(非简洁与)两边的表达式的值无论真或假,都必须被计算;而对于&,当判断表达式左边(57)已经为false时,根据逻辑与的同时为真(true)结果才为真(true)的规则,就已经知道整个表达式的值为false,所以不用再判断运行后面的其它条件了。,1.3.1,运算符与表达式,条件运算符与条件表达式,条件运算符是三目运算符,即它需要3个数据或表达式构成条件表达式。它的一般形式为:,表达式1 ? 表达式2 : 表达式3,如果表达式1成立,则表达式2的值是整个表达式的值,否则表达式3的值是整个表达式的值。如下所示:,1.3.1,运算符与表达式,位运算符与位表达式,在计算机内部,数据是以二进制编码方式存储的,Java编程语言允许编程人员直接对二进制编码位运算,在Java中提供的所有位操作符中,除 操作符以外,其余均为二元操作符。位操作符的操作数只能为整型和字符型数据,Java中的位运算符如表。,1.3.1,运算符与表达式,位运算符与位表达式,位操作符与的比较:用操作符时,如果符号位为1,则右移后,符号位保持为1;与此类似,如符号位为0,则右移后符号位保持为0;用操作符时,右移后,左边总是填0。,当两个不同长度的数(比如byte型和int型)进行位运算时,系统会将数据先转变为较长的类型,使两数对齐,再进行位运算。比如 a为 byte型而 b为int型,则将a先扩展为int型再运算。,二进制数左移、右移的特点是:向左移一位相当于把原数乘以2,向左移n位,相当于把原数乘以2的n次方;同理,向右移相当于把原数除以2,向右移n位,相当于把原数除以2的n 次方。不过,由于移位时可能使最高位符号位发生变化,所以一般不建议采用移位的方法实现乘除运算。,1.3.1,运算符与表达式,位运算符与位表达式,例:,1101011001011001 结果为:10001111,110111013 结果为:00000011 /右移时,低位舍弃,高位补符号,100111013 结果为:11100011 /右移时,低位舍弃,高位补符号位,无符号右移时,低位舍弃,高位补0。,如:,100111002 结果为:00100111,1.3.1,运算符与表达式,其他类型运算符与表达式,Java语言中还提供了如下一些操作符,表所示。,例:,String st1=new String(A test string.);st1. charAt(0);,int a = new int10;a0 = 1;,double abc=12.345;int ABC = (int)abc; 结果:ABC=12。,String st1=new String(A test string.);,Integer i = 1;System.out.println(i instanceof Integer);,1.3.2,数据类型转换,Java是一种强制类型的转换,在编译时它会检测数据类型的兼容性。赋值和参数传递时,都要求数据类型的匹配。常数或变量从一种数据类型转换到另外一种数据类型即为类型转换。,Java中的数据类型转换有三种情况:,隐式转换(自动类型转换)、显示转换(强制类型转换)和使用类的方法转换。,隐式转换(自动类型转换)允许在赋值和计算时由编译系统按一定的优先次序自动完成,通常,低精度类型到高精度的缺省类型转换由系统自动转换。,例如:int i = 20; long j = i;,1.3.2,数据类型转换,隐式转换从低级到高级的转换顺序如下:,byteshort、int、long、float、double,shortint、long、float、double,charint、long、float、double,intlong、float、double,longfloat、double,floatdouble,显然byte和short不能隐式地转换为char。算术运算返回值与操作数类型之间的关系如表。,1.3.2,数据类型转换,显示转换是将高精度数据类型转换到低精度数据类型,它是通过赋值语句来实现。其一般格式如下:,(数据类型)变量名或表达式,显示转换从高级到低级的转换顺序如下:,bytechar,shortbyte、char,intbyte、short、char,longbyte、short、char、int,floatbyte、short、char、int、long,doublebyte、short、char、int、long、float,1.3.2,数据类型转换,当把高精度数据类型转化为低精度数据类型时,数据的表达范围降低,所以,这种由高到低的转换一方面可能会导致丢失部分信息,除非高精度数据类型所表达的数据值在低精度数据类型表达的数据范围之内;另一方面可能转换不能正确进行。,例如不能将一个很大的整数500000转化char型,因为它超过了char范围(65535),结果会出现错误!,以下是Java中的数据类型之间合法转换关系,实线箭头表示在转换时不会丢失信息,虚线箭头表示在转换时可能丢失精度。,1.3.2,数据类型转换,例:,float f = 2.345f; int i = (int)f; /i的值为2,long j = 9; int k = (int)j; /k的值为9,double abc = 123.45; int ABC = (int)abc; /ABC的值为123,类方法转换,使用Integer类的方法parseInt将String转换为对应的整数。,String str = 123; /123为字符串型。,int a = Integer.parseInt(str); /a值为数值型的123,String类型 基本类型,使用基本类型的包装类(如:byte的包装类为Byte,int的包装类为Integer等等)的parseXXXXX(String类型参数)方法。XXXXX为相应包装类名,可以,1.3.2,数据类型转换,将字符串 String 转换成整数int,有以下两个方法:,String str = 123;,(1)int i = Integer.parseInt(str);,(2)int i = Integer.valueOf(str).intValue();,类似的,把字符串转成double, float, long 的方法大同小异。,基本类型 String类型,使用String类的重载方法valueOf(基本类型参数) 可以将整数int转换成字串 String,有以下三种方法:,(1)String s = String.valueOf(i);,(2)String s = Integer.toString(i);,(3)String s = + i;,类似的,把double, float, long 转成字符串的方法也大同小异。,1.3.2,数据类型转换,操作符优先级,操作符的,优先级决定,了在同一个表达式中多个操作符被执行的先后顺序,同一级里的操作符具有相同的优先级,同级的操作符则以从左到右的顺序进行;操作符的,结合性决定,了相同的优先级的操作符的执行顺序。表2-11列出了Java 操作符从最高到最低的优先级,其中,第一行显示的是特殊的操作符(后缀操作符):,圆括号、方括号、点,。圆括号被用于改变运算的优先级,方括号用于表示数组的下标,点用于将对象名和成员名连接起来。,1.3.2,数据类型转换,1.3.2 数据类型转换表达式、语句和块,表达式由操作数(常量、变量、方法调用)和操作符按照一定的语法格式组成的符号序列。即操作符可以用来构建表达式,用表达式来计算值;而表达式又是语句的核心成分;语句又可以按照一定的形式分为多个语句块。,(1)表达式,表达式(expression)是由常量、变量、操作符和方法调用构成的结构,表达式是按照Java语言的语法构成的,它计算出单一值。,1.3.2 数据类型转换表达式、语句和块,在使用表达式时要注意以下几点:,表达式返回值的数据类型取决于表达式中使用的操作符及操作数的原始数据类型;,在组成表达式时各个部分的数据类型一定要互相匹配,否则可能导致异常发生;,表达式在计算过程中可能导致数据类型的转换;,几个简单的表达式可以构成更为复杂的表达式;,在构成复杂表达式时一定要注意不同的操作符之间不同的优先级,通常会使用圆括号来明确指定哪些操作符被优先计算。,1.3.2 数据类型转换表达式、语句和块,语句:语句(statement)相当于自然语言中的一个完整句子,它组成了一个完整的执行单元。下面的表达式类型以一个分号;结尾时可以组成一个语句:,赋值表达式,+或-,方法调用,对象创建表达式,这些语句类型被称为表达式语句(expression statement)。,1.3.2 数据类型转换表达式、语句和块,例:,userage = 12.5; /赋值语句,theyear+; /累加语句,System.out.println(Hello World!); /方法调用语句,FindUser myFind = new FindUser(); /对象创建语句,当然,除了以上这些表达式语句,还有另外的两种语句:声明语句(declaration statement)和控制流语句(control flow statement)。声明语句通常用于定义(声明)一个或一些变量。,例:,int year = 2008; /声明语句,1.3.2 数据类型转换表达式、语句和块,块:块(block)是位于成对花括号( )之间的零个或者多个语句的语句组,可以在允许使用单一语句的任何位置使用块。例如:,任务,3,的实现,块:,任务,3,回顾:编写应用程序,任意输入三角形三边,经程序计算后,输出三角形面积。具体步骤如下:,(1)提示用户分别输入三角形的三边;,(2)输入三边的值;,(3)根据数学海仑公式计算面积;,(4)输出三角形面积。,任务,3,练习,编程完成从键盘上输入三角形的底和高,输出三角形面积的,Java,语言程序。,从键盘输入本学期所有课程的成绩,输出课程成绩、总成绩和平均成绩。如下显示:,课程:,Java,程序设计 大学英语 高数 计应基础 体育,成绩:,98.0 67.0 70.0 88.0 65.0,总成绩:,329.0,平均成绩:,65.8,思考题,单选题,1,若,x,I,j,k,都是,int,型变量,则计算表达式,x=(i=4,j=16,k=32),后,,x,的值为( )。,A,4 B,16 C,32 D,52,2,设有说明:,char w; int x; float y; double z;,,则表达式,w*x+z-y,的值的数据类型为( ),A,Float B,char C,int D,Double,3,设有:,int a=1,b=2,c=3,d=4,m=2,n=2;,,执行,(m=ab)&(n=cd),后,,n,的值为( ),A,1 B,2 C,3 D,4,思考题,4,判断,char,型变量,ch,是否为大写字母的正确表达式是( ) 。,A,A=ch=A)&(ch=A)&(ch=Z) D,(A= ch),5,设,a=3,b=6,c=9;,,计算下列表达式的值并将结果写到横线上边。,(,1,),a/b_,(,2,),(a+b)%c_,(,3,),a%c_,(,4,),c=a+_,(,5,),(int)a+(float)a/b_,(,6,),(a=a+b)-(-c)_,思考题,6,Java,使用,_,来表示标准输出设备,使用,_,来表示标准输入设备。,7,Java,控制台输入可以使用,_,来完成。,8,Scanner,类中的,_,方法可以
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!