《Java语言教学课件汇总整本书电子教案全套教学教程完整版电子教案(最新).pptx》由会员分享,可在线阅读,更多相关《Java语言教学课件汇总整本书电子教案全套教学教程完整版电子教案(最新).pptx(403页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第1章-绪论前言本章我们要了解Java语言的发展历程,理解Java语言的特点、Java程序的工作过程与类型,并运行第一个Java程序。本章包含两个任务:任务一带你认识Java语言,安装JDK(JavaDevelopmentKit),并在命令行运行第一个Java程序;任务2带你安装Eclipse,并在Eclipse中运行第1个Java程序。本节概述和学习目标了解Java语言的发展历程;理解Java语言的特点;理解Java程序的工作过程;理解Java程序的分类以及两类程序的区别;正确安装和配置JDK;正确安装和使用Eclipse;正确编写、编译和运行简单的程序。目录1.1认识Java语言1.1.1
2、Java的诞生1.1.2Java的发展1.1.3Java语言的特点1.1.4Java程序的分类1.1.5Java程序的工作过程1.1.6Java程序的发展过程1.2安装Eclipse1.1.1Java的诞生Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。它是由SunMicrosystems公司(简称Sun公司)于1995年5月推出的Java程序设计语言和Java平台(即JavaSE、JavaEE、JavaME)的总称。1.1.2Java的发展1995年5月23日,在SunWorld大会上,Java和HotJava浏览器的第一次公开发布标志着Java语言正式诞生2006年12月,S
3、un公司发布JRE6.0。2009年4月20日,Oracle公司(中文译名为甲骨文公司)以74亿美元收购Sun公司,取得了Java的版权。2011年7月,Oracle公司发布了Java7的正式版。2014年3月,Oracle公司发布了Java1.8版本,Oracle公司官方称其Java8Java平台由Java虚拟机和Java应用编程接口构成。Java分为三个体系,即Java平台标准版、Java平台企业版和Java平台微型版。1.1.3Java语言的特点Java语言是当前最流行的网络编程语言之一,具有如下的优点:简单性、平台无关性、面向对象、分布式、较高的安全性、支持多线程、具有健壮性和动态性等
4、。简单性。复杂性的省略和实用功能的增加使得Java程序开发变得简单又可靠平台无关性。java屏蔽了具体的平台环境的要求。面向对象。面向对象的技术具有继承性、封装性和多态性等多种优点,分布式。Java建立在扩展的TCP/IP网络平台上。安全性。Java有建立在公共密钥技术基础上的确认技术,提供了足够的安全保障。支持多线程。多线程机制使应用程序能同时进行不同的操作及处理不同的事件。健壮性。Java是强类型语言,Java没有指针,Java进行自动内存回收Java在编译和运行时,都要对可能出现的问题进行检查。动态性。Java在类库中可以自由地加入新方法和实例变量,而不影响用户程序的执行。1.1.4Ja
5、va程序的分类根据程序结构和运行环境的不同,Java程序可以分为两类:Java应用程序(JavaApplication)和Java小应用程序(JavaApplet)JavaApplication以main()方法作为程序入口,由Java解释器加载执行。Java应用程序是完整的程序,能够独立运行。JavaApplet不使用main()方法作为程序入口,需要嵌入到HTML网页中运行,由Appletviewer或其他支持Java的浏览器加载执行,不能独立运行。1.1.5Java程序的工作过程Java语言包括3种核心机制:Java虚拟机、垃圾收集机制和代码安全检测。编写Java源文件。将编辑好的Jav
6、a源程序以扩展名“.java”保存起来,即保存成“*.java”文件。编译Java源程序。使用Java编译器编译“*.java”源程序,从而得到字节码文件“*.class”运行Java程序 Java 程序的开发流程1.1.6Java程序开发过程Java最常用的开发平台是JDK,Java语言的主流开发环境是JDK+Eclipse,下面介绍如何下载和安装JDK及配置JDK的环境变量。JDK是Sun公司(现在是Oracle公司)提供的Java开发环境和运行环境,是所有Java应用程序的基础。JDK为免费开源的开发环境,任何开发人员都可以直接从Oracle公司的官方网站下载程序安装包。1-2 Java
7、 开发平台结构图案例1-2JDK的安装与配置安装后会在C:ProgramFilesjava路径下创建名为“jdk1.8.0_171”和“jre1.8.0_171”的两个文件夹。jdk1.8.0_171 文件夹下的目录结构案例1-2JDK的安装与配置在Windows系统中,右击“我的电脑”图标,从弹出的快捷菜单中选择“属性”命令,在弹出的“系统属性”对话框中选择“高级”选项卡“高级”选项卡案例1-2JDK的安装与配置单击“环境变量”按钮,出现如图所示的“环境变量”对话框,在此分别对JAVA_HOME、Path、CLASSPATH三个环境变量进行设置。案例1-2JDK的安装与配置JAVA_HOME
8、 环境变量的设置Path 环境变量的设置案例1-2JDK的安装与配置系统环境变量CLASSPATH的设置。需要新建一个系统变量,将其命名为CLASSPATH,并设置其值为“.;%Java_HOME%lib;%Java_HOME%jrelib”或者“.;%Java_HOME%libtools.jar;%Java_HOME%libdt.jar;%Java_HOME%jrelibrt.jar;”注意:在上面变量值中,不要漏掉“.”,它代表当前路径,也就是在当前路径下寻找需要的类案例1-2JDK的安装与配置检查Java运行环境设置。在环境变量设置完成之后,需要测试JVM是否能正常工作。打开DOS窗口,
9、输入如下命令:javaversion若出现如图所示的信息,就说明环境变量设置成功了。案例1-1JavaApplication程序编写举例创建一个JavaApplication源程序(扩展名为“.java”)。创建一个名为HelloWorldApp.java的文件,可在任何字符编辑器上输入并保存下列Java源程序代码:public class HelloWorldApp public static void main(String args)System.out.println(Hello Word!);/在控制台上输出字符串在控制台上输出字符串“Hello Word!”/main()方法结束方
10、法结束 /class 定义结束定义结束应用程序的入口是main()方法,它有固定的书写方式:public static void main(String args).案例1-1JavaApplication程序编写举例对已创建好的Java源程序进行编译。该步骤是用Java编译器对Java源程序进行编译,生成对应的字节码文件(扩展名为“.class”)。如果编译成功,会产生一个文件名相同的带“.class”扩展名的字节码文件。进行编译命令格式如下:javacHelloWorldApp.java解释执行已编译成功的字节码文件。用Java解释器对Java字节码文件解释执行。将上述得到的HelloWo
11、rldApp.class用Java解释器执行:javaHelloWorld案例1-1JavaApplication程序编写举例检查程序的运行结果。本程序的运行结果HelloWorld.java 程序的运行结果案例1-1JavaApplet程序编写编写JavaApplet源程序,将其保存为扩展名为“.java”的文件。编译JavaApplet源程序,生成字节码文件(扩展名为“.class”)。/文件文件 HelloWorldApplet.javaimport java.awt.*;/引入引入 java.awt 包中的类包中的类 import java.applet.*;/引入引入 java.ap
12、plet 包中的类包中的类 public class HelloWorldApplet extends Applet /继承继承 Applet public void paint(Graphics g)/重写重写 paint 方法方法 /在在(50,40)位置输出字符串位置输出字符串 g.drawString(Hello World!,50,40);案例1-1JavaApplet程序编写编写JavaApplet源程序,将其保存为扩展名为“.java”的文件。编译JavaApplet源程序,生成字节码文件(扩展名为“.class”)。/文件文件 HelloWorldApplet.javaimpo
13、rt 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-1JavaApplet程序编写使用JDK编译JavaApplet:使用JDK提供的appletv
14、iewer运行程序:提醒:JavaApplet必须创建一个Applet或JApplet的子类。JavaApplet中不需要有main()方法。javac HelloWorldApplet.javaappletviewer HelloWorldApplet.htm目录1.1认识Java语言1.2安装Eclipse1.2.1Eclipse简介1.2.2Eclipse的版本发展1.2.3Eclipse的下载和安装过程1.2.1Eclipse简介在开发Java程序的过程中,有很多开发工具可供选择。用户可以根据项目的性质和用途选择适合的开发工具。主流的开发工具有TextPad、JCreator、NetB
15、eans、Eclipse、JBuilder、MyEclipse等,其中使用最广泛的是Eclipse。Eclipse是一个免费的、开放源代码的、基于Java的可扩展集成开发平台。Eclipse本身只是一个框架和一组服务,用于通过插件、组件构建开发环境。Eclipse有几个下载版本,本书使用EclipseSDK版本。1.2.2Eclipse的版本发展Eclipse是目前最受欢迎的跨平台的Java自由集成开发环境(IDE)之一。Eclipse最初是由IBM公司开发的。2001年11月被贡献给开源社区,现在由非营利软件供应商联盟Eclipse基金会(EclipseFoundation)管理。Eclip
16、se3.1版本代号为IO,中文译名为“木卫一,伊奥”。Eclipse3.5版本代号为Galileo,中文译名为“伽利略”。Eclipse3.7版本代号为Indigo,中文译名为“靛青”。Eclipse4.2版本代号为Juno,中文译名为“朱诺”。Eclipse4.4版本代号为Luna,中文译名为“卢娜,月神”。Eclipse4.5版本代号为Mars,中文译名为“火星”。提醒:Eclipse要求计算机上必须预先安装好1.5或更高版本的JRE,否则Eclipse不能工作。1.2.3Eclipse的下载和安装过程Eclipse的下载。Eclipse的安装程序可以从Eclipse官方网站上获得。Ecl
17、ipse可以安装在各种操作系统下。若在Windows系统下安装Eclipse作为Java开发环境,除了需要安装Eclipse之外,还需要安装Java的JDK或JRE。Eclipse的安装。Eclipse属于绿色软件,安装程序不会往注册表中写入信息。Eclipse安装程序是一个压缩包,只需要进行解压缩就可以运行Eclipse了。在解压缩后的eclipse文件夹中可以找到eclipse.exe,双击该可执行文件运行Eclipse。1.2.3Eclipse的下载和安装过程Eclipse 压缩包解压后的文件及目录第一次启动Eclipse时会提示设置工作空间,我们可以自定义一个目录,也可以选择默认目录。
18、设置完成后,单击OK按钮进入Eclipse的Welcome(欢迎)界面。1.2.3Eclipse的下载和安装过程单击欢迎中的关闭按钮(左上方的)可关闭Welcome界面,进入Eclipse开发界面1.2.4Eclipse的基本使用下面以案例1-3为例演示Eclipse的使用方法。:在Eclipse中,创建名字为“HelloWorld”的JavaProject(Java项目),并在该项目中创建包和类,最后输出“HelloWorld”到控制台。启动Eclipse。双击eclipse.exe启动Eclipse,出现如图1-17所示的“WorkspaceLauncher”对话框,在该对话框中设置项目的
19、默认路径(即工作空间对应的路径)。最后单击OK按钮,即进入Eclipse主界面。1.2.4Eclipse的基本使用创建Java项目。进入Eclipse环境后,在包视图中会显示当前工作空间中已有的项目,可以在已有项目下新建“包”,也可以选择File菜单下的NewJavaProject命令,或者单击工具栏上的“NewJavaProject”按钮,新建一个项目。选择NewJavaProject命令后,系统将弹出如图所示的创建Java项目窗口。创建 Java 项目窗口1.2.4Eclipse的基本使用创建Java包。Java类的定义必须存在于包中。如果没有创建包,当在项目中创建新的Java类时,系统就
20、采用隐含的无名包。创建包窗口1.2.4Eclipse的基本使用创建类并执行Java程序。在PackageExplorer管理器视图中选中“cn.cqvie.chapter01.exam1”包名,然后右击,在弹出的快捷菜单中选择New命令,再选择Class选项,弹出如图1-20所示的创建类窗口,在Name文本框输入类名“HelloWorld”,单击Finish按钮,完成类的定义。创建类窗口1.2.4Eclipse的基本使用此时就可以在代码编辑器视图中输入HelloWorld.java的源代码了。输入完成后,保存即可。类的结构图1.2.4Eclipse的基本使用案例的源代码如下:最后选中项目中含有
21、main()方法的类名,单击工具栏上Run按钮右侧的下三角按钮,在弹出的下拉菜单中选择RunAsJavaApplication命令,即可运行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运行环境的根目录是()。ALibBDemoCBinDJre2下列关于Java
22、语言特点的叙述中,错误的是()。AJava是面向过程的编程语言BJava支持分布式计算CJava是跨平台的编程语言DJava支持多线程3main()方法是JavaApplication程序执行的入口点。关于main()方法的方法头,以下()项是合法的。Apublicstaticvoidmain()Bpublicstaticvoidmain(Stringargs)Cpublicstaticintmain(Stringarg)Dpublicvoidmain(Stringarg)思考题单选题4编译JavaApplication源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为()。A“.ja
23、va”B“.class”C“.html”D“.exe”5下列说法中不正确的是()。AJava源程序文件名与应用程序类名可以不相同BJava程序中,public类最多只能有一个CJava程序中,package语句可以有0个或1个,并在源文件之首DJava程序对字母大小写敏感6Java程序语句的结束符是()A“.”B“;”C“:”D“=”思考题单选题7Java程序中,注释的作用是()。A在程序执行时显示其内容B在程序编译时提示C在程序执行时解释D给程序加说明,提高程序的可读性8下列说法中不正确的是()AJava应用程序必须有且只有一个main()方法。BSystem.out.println()与S
24、ystem.out.print()是相同的标准输出方法CJava源程序文件的扩展名为“.java”DJavaApplet没有main()方法。思考题单选题9JDK的bin目录下提供的Java编译器是()。AjavacBJavadocCjavaDAppletviewer10一个Java源文件中可以有()公共类。A一个B两个C多个D零个11Java语言是在()年正式推出的。A1991B1992C2001D1995思考题填空题1Java细分为三个版本,三个版本的简称分别为_、_、_。2Java编译器将用Java语言编写的源程序编译成_。3Java源程序的运行至少要经过_和_两个阶段。4Java源程序
25、文档和字节码文件的扩展名分别为“_”和“_”5Java程序可以分为JavaApplication和_。思考题实训题1下载并安装、测试JDK。2编写控制台程序,程序的功能是,输出“我喜欢Java程序设计!”和“我会刻苦学习!”两行文字信息。3.下载并安装、测试Eclipse。4.在Eclipse中编写控制台程序,实现案例1-3的功能。5.在Eclipse中创建一个HelloEclipse.java的应用程序,其功能是在屏幕上显示“努力学习Eclipse。”,编译并运行该程序。Thank you第2章-JAVA基础知识前言在认识Java语言的发展与特点并运行第一个Java程序后,本章将深入学习Ja
26、va基础编程,包括标识符、常量、变量、常用数据类型、控制台输入输出的使用、常用运算符与表达式、类型转换机制。本章分为三个项目项目一带你认识标识符、常量、变量和数据类型项目二带你学习控制台的输入输出项目三带你学习常用运算符、表达式和类型转换机制本节概述和学习目标理解标识符、常量、变量;正确使用常用数据类型;正确实现控制台的输入输出;理解常用运算符与表达式;了解类型转换机制;正确编写简单的顺序程序。目录1.1标识符、常量、变量和数据类型1.1.1标识符1.1.2常量1.1.3变量1.1.4数据类型1.2控制台的输入输出1.3常用运算符、表达式和类型转换机制1.1.1标识符标识符(identifie
27、r)是给程序中的实体(变量、常量、方法、数组等)所起的一个名字。注意:标识符必须以字母或下划线开头,由字母、数字或下划线组成;用户不能采用Java语言已有的关键字作为同名的用户标识符;标识符长度没限制;标识符区分大小写。1.1.1标识符例如,sum,PI,aa,bb43,ch,a_53ff,_lab,area都是合法的标识符,4mm,ma,_ch#a,1sum均是不合法的标识符。1.1.2常量常量是指在整个运行过程中其值始终保持不变的量。Java中的常量分为整型常量、浮点型常量、布尔常量和字符常量。常量的定义格式如下:final=,=;例如:finalinta=10,b=20;finalcha
28、rf1=f,d=F;提醒:在Java语言中,无类型后缀的实型常量默认为双精度类型,也可以加后缀D或d。指定单精度型的常量,必须在常量后面加上后缀F或f。实型常量可表示为指数型。1.1.3变量变量是由标识符命名的数据项,它是Java程序中的存储单元,在该存储单元中存储的数据值在程序的执行过程中可以发生改变。每个变量都必须声明数据类型,变量的数据类型决定了它所能表示值的类型以及可以对其进行什么样的操作。变量既可以表示基本数据类型,又可以表示对象类型(如字符串)的数据。当变量表示的是基本数据类型时,变量中存储的是数据的值;当变量是对象(引用)类型时,变量中存储的是对象的地址,该地址指向对象在内存中的
29、位置。1.1.3变量Java中的变量在使用前必须先声明,其声明格式为:,;=,=;例如:inta,b,c;floatf1=2.16f;doublea1,a2=0.0;其中,多个变量间用逗号隔开,a2=0.0是对双精度型变量a2赋初值0.0,末尾的分号是不能少的,只有这样才够成一个完整的Java语句。任何变量都有其固有的作用范围,即作用域。当声明一个变量的同时,就也指明了它的有效作用范围。有关变量的作用域还将在后续章节里讲解。1.1.4数据类型基本类型包括8种:布尔型(boolean)、字节型(byte)、字符型(char)、短整型(short)、整型(integer)、长整型(long)、浮点
30、型(float)和双精度型(double)。引用数据类型包括3种:类(class)、接口(interface)、数组(array)。任务1的实现任务1:编写一个应用程序,实现从键盘上输入圆的半径值后,程序自动计算圆面积并将结果显示在控制台上,即圆面积计算器。解决步骤:任务1练习编写程序,完成对两个变量分别赋值为1和2,计算12的最终结果?什么是运算符?什么是表达式?若已知a=3,b=4,c=false;试计算下列表达式的值。d=ayd=ab|!c目录1.1标识符、常量、变量和数据类型1.2控制台的输入输出1.2.1输入输出概述1.2.2控制台输出的实现1.2.3控制台输入的实现1.3常用运算符
31、、表达式和类型转换机制1.2.1输入输出概述要完成本任务,必须输入5个字符源码和输出密码,即涉及到数据的输入和输出。数据的输入输出在程序设计和开发中占有重要的地位,一个程序如果没有输出语句,就缺少和用户交流过程中最后的也是最重要的交互步骤,同时也缺少对程序正确性的验证;一个程序如果没有输入语句,则数据来源呆板,使得程序设计缺少灵活性。所以一般情况下,一个程序都至少有一个输出语句和必要的输入语句。Java使用System.out来表示标准输出设备,而使用System.in来表示标准输入设备。默认情况下,输出设备是显示器,而输入设备是键盘。1.2.2控制台输出的实现为了完成控制台的输出,只需要使用
32、println方法就可以在控制台上显示基本值或字符串。在绪论章节中,已经介绍过输出的方法,比如在控制台上输出字符串HelloJava!,具体代码如下所示。提醒:println方法会在输出的末尾换行,如果不需要换行,可以使用print方法输出。1.2.2控制台输入的实现Java并不直接支持控制台输入,但是可以使用Scanner类创建它的对象,以读取来自System.in的输入。如下所示:语法newScanner(System.in)表明创建了一个Scanner类型的对象,语法Scannerin声明in是一个Scanner类型的变量。整行的Scannerin=newScanner(System.i
33、n)表明创建了一个Scanner对象,并且将它的引用赋值给变量in。对象可以调用自身的方法。调用对象的方法就是让这个对象完成某个任务。可以调用表2-3中的方法以读取各种不同类型的输入。1.2.2控制台输入的实现例如,从键盘读取一个整数,并赋值给变量a,可以使用如下代码实现。任务2的实现任务2:谍战片中,特工时常通过“加密”电报,也就是一连串的数字和字符,向大本营传递“情报”。本任务将完成一个简单的加密程序,就是将输入的“china”译成密码,并输出。密码规律是:用原来字母后面第4个字母代替。具体步骤如下:提示用户输入5个源码;根据加密规则计算;输出5个加密码;任务2的练习求解一元二次方程提示用
34、户键盘输入a、b、c,求一元二次方程ax2bxc=0的实根。作为顺序程序,对方程是否有实根不作判断。随机产生一个4位自然数,输出它的逆数。如设某数2015,则其逆数为5102。目录1.1标识符、常量、变量和数据类型1.2控制台的输入输出1.3常用运算符、表达式和类型转换机制1.3.1运算符与表达式1.3.2数据类型转换1.3.3数据类型转换表达式、语句和块1.3.1运算符与表达式赋值运算符与赋值表达式赋值运算符“”把右边的数据赋值给左加的变量,左边只能是变量,右边可以是变量也可以是表达式。赋值运算的一般格式为:变量数据或表达式;例如:inta;/定义整型变量floatb;/定义float型变量
35、charch;/定义字符型变量1.3.1运算符与表达式扩展赋值运算符在赋值符“”前加上其他运算符,即构成扩展赋值运算符,它将运算的结果直接存到左边的已命名变量中去。Java支持的扩展赋值运算符如表2-4。1.3.1运算符与表达式算术运算符与算术表达式算术运算符算术运算符用于数值类型数据(整数或浮点数)的运算,算术运算符符根据需要的操作数个数的不同,可以分为单目操作符(三个)和双目操作符(五个)两种。如表2-5所示。1.3.1运算符与表达式下面以+操作符为例,说明单目操作符+和-的前缀式后缀式在使用上的区别:例如:inta,b,x=2,y=2;a=(+x)*2;/先对x加1,再做乘法;前缀方式相
36、当于“先增加,再使用”。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呢?这就是一个左结合性还是右结合性的问题。一般运
37、算的结合性是自左向右的左结合,但也有右结合性的运算,今后会遇到。如果只有结合性显然不够,上面的例子属于同级运算(只有加运算),但是如7+9*2,岂能只考虑运算的结合性?这就要考虑运算符的优先级的问题了。其实在小学里我们就知道混合运算规则:先算括号里面的,然后乘除,最后算加减。1.3.1运算符与表达式常用运算符的优先级从高到低是:()负号*、/、%+、-其中:*、/、%优先级相同,+、-优先级相同。表达式求值时,先按运算符优先级别高低依次执行,遇到相同优先级的运算符时,则按“左结合”处理。如表达式:a+b*c/2,其运算符执行顺序为:*/+。1.3.1运算符与表达式关系运算符关系运算是用来比较两
38、个数的大小,关系操作符是双目操作符。其中“”、“=”、“”、“(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运算符
39、与表达式逻辑运算符与逻辑表达式逻辑运算“&”与“”是短路(Short-Circuit)逻辑运算符,它们的运算顺序是从左向右进行的,如果左边已经满足了可执行的条件,则后面有的所有条件都会跳过去而不会再执行,所以称它们为短路逻辑运算符。“&”与“|”被称为非简洁运算符,它们需要把所有条件全部执行一遍。很显然,为了提高程序执行效率,应优先使用逻辑与“&”和逻辑或“|”运算符,而且对于逻辑与“&”,应尽可能预见性地把条件值为false的语句写在逻辑表达式的前边;对于逻辑非“|”,就尽可能地把条件值为true的语句写在逻辑表达式的前边。但是,如果需要每个条件都必须运行时,则只能选择使用布尔逻辑与“&”、
40、布尔逻辑或“|”了。1.3.1运算符与表达式逻辑运算符与逻辑表达式下面比较说明“&”与“&”的区别。左边程序使用“&”右边程序使用“&”inta=5,b=7;inta=5,b=7;booleanx=ab&a+=b-;booleanx=ab&a+=b-;运算结果:a=5,b=7,x为flase。运算结果:a=6,b=6,x为flase。因为在计算布尔型的变量x的取值时,&(非简洁与)两边的表达式的值无论真或假,都必须被计算;而对于&,当判断表达式左边(57)已经为false时,根据逻辑与的同时为真(true)结果才为真(true)的规则,就已经知道整个表达式的值为false,所以不用再判断运行后
41、面的其它条件了。1.3.1运算符与表达式条件运算符与条件表达式条件运算符是三目运算符,即它需要3个数据或表达式构成条件表达式。它的一般形式为:表达式1?表达式2:表达式3如果表达式1成立,则表达式2的值是整个表达式的值,否则表达式3的值是整个表达式的值。如下所示:1.3.1运算符与表达式位运算符与位表达式在计算机内部,数据是以二进制编码方式存储的,Java编程语言允许编程人员直接对二进制编码位运算,在Java中提供的所有位操作符中,除操作符以外,其余均为二元操作符。位操作符的操作数只能为整型和字符型数据,Java中的位运算符如表。1.3.1运算符与表达式位运算符与位表达式位操作符与的比较:用操
42、作符时,如果符号位为1,则右移后,符号位保持为1;与此类似,如符号位为0,则右移后符号位保持为0;用操作符时,右移后,左边总是填0。当两个不同长度的数(比如byte型和int型)进行位运算时,系统会将数据先转变为较长的类型,使两数对齐,再进行位运算。比如a为byte型而b为int型,则将a先扩展为int型再运算。二进制数左移、右移的特点是:向左移一位相当于把原数乘以2,向左移n位,相当于把原数乘以2的n次方;同理,向右移相当于把原数除以2,向右移n位,相当于把原数除以2的n次方。不过,由于移位时可能使最高位符号位发生变化,所以一般不建议采用移位的方法实现乘除运算。1.3.1运算符与表达式位运算
43、符与位表达式例:1101011001011001结果为:10001111110111013结果为:00000011/右移时,低位舍弃,高位补符号100111013结果为:11100011/右移时,低位舍弃,高位补符号位无符号右移时,低位舍弃,高位补0。如:100111002结果为:001001111.3.1运算符与表达式其他类型运算符与表达式Java语言中还提供了如下一些操作符,表所示。例:Stringst1=newString(Ateststring.);st1.charAt(0);inta=newint10;a0=1;doubleabc=12.345;intABC=(int)abc;结果:
44、ABC=12。Stringst1=newString(Ateststring.);Integeri=1;System.out.println(iinstanceofInteger);1.3.2数据类型转换Java是一种强制类型的转换,在编译时它会检测数据类型的兼容性。赋值和参数传递时,都要求数据类型的匹配。常数或变量从一种数据类型转换到另外一种数据类型即为类型转换。Java中的数据类型转换有三种情况:隐式转换(自动类型转换)、显示转换(强制类型转换)和使用类的方法转换。隐式转换(自动类型转换)允许在赋值和计算时由编译系统按一定的优先次序自动完成,通常,低精度类型到高精度的缺省类型转换由系统自动
45、转换。例如:inti=20;longj=i;1.3.2数据类型转换隐式转换从低级到高级的转换顺序如下:byteshort、int、long、float、doubleshortint、long、float、doublecharint、long、float、doubleintlong、float、doublelongfloat、doublefloatdouble显然byte和short不能隐式地转换为char。算术运算返回值与操作数类型之间的关系如表。1.3.2数据类型转换显示转换是将高精度数据类型转换到低精度数据类型,它是通过赋值语句来实现。其一般格式如下:(数据类型)变量名或表达式显示转换从高
46、级到低级的转换顺序如下:bytecharshortbyte、charintbyte、short、charlongbyte、short、char、intfloatbyte、short、char、int、longdoublebyte、short、char、int、long、float1.3.2数据类型转换当把高精度数据类型转化为低精度数据类型时,数据的表达范围降低,所以,这种由高到低的转换一方面可能会导致丢失部分信息,除非高精度数据类型所表达的数据值在低精度数据类型表达的数据范围之内;另一方面可能转换不能正确进行。例如不能将一个很大的整数500000转化char型,因为它超过了char范围(655
47、35),结果会出现错误!以下是Java中的数据类型之间合法转换关系,实线箭头表示在转换时不会丢失信息,虚线箭头表示在转换时可能丢失精度。1.3.2数据类型转换例:floatf=2.345f;inti=(int)f;/i的值为2longj=9;intk=(int)j;/k的值为9doubleabc=123.45;intABC=(int)abc;/ABC的值为123类方法转换使用Integer类的方法parseInt将String转换为对应的整数。Stringstr=123;/123为字符串型。inta=Integer.parseInt(str);/a值为数值型的123String类型基本类型使用
48、基本类型的包装类(如:byte的包装类为Byte,int的包装类为Integer等等)的parseXXXXX(String类型参数)方法。XXXXX为相应包装类名,可以1.3.2数据类型转换将字符串String转换成整数int,有以下两个方法:Stringstr=123;(1)inti=Integer.parseInt(str);(2)inti=Integer.valueOf(str).intValue();类似的,把字符串转成double,float,long的方法大同小异。基本类型String类型使用String类的重载方法valueOf(基本类型参数)可以将整数int转换成字串Strin
49、g,有以下三种方法:(1)Strings=String.valueOf(i);(2)Strings=Integer.toString(i);(3)Strings=+i;类似的,把double,float,long转成字符串的方法也大同小异。1.3.2数据类型转换操作符优先级操作符的优先级决定了在同一个表达式中多个操作符被执行的先后顺序,同一级里的操作符具有相同的优先级,同级的操作符则以从左到右的顺序进行;操作符的结合性决定了相同的优先级的操作符的执行顺序。表2-11列出了Java操作符从最高到最低的优先级,其中,第一行显示的是特殊的操作符(后缀操作符):圆括号、方括号、点。圆括号被用于改变运算
50、的优先级,方括号用于表示数组的下标,点用于将对象名和成员名连接起来。1.3.2数据类型转换1.3.2数据类型转换表达式、语句和块表达式由操作数(常量、变量、方法调用)和操作符按照一定的语法格式组成的符号序列。即操作符可以用来构建表达式,用表达式来计算值;而表达式又是语句的核心成分;语句又可以按照一定的形式分为多个语句块。(1)表达式表达式(expression)是由常量、变量、操作符和方法调用构成的结构,表达式是按照Java语言的语法构成的,它计算出单一值。1.3.2数据类型转换表达式、语句和块在使用表达式时要注意以下几点:表达式返回值的数据类型取决于表达式中使用的操作符及操作数的原始数据类型