Java语言程序设计高职PPT完整全套教学课件_第1页
Java语言程序设计高职PPT完整全套教学课件_第2页
Java语言程序设计高职PPT完整全套教学课件_第3页
Java语言程序设计高职PPT完整全套教学课件_第4页
Java语言程序设计高职PPT完整全套教学课件_第5页
已阅读5页,还剩819页未读 继续免费阅读

下载本文档

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

文档简介

软件专业核心课程Java语言程序设计

课程内容JavaOOP语法Java的运行机制JavaGUI应用程序的设计

流操作多线程技术网络通信技术JDBC操作数据库技术JDK新版本的新特性课程地位PrevHTMLSQL基础Java编程基础软件技术基础Android应用开发JavaScript/CSSSQL高级技术Java高级编程Project:B/SJSPJSP/Servlet/JavaBean/WebServiceStruts/Hibernate/Spring/AjaxAndroid项目实战HR/CRM/OA/B2C就业技能与素质结构图掌握一种或几种主流数据库管理系统了解软件工程的思想,可以自行阅读、分析、处理或编写开发文档了解OOAD(面向对象分析与设计),了解UML(统一建模技术)在项目开发中的使用积极的工作态度、较强的主观能动性和团队合作精神本门课程目标学完本门课程后,你能够:运用Java技术编写复杂的应用程序运用AWT、Swing等组件包设计和开发GUI应用程序运用JDBC技术开发数据库应用程序课程项目展示《绿葱茏户外店货品购销存系统》演示第一章

Java概述本章学习任务配置Java运行环境编写第一个Java应用程序编写第一个JavaApplet程序本章技能目标了解什么是Java;了解Java的特点、优点和应用的领域;掌握配置Java运行环境和如何开发Java程序。预习检查(1)--预习新单词单词释义单词释义PDAByteCodeJDKApplicationJREAppletJVMDocumentAPI预习检查(2)什么是JDK,JRE和JVM?说说你对GoogleAndroid的了解?简述一下Java应用程序的开发步骤?Java概述-内容目录Java发展史Java语言的特点Java的跨平台特性Java开发环境与工具Java基本应用-ApplicationJava基本应用-AppletJava发展史(1)1990年Sun公司的JamesGosling开发名称为Oak的语言。希望用于嵌入到PDA(PersonalDigitalAssistant个人数字助理)、家用电器等的微处理器。1993年Internet正处于增长时期,因此Sun公司将目标市场转向Internet应用程序。1994年将Oak语言更名为Java。(java音译为“爪哇”,是印尼一个盛产咖啡的岛屿)1995年正式推出1995年Sun公司的HotJava浏览器问世。1996年, Sun公司发布Java的第一个开发包JDKv1.01997年, Sun公司发布了Java开发包JDKv1.11998年,发布了Java开发包JDKv1.2(即:Java2)Java发展史(2)2004年,JDK1.5发布了,Sun公司认为此版本是Java史上的里程碑,改名为JDK5.0。2005年,JavaOne大会召开,Sun公司公开JavaSE6。此时,Java的各种版本又被更名,取消其中的数字“2”:J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME。2010年4月20日,美国数据软件巨头甲骨文(Oracle)公司20日宣布收购太阳微电子(Sun)公司,这是Java自诞生以来头等大事!2011年7月28日,JDK7发布。2014年3月JDK8发布,新增了Lambda表示特性。2007年,Google发布了基于移动开发的AndroidSDK组件包Java概述-内容目录Java发展史Java语言的特点Java的跨平台特性Java开发环境与工具Java基本应用-ApplicationJava基本应用-Applet1.1.1什么是JavaJava是一种跨平台的,纯面向对象的编程语言。

Java主要应用在基于WEB的程序中。Java在客户端可用来生成两类程序:应用程序(Application)、小应用程序(Applet)Java既是一种编译执行的语言,也是一种解释执行的语言。JAVA1.1.2Java语言的特点3-1简单Java的风格类似于C++,因而对C++程序员而言非常容易掌握Java编程技术;Java摒弃了C++中容易引发程序错误的地方,如指针操作和内存管理;面向对象在Java中任何东西都是对象,是真正纯粹面向对象的语言。更有利于编制大型软件工程分布式Java提供了包容广泛的例程库,可处理像HTTP和FTP这样的TCP/IP协议。Java应用程序可通过一个特定的URL来打开并访问对象,就像访问本地文件系统那样简单1.1.2Java语言的特点3-1健壮性Java在编译和运行程序时都要对可能出现的问题进行检查它提供自动垃圾收集来进行内存管理具有面向对象的异常处理机制安全Java语言提供的安全机制编译器提供的安全机制字节码校验器类加载器体系结构中立Java程序被编译成一种与体系结构无关的字节代码只要安装了Java运行时系统,Java程序可以在任意的处理器上运行可移植性源代码级目标代码级1.1.2Java语言的特点3-1解释执行编译器javac.exe将处理.java源文件生成类文件类文件可通过名称为java.exe的加载实用程序解释执行,将Java字节码转换为机器可执行代码。高性能通过JIT编译器(Just-In-Time,运行时编译执行的技术)首先将字节码编译成固有代码,将结果缓存下来,然后在需要时调用它们。多线程Java语言内置支持多线程的功能Java类库提供了Thread类动态Java自身的设计使它适合于一个不断发展的环境。在Java类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。课程思政时事讨论:华为如何破局?思政目标:培养危机意识和创新精神时事:众所周知,最近一段时间,美国对中国“华为”公司进行了技术封锁,禁令影响到了“华为”设备上使用的电子芯片的生产。电子芯片的商用包括很多技术环节:设计、加工、封装、测试等。那么“华为”的芯片生产的短板在哪些环节?如果你是一个“华为”人,想破局应该做出哪些方面的努力?请试着把你的想法列举出来。与知识点结合:了解课程体系架构的必要性。Java概述-内容目录Java发展史Java语言的特点Java的跨平台特性Java开发环境与工具Java基本应用-ApplicationJava基本应用-Applet1.1.3了解Java的跨平台性--机器语言不同种类的计算机有不同的机器语言了解Java的跨平台性--高级语言编译器的编译目标语言程序高级语言程序中间语言程序(如:Java的class代码)机器语言程序(如:C,C++)了解Java的跨平台性—操作系统OperatingSystem操作系统用来支持最基本的操作,比如创建文件和文件夹,在屏幕上显示,打印等等。操作系统是用户与计算机之间的主要接口。所有的程序都与操作系统通讯机器语言决定代码移植的可行性平台可以理解为计算机系统与硬件的结合体。为一种平台编写的代码不能在另一种平台上运行。MACSoftwareforMACMachineSunSolarisSoftwareforSolarisSoftwareforIBMMachine编译执行的高级语言程序存在的问题及解决方案问题解决办法解释器解释器解释器为特定的平台编写的程序在其他平台上无法使用为解决这个问题,我们使用了“解释器”。

这样在解释器的帮助下,我们就可以编写一次代码而在不同的平台上运行。Java程序的运行环境Java是解释执行的高级编程语言Java虚拟机编译型源程序字节码程序Java源程序可执行程序EXE裸机操作系统解释器编译连接编译执行解释执行.java.class因此,每个平台都有一个特定的JVM。即JVM是与平台相关的平台编译时.java(源代码).class(字节码)运行时类加载器字节码校验器解释器JIT代码生成器硬件网络Java运行时环境(JavaRuntimeEnvironment)Java虚拟机2-1Java虚拟机(JVM—JavaVirtualMachine)是在计算机上模拟运行的假想的计算机,它可以是硬件或软件(通常为软件)。它有自己独立的指令集系统(相当于计算机的CPU,内存和寄存器等设备)JVM负责将Java字节码程序翻译成机器码,然后由计算机执行。JVM其它主要功能如下:加载.class文件管理内存执行垃圾收集

Java虚拟机2–2(实时编译器)使用“实时(JustInTime)”编译器,也称为JIT编译器。可以提高Java代码的执行速度。SUN公司在Java2发行版中提供了JIT编译器,JIT编译器是Java虚拟机的一部分。JIT的主要用途是将字节码指令集转换为针对某一特定微处理器的机器代码指令。Java虚拟机2–3(Hotspot编译器)Hotspot性能优化编译器是对Java2平台的增强主要加速模块的组成部分:内存模型,垃圾收集,线程同步,本地编译器。特性综述:总体性能更强(和JIT编译器相比);针对平台的最优化;精确的一次性垃圾收集器;Java虚拟机2–3(Hotspot编译器)JavaHotspot性能优化编译器主要包括两个文件和其它一些调试库文件,位置在jre\bin\目录下:新版本JDK包含两种编译器(server和client),它们都有下面的文件jvm.dll测试Hotspot:DOS提示符:>java-version提示信息:使用“混合模式”,可以把使用频率高的代码编译成本地代码,而其它的代码仍然解释执行,可以获得最高的效率。垃圾收集2-1Java虚拟机使用两个独立的堆内存,分别用于静态内存分配和动态内存分配。

其中一个是非垃圾收集堆内存,用于存储所有类定义、常量池和方法表。用于垃圾收集的算法主要针对存放在动态堆内存中的对象。垃圾收集2-2垃圾收集器将在收集对象实例之前调用finalize方法。即使显式调用(System.gc())方法来启动垃圾收集线程,但它也不能保证立即运行。因为垃圾收集线程的运行优先级很低,所以可能经常会被中断。Java概述-内容目录Java发展史Java语言的特点Java的跨平台特性Java开发环境与工具Java基本应用-ApplicationJava基本应用-Applet如何理解JRE与JVM的区别?JVM负责将Java字节码程序(Class代码)翻译成二进制机器语言,它的核心就是“解释器”;JRE是由JVM和JavaPlatform核心类以及相关支撑文件组成(例如tools.jar和其它核心工具);总之:JDK包含JRE,JRE包含JVM。JDKJREJVMJava的开发环境(JDK)类库编译器调试器Java运行时环境JDK(JavaDevelopmentKit)是有助于程序员开发Java程序的Java开发工具包,它包括:小常识:Java2的版本号是和JDK的版本号相联系的,如JDK1.2版本,则称为Java2Java编程构架及其工具包Java版本例如:适用于windows的JavaSE6版本jdk-6u7-windows-i586-p.exe可以从下面的网址:/technetwork/java/javase/downloads/下载JDKJava平台标准版Java平台企业版Java平台微型版JavaSEJavaEEJavaME1.1.4JDK的目录结构1.1.5JavaAPI结构(核心API)java.lang包java.awt包java.awt.event包java.applet包包java.io包java.util包javax.swing包1.1.5JavaAPI文档2-1使用JDKAPI打开InternetExplorer键入下列URL地址/technetwork/java/javase/documentation/index.html通过单击相关主题,可以浏览网页也可以从JDK安装目录下找到API文档例如:%JDK安装根目录下%\Java\j2sdk1.5.0\docs\api\JavaAPI文档2-21.1.6Java开发环境及工具介绍javac.exe是用来编译源代码的命令。java.exe是用于执行类文件的命令,而类文件将在Java虚拟机中运行类。appletviewer命令允许在万维网浏览器的环境之外运行Applet。JDK提供的常用工具1.1.6Java开发环境及工具JDK提供的常用工具javac.exe是用来编译源代码的命令。java.exe是用于执行类文件的命令,而类文件将在Java虚拟机中运行类。appletviewer.exe命令允许在万维网浏览器的环境之外运行Applet。Java开发工具软件文本编辑器(记事本,Editplus,UltraEdit)非可视化IDE(JCreator)可视化IDE(JBuilder,Eclipse)开发环境设置需要配置的环境变量:path变量classpath变量(参考视频)配置path变量值:C:\JDK1.5\bin配置classpath变量值:.;C:\JDK1.5\lib;C:\JDK1.5\jre\lib;……Java概述-内容目录Java发展史Java语言的特点Java的跨平台特性Java开发环境与工具Java基本应用-ApplicationJava基本应用-AppletJavaApplication程序基本结构import语句class主类名称{publicstaticvoidmain(String[]args){

方法体}}第一个Java程序//这是名称为“HelloWorld.java”的简单程序importjava.io.*;classHelloWorld{ publicstaticvoidmain(Stringargs[]) { System.out.println(“欢迎访问Java世界!“); }}在记事本编辑Java程序单击开始依次选择程序->附件->记事本//这是名称为“HelloWorld.java”的简单程序importjava.io.*;classHelloWorld{ publicstaticvoidmain(Stringargs[]){ System.out.println(“欢迎访问Java世界!“);}}编译和运行单击开始依次选择程序->附件->命令提示符进入程序所保存的目录输入命令编译HelloWorld输入命令执行HelloWorld输出结果Java概述-内容目录Java发展史Java语言的特点Java的跨平台特性Java开发环境与工具Java基本应用-ApplicationJava基本应用-AppletJavaApplet开发1)制作MyApplet类,并编译成MyApplet.class文件;2)制作HTML文件,引入<Applet>标记,并设置属性code=MyApplet.class3)运行HTML文件具体参考微课视频总结3-1Java是一种面向对象的编程语言,主要用于Internet应用程序。Java可用来生成两类程序:应用程序、小应用程序(Applet)。Java既是一种解释执行的语言,也是一种编译执行的语言。总结3-2Java的特点包括简单面向对象分布式健壮性安全体系结构中立可移植性解释执行高性能多线程动态总结3-3Java虚拟机是Java编程语言的核心。Java运行时环境(JRE)包含一方面与硬件交互、另一方面又与程序交互的JVM。Java开发工具包有助于开发Java程序。JDK提供多种工具,这些工具位于JDK的bin目录下,具体如下:JavacJavaappletviewer探究式任务课堂上保存的工程如何再次导入到Eclipse?听过Intellijidea开发环境吗,通过网络了解一下?探究式任务课堂上保存的工程如何再次导入到Eclipse?听过Intellijidea开发环境吗,通过网络了解一下?作业编程解决:使用Java程序输出信息思政目标:提高综合职业素养将“2020年10月中共中央十九中全会通过国家第14个五年规划和2035年远景目标!”这句话通过Application和Applet显示出来。简述编辑、编译和运行JavaApplication的全过程。TheEnd第二章Java数据类型

回顾什么是JDK,JRE和JVM?说说你对GoogleAndroid的了解?简述一下Java应用程序的开发步骤?本章学习任务变量作用域实例常量的分类与使用实例数据类型的转换与包装类的实例本章技能目标掌握Java数据类型的分类了解变量与常量定义、区别学会数据类型的转换规则了解包装类的作用并应用它预习检查(1)--预习新单词单词释义单词释义primitivereferenceidentifierReservedWordWrapperClassKeyWord预习检查(2)Java有哪些数据类型变量与常量的区别数据类型的转换规则有哪些Java数据类型-内容目录Java语言的数据类型变量与常量

数据类型的转换包装类C语言风格化的输出表2-1 Java语言的数据类型基本类型(primitive)布尔类型(boolean)字符类型(char)整数类型字节型(byte)短整型(short)整型

(int)长整型(long)浮点类型浮点型(float)双精度型(double)引用类型(reference)类(class)接口(interface)数组(array)2.1Java数据类型的分类Java语言的数据类型分为:基本类型(primitive)和引用类型(reference)两大类其中基本数据类型包括8种,数据不能修改;引用类型包括3种,它可以由简单的数据类型组合而成(如数组),可以根据需要自行定义(如继承类和接口)。如表2-1所示各种数据类型的取值范围和所占用的内存空间。如表2-2所示表2-2 数据类型的取值范围数据类型所占空间(字节)取值范围布尔型(boolean)1false或true字节型(byte)1-128~+127字符型(char)2`\u0000`~`\uFFFF`短整型(short)2-27~+(27-1)整型(int)4-231~+(231-1)长整型(long)8-263~+(263-1)浮点型(float)4-3.4e38~+3.4e38双精度型(double)8-1.7e308~+1.7e308注意:关于Java中的数据类型1Java中字符串不再是字符数组,而是对象,String和StringBuffer都可以用来表示字符串;2JDK1.5之前,Java不支持C++中的指针,结构体,联合和枚举等类型3Java中所有的数据类型长度都是确定的,与平台无关,这与C语言不同,因此Java中没有sizeof操作符Java数据类型-内容目录Java语言的数据类型变量与常量

数据类型的转换包装类C语言风格化的输出2.2变量和常量变量是在程序执行期间可根据需要经常变化的值,是指定给变量、方法和类的名称,以便编译器可唯一标识它们。变量具有3个特性:名称:标识符初始值:为其赋值或者是保留缺省值作用域:在不同程序块中的可用性及生命周期常量是程序执行期间不能被修改的值,常量分为常数和常变量(一般把“常数”称为“常量”),常变量需要先定义,赋值后使用。常数:如true,false,10,3.14159,‘a’,“tom”等常变量:(如定义常变量圆周率PI)finaldoublePI=3.14159;下面会学到:2.2.1标识符(identifier)2.2.2Java关键字2.2.3变量2.2.4常量2.2.5综合示例2.2.1标识符(identifier)(一)标识符是对变量、方法、类和对象的命名标志,在Java中,标识符的命名规则如下:

(1)标识符中的字符只能是字母、数字、下划线(_)或美元符($)组成,且不能是关键字; (2)首字符不能是数字; (3)标识符大小写敏感; (4)没有长度限制

2.2.1标识符(identifier)(二)Java中采用的是Unicode字符集,而不是windows系统中的ASCII字符集,Unicode字符集中每个字符用16位表示,整个字符集共有65536个字符,包含了汉字、日文、朝鲜文等多国文字符号。下面举例说明Java语言中的标识符的使用规则。合法的标识符:

chara_3; float_var3; double$money;不合法的标识符:

int3a; (数字不能开头) chara-3; (“_”下划线可以,但“-”横线不可以做标识符字符) Stringname&;(有非法字符) intint; (不能是关键字)2.2.2Java关键字

Java语言本身保留了一些特殊的标识符,称为保留字(ReservedWord)或关键字(KeyWord),关键字有着特定的语法含义,它们不允许作为程序中定义的类、方法或变量的标识符。Java中的关键字都以小写字母表示。

表2-3列出了Java语言中使用的关键字。DesignedByChiyong©2008表2-3Java关键字原始数据类型分支关键字异常处理字面值常量byteshortintlongfloatdoublecharboolean

ifelseswitchcasedefaultbreaktrycatchfinallythrowthrowsfalsetruenull方法相关关键字returnvoid循环关键字方法、变量和类修饰符对象相关关键字包相关关键字dowhileforbreakcontinueprivatepublicprotectedfinalstaticabstractsynchronizedvolatilestrictfpnewextendsimplementsclassinstanceofthissuperpackageimport

注意:关于Java中的关键字1)Java中true、false、null都是小写的,这与C/C++不同。

2)Java中一些从其他语言继承下来的关键字在Java虽然存在,但已经不再使用(如const,goto等),我们也称它们为保留字,但不在表中列出。

2.2.3变量

变量定义格式如下:

[<访问修饰符>][<存储修饰符>]<数据类型><变量名>[=初始值]; 其中方括号表示可选项,尖括号表示必选项,<变量名>要符合前面提到的标识符命名规则。 举例:publicstaticfinalintNUM=10;

说明:public属于访问修饰符,static和final都属于存储修饰符

变量的作用域与初值变量的可分为:全局变量,局部变量 变量的分类取决于作用域,全局变量指具有类块作用域的类成员变量,局部变量指具有方法块作用域的变量。局部变量没有访问修饰符,且局部变量必须初始化或赋值,否则不能使用;而全局变量有初始值,初始值为该变量数据类型的默认值,见表2-4。表2-4类成员变量的默认值类成员变量的数据类型默认值布尔类型(boolean)false整型(Integer)0浮点型(Float)0.0字符型(character)‘\u0000’局部变量与全局变量示例(一)行号Var.java程序代码1publicclassVar

{staticinta;//类的成员变量,是全局变量,作用域在类Var的花括号之间

publicstaticvoidmain(String[]args){

inta=10;//局部变量,作用域在main()方法的花括号之间

System.out.println("a="+a);//输出a的值

}}23456789 关于类成员变量及其作用域的概念,会在后面“面向对象特性”的章节中详述,这里先举个简单的例子说明类成员变量的默认值的意义。 例2-1:变量的作用域

局部变量与全局变量示例(二)【运行结果】a=10;【代码说明】很简单,因为当作用域重合时,局部变量覆盖全局变量。试一试:如果第6行中的a不设初始值会怎样?答案是:编译时会有错误提示“variableamightnothavebeeninitialized”(变量没有初始化)如果去掉第6行的代码又会输出什么?答案是:a=0,因为这是输出类成员变量,而类成员变量有默认值。

2.2.4常量Java中的常量分为常数和常变量,通常我们所说的常量一般特指常数(或“字面量”)。常变量由final关键字来修饰。一、整型常量二、浮点(实型)常量三、字符型常量四、布尔型常量一、整型常量整型(泛整型)常量包括byte,short,int,long型四种,其中long型常量可以后加字母l或L,如789L。Java的整型常量按进制分有三种形式,示例如下:1)十进制:123,-456,02)八进制:以数字0开头,如0123表示十进制数83 下面的形式是错误的:079,因为9不在八进制的基数范围内。3)十六进制:以数字0和字母x(或X)开头,如0x1F2D表示十进制数7981

二进制与十进制的转换规则(一)1)将二进制数(11011.101)2转换为十进制数转换规则:逐位乘以2的指数幂,乘积相加即可

(11011.101)2=1×24+1×23+0×22+1×21+1×20+1×2-1+0×2-2+1×2-3=16+8+2+1+0.5+0.125=(27.625)102)十进制转换为二进制转换规则:整数部分“除2取余法反读法”二进制与十进制的转换规则(二)int型long型最大值Integer.MAX_VALUELong.MAX_VALUE最小值Integer.MIN_VALUE

Long.MIN_VALUE

例:将十进制数(29)10转换为二进制数

Java在简单数据类型对应的包装类中提供了四个常值变量用来表示整型的最大和最小值,如表2-5所示(“包装类”的概念请参看本章的第四节)。222222914731010111余数表2-5 Java包装类中整型常量的最大和最小值的静态常量表示二、浮点型(实型)常量

Java的实型常量有float和double两类,表示形式也有两种,其中默认实型常数为double型值,即3.14相当于3.14d或3.14D,如果要表示float型值,要在数字后加f或F,如23.4F。1)十进制数表示形式:314.152)科学计数法表示形式:3.1415e2,其中e或E之前必须有数字,后面的指数必须为整数。

Java在简单数据类型的包装类中也提供了几个常值变量用来表示实型的最大和最小值,如表2-6所示。

Float.NaN为Not-a-Number的缩写,表示非数字值。floatdouble最大值Float.MAX_VALUEDouble.MAX_VALUE最小值Float.MIN_VALUEDouble.MIN_VALUE正无穷大Float.POSITIVE_INFINITY

Double.POSITIVE_INFINITY负无穷大Float.NEGATIVE_INFINITYDouble.NEGATIVE_INFINITY0d/0dFloat.NaN

Double.NaN

表2-6 Java包装类中实型常量的静态常量表示三、字符型常量Java中的字符为双字节字符,用16位无符号数表示,如0x0061表示‘a’。字符常量都是用单引号括起来单个字符,而不是使用双引号。某些不能使用引号括起来直接表示的字符,可以使用转义字符‘\’或“\”来实现,如用“\’”来代表单引号(’)本身。此外,还可以后跟一至三个八进制数或加u再跟四个十六进制数来表示一个字符常量,如“\141”和“\u0061”都代表字符‘a’,如表2-7所示。

转义字符描述\ddd

1到3位八进制数表示的字符\uxxxx4位十六进制数表示的字符\’单引号\”双引号\\反斜杠\r回车\n换行\b退格\t制表位表2-7 Java的转义字符四、布尔型常量

布尔型数据只有两个值true和false。

注意:Java中的布尔值和数字之间不能相互转换,即布尔值不对应零或非零。

常、变量代码书写规范Sun为Java制定了代码编写规范,对常、变量代码书写有明确的要求,如:1)除了局部变量名外,所有实例变量(包括类变量,类常量),均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。变量名应简短且富于描述。变量名的选用应该易于记忆,即能够指出其用途。2)尽量避免单个字符的变量名(如a,b,i等等),除非是一次性的临时变量;3)实例变量前面需要一个下划线,以示与其它变量相区别4)常量的声明,应该全部大写,单词间用下划线隔开,等等。2.2.5综合示例(1-1)VarDemo.java程序代码publicclassVarDemo{publicstaticvoidmain(String[]args){

System.out.println("***变量赋值与显示***");boolean

bool=true;byteb=2;shorts=3;charch='a';int

i=4;longl=5;floatf=3.14f;doubled=3.14;

System.out.println("bool="+bool);

System.out.println("b="+b);

System.out.println("s="+s);

System.out.println("ch="+ch);例2-2:常量与变量2.2.5综合示例(1-2)

System.out.println("i="+i);

System.out.println("l="+l);

System.out.println("f="+f);

System.out.println("d="+d);

System.out.println("***字符常量显示***");

System.out.println("短整型常量:"+067);

System.out.println("长整型常量:"+0x3a4FL);

System.out.println("八进制字符常量:"+'\141');

System.out.println("十六进制字符常量:"+'\u0061');

System.out.println("浮点型常量:"+3.14F);

System.out.println("双精度常量:"+3.14);

System.out.println("***非数字常量显示***");

System.out.println("非数字常量:"+0d/0d);

System.out.println("***常变量赋初值***"); finalfloatf2=9f;

System.out.println("常变量:"+f2);}}

显示结果如下:***变量赋值与显示***bool=trueb=2s=3ch=ai=4l=5f=3.14d=3.14***字符常量显示***短整型常量:55长整型常量:14927八进制字符常量:a十六进制字符常量:a浮点型常量:3.14双精度常量:3.14***常变量赋初值***常变量:9.0***非数字常量显示***非数字常量:NaNJava数据类型-内容目录Java语言的数据类型变量与常量

数据类型的转换包装类C语言风格化的输出2.3数据类型的相互转换(3-1)

各种数据类型可以混合运算。运算中,不同类型的数据要先转化为指定的一种数据类型,然后再进行运算。转换的方式分为两种:自然转换和强制转换。 2.3.1自然转换

转换规则如表2-8所示:低高byte→short→char→int→long→float→double操作数1的数据类型操作数2的数据类型自然转换后的数据类型byte或shortint

int

byte、short或intlonglongbyte、short、int或longfloatfloatbyte、short、int、long或floatdoubledoublecharintint

表2-8 自然转换规则2.3数据类型的相互转换(3-2)解释:精度不同的两种类型的数据混合运算时,低精度数据自动转换为相应的高精度数据类型。如果操作数为浮点型,那么只要其中一个为double类型,结果就是double类型;如果两个操作数都为float或其中一个是float类型而另一个是泛整型,结果就是float类型;如果操作数为泛整型,只要其中一个是long类型,结果就是long类型。低于int型的数据(如byte,short,char)之间混合运算时,自然转换为int型数据类型。

数据类型的自然转换示例例2-3:数据类型的自然转换TransferType.javapublicclassTransferType{publicstaticvoidmain(String[]args){ byteb=1; shorts=2; charch='a'; longl1=3L; floatf1=1.23F; doubled1=4.56D;

int

i=b+s+ch; longl2=i-l1; floatf2=b+f1; doubled2=d1/s;

System.out.println("i="+i);

System.out.println("l2="+l2);

System.out.println("f2="+f2);

System.out.println("d2="+d2);}}【运行结果】i=100l2=97f2=2.23d2=2.282.3数据类型的相互转换(3-3)

2.3.2强制转换

如果高精度数据向低精度数据转换,就需要使用强制类型转换运算符“(数据类型)”。但强制转换会造成精度丢失,使用时需要注意。

示例:

inta; a=(int)3.64d;//强制转换后,a值为3Java数据类型-内容目录Java语言的数据类型变量与常量

数据类型的转换包装类C语言风格化的输出2.4包装类(WrapperClass)

为了改善Java简单数据类型的功能(比如数字类型与字符串类型之间的相互转换,或者获得基本数据类型的信息),sun为Java类库引入了包装类。 在Java中每种简单数据类型都对应一种包装类,如表2-9所示:基本数据类型(PrimitiveDataType)封装类(WrapperClass)booleanBooleanbyteByteshortShortcharCharacterintIntegerlongLongfloatFloatdoubleDouble表2-9 基本数据类型与对应的包装类包装类的应用示例(5-1)

例2-4:包装类的特殊常量FinalVarDemo.javapublicclassFinalVarDemo{publicstaticvoidmain(String[]args){ //输出int型取值范围中的最大值

System.out.println("Integer.MAX_VALUE="+Integer.MAX_VALUE); //输出int型取值范围中的最小值

System.out.println("Integer.MIN_VALUE="+Integer.MIN_VALUE); //输出double型取值范围中的最大值

System.out.println("Double.MAX_VALUE="+Double.MAX_VALUE); //输出double型取值范围中的最小值

System.out.println("Double.MIN_VALUE="+Double.MIN_VALUE); //输出float型正无穷大值,是Infinity 包装类的应用示例(5-2)

System.out.println("Float.POSITIVE_INFINITY="+Float.POSITIVE_INFINITY); //输出float型负无穷大值,是-Infinity System.out.println("Float.NEGATIVE_INFINITY="+Float.NEGATIVE_INFINITY); //输出float型非法数字值,也可以由0f/0f得到

System.out.println("Float.NaN="+Float.NaN); //输出float型非法数字值,也可以由0d/0d得到

System.out.println("Double.NaN="+Double.NaN);}}【运行结果】Integer.MAX_VALUE=2147483647Integer.MIN_VALUE=-2147483648Double.MAX_VALUE=1.7976931348623157E308Double.MIN_VALUE=4.9E-324Float.POSITIVE_INFINITY=InfinityFloat.NEGATIVE_INFINITY=-InfinityFloat.NaN=NaNDouble.NaN=NaN包装类的应用示例(5-3)ArgsDemo.javaclassArgsDemo{publicstaticvoidmain(Stringargs[]){Integernum1=newInteger("3");Integernum2=newInteger("4");

intsum=Value()*Value();//intValue()是Integer类的静态方法,用于从包装类的实例中获取基本数据值。}}例2-5:包装类功能【运行结果】12包装类的一项重要的功能就是基本数据类型与字符串之间的转换。下面我们讨论一下作为String类型的控制台参数向int型数据的转换包装类的应用示例(5-4)

ArgsDemo.javaclassArgDemo{publicstaticvoidmain(Stringargs[]){

intsum=0;for(int

cnt=0;cnt<args.length;cnt++)sum+=Integer.parseInt(args[cnt]);

System.out.println("和为:"+sum);}}例2-6:控制台输入加数,并求和运行方法:编译后,在控制台中输入多个数字作为加数,格式如下>javaArgDemo356【运行结果】和为14包装类的应用示例(5-5)【代码说明】主方法的参数args是一个字符串类型的可变数组,即它的大小是不定的;args.length代表数组args的大小,即它的成员个数;控制台中执行时>javaArgDemo356,输入了3个参数(中间以空格隔开),被赋给了args数组,此时args.length为3;因为args数组的成员是String类型的,所以需要Integer.parseInt(args[cnt])来转换它们,其中parseInt()方法是Interger类的一个静态方法,用于把字符串类型的参数转换成int型数据。DesignedByChiyong©2008Java数据类型-内容目录Java语言的数据类型变量与常量

数据类型的转换包装类C语言风格化的输出2.5C语言风格化输出输出效果:System.out.println(a+”+”+b+”=”+(a+b));等同于:System.out.printf(“%d+%d=%d”,a,b,(a+b));pintf()函数输出效果,参考源码TestPrintf.java总结Java的基本(原始)数据类型有8种,引用数据类型有3种;Java变量名的命名规则,常量的基本格式;Java数据类型的相互转换规则;包装类的作用。探究式任务C语言没有String类型,它如何处理字符串数据呢?最新的JDK引入了var型数据类型,它有什么特点?Java的C语言风格化输出还支持哪些参数?了解Java的装箱与拆箱的概念。作业编程解决:使用控制台参数思政目标:提高综合职业素养2020年中国GDP首度突破百万亿元大关,达到1015986亿元,同比增长2.3%,请计算出2019年我国的GDP是多少亿元?(要求利用控制台参数输入2020年GDP值与增长率,并输出2019年GDP值)提示:将字符串"123.45"转换为浮点数的方法为Double.valueOf("123.45").doubleValue()或Double.parseDouble("123.45")。TheEnd第三章运算符与表达式

回顾Java有哪些数据类型数据类型的转换规则有哪些本章学习任务记忆运算符的执行优先顺序表学习各种运算符的用法本章技能目标掌握运算符和表达式的概念了解运算符种类及其功能理解表达式中运算符的优先级及其规律预习检查(1)--预习新单词单词释义单词释义instanceDataType预习检查(2)a=3,b=2那么a/b=?若b=2.0那么a/b=?计算下列表达式的结果:(a>b)?9:10运算符与表达式-内容目录运算符和表达式的概述运算符表达式3.1运算符与表达式概述运算符是对操作数进行运算的符号。按操作符所操作的数目来分,运算符可以分为:一元(单目)运算符,二元运算符和三元运算符。其中一元运算符分为前置和后置两种。如果按照运算功能来分,运算符可以分为下面几类:(1)算术运算符(+、-、*、/、%、++、--)(2)位运算符(>>、<<、>>>、&、|、^、~)(3)关系运算符(>、<、>=、<=、==、!=)(4)逻辑运算符(!、&&、||)(5)赋值运算符(=)(6)条件运算符(?:)(7)其他运算符(动态内存分配new运算符、数组下标运算符[]、强制类型转换运算符(DataType)、实例判断运算符instanceof,类或实例成员操作运算符.等)表达式是常量、变量、运算符和方法调用的组合序列,它执行完毕后返回确定的值。运算符优先级与结合性优先级运算符结合性1.[]()操作数++操作数--2操作数++操作数--!~-instanceof3new(type)4*/%左->右5+-左->右6<<>>>>>左->右7<><=>=左->右8==!=左->右9&左->右10^左->右11|左->右12&&左->右13||左->右14?:左->右15=+=-=*=/=%=左->右16&=^=|=<<=>>=>>>=右->左运算符与表达式-内容目录运算符和表达式的概述运算符表达式算术运算符运算符用途举例说明++,--自动递增,自动递减++i,j--i先自增1,再参与运算;j先参与运算再自减1+,-取正、负号i=-25将25取负后赋给i*乘i=15*2将15乘以2后赋给i/除fVar=25.0f/5用5去除25.0,结果给fVar,为5.0%取余j=5%3将5除3取余,结果为2+,-加、减x=fVar-8.9将fVar减去8.9,结果给x 算术运算符分一元(单目)运算符和二元(双目)运算符。一元运算符只有一个参与运算的操作数,二元运算符有两个参与运算的操作数。表3-2列出了算术运算符及其用途和相关说明。表3-2 算术运算符算术运算符针对不同数据类型操作数的运算结果符合数据类型转换规则(见表2-8)。算术运算符示例(1-1)容易忽略的错误解释inta=7/2;a=3而不是3.0doubled=7/2.0;d=3.5;inta=9L/3;9L/3返回值是long型,不能赋值给int型变量afloatf=4F+5.0;4F+5相当于4F+5D,返回值是double型1)一元算术运算符一元算术运算符共有四种(自增++,自减--,取正值+,取负值-),涉及的操作数只有一个。其中按++,--运算符前置和后置来分类,只有四种情况,(假设有变量x)分别为:x++,x--前置运算,表示x先参与表达式的运算,然后再自增(减)1。++x,--x后置运算,表示x先自增(减)1,然后再参与表达式的运算。例3-1:自增减一元运算符示例表3-3列举了算术运算中常见的错误和容易忽略的盲点算术运算符示例(1-2)2)二元算术运算符二元算术运算符共有五种(+,-,*,/,取模%),涉及的操作数有两个。 取模运算(%)和整除运算(/)需要注意的是:它的操作数可以是浮点数,如果其中一个操作数是浮点数,那么运算结果也是浮点数;如果两个操作数都是泛整型,那么运算结果也是整型。例3-2:计算表达式的值例3-1:自增减一元运算符示例Test.javapublicclassTest{ publicstaticvoidmain(Stringargs[]){ intx=2; System.out.println(""+x++);//输出x值为2 System.out.println(""+(++x));//输出x值为4 }}【代码说明】此程序的代码可以理解为:System.out.println(""+x);//输出x值为2x++;//x值为3++x;//x值为4System.out.println(“”+x);//输出x值为4例3-2:计算表达式的值publicclassTest{ publicstaticvoidmain(Stringargs[]){ inta=5,b=2; doublec=5.0,d=2.0; System.out.println(""+a/b); System.out.println(""+a%b); System.out.println(""+c/d); System.out.println(""+c%d); }}【运行结果】212.51.0【代码说明】1)若表达式a/b的除号两边的操作数都为整形,则“/”运算符代表整除;2)若表达式a/b的除号两边的操作数有一个为浮点型,则运算结果也为浮点型;3)另外注意,表达式a%b取模运算符两边的操作数可以为浮点型。改变算术运算符优先级若a=5、b=2、c=1,求c+2*a++%--d*3的值?相当于(c+(2*a++)%(--b)*3)=4

注意:1)Java中没有幂运算符,而使用Math类的静态方法pow()来实现;2)Java中的Math提供了大量的数学方法和常量,如求平方根和圆周率π等,使用时的调用格式很简单,如求平方根可以用Math.sqrt(double),表示圆周率可以用Math.PI。

3.2.2关系运算符运算符用途举例说明>表达式1>表达式2i>100i大于100,返回true,否则,返回false<表达式1<表达式2i<100i小于100,返回true,否则,返回false>=表达式1>=表达式2i>=128i大于等于128,返回true,否则,返回false<=表达式1<=表达式2i<=10i小于等于10,返回true,否则,返回false==表达式1==表达式2i==81i等于大于81,返回true,否则,返回false!=表达式1!=表达式2i!=9i不等于9,返回true,否则,返回false表3-4列出了关系运算符及其用途和相关说明。表3-4 关系运算符3.2.3位运算符运算符用途举例说明~按位取反~6401111110按位取反,结果10000001<<左移64<<101000000左移1位得100000000>>右移64>>201000000右移2位得00010000>>>无符号右移126>>>101111110右移1位得00111111&按位与126&6401111110与01000000按位与,结果01000000^按位异或126^6401111110与01000000按位异或,结果00111110|按位或126|6401111110与01000000按位或,结果01111110Java的移位运算有:左移位运算符<<,右移位运算符>>,无符号右移位运算符>>>,位运算操作数为整型。表3-5列出了位运算符及其用途和相关说明。表3-5位运算符补码的知识原码反码补码原码:是数值转化成的对应二进制数。(如十进制32的原码为100000)反码:原码的按位取反。补码:反码加1。正数的原码、反码和补码相同负数的反码为该数的绝对值原码按位取反,补码为反码加1,如3-6表所示正、负数的原码、反码和补码正数126负数-126原码0111,11101111,1110反码0111,11101000,0001补码0111,11101000,0010DesignedByChiyong©2008表3-6 正、负数的原码、反码和补码左移位运算(如X<<n)右移位运算(如X>>n)相当于相当于移位运算符(1-1)(1)左移位运算符<<(带符号左移位运算符)左移位运算时,数值的各位向左移动,高位左移后溢出,舍弃,右侧补0。

例如:32<<1,0010,0000左移1位得0100,0000,为正数64。(2)右移位运算符>>(带符号右移位运算符)右移位运算时,数值的各位向右移动,低位右移后溢出,舍弃,左侧高位补入原来高位的值。

例如:-126>>1,1000,0010右移1位得1100,0001,为负数-63。(3)无符号右移位运算符>>>(添零右位移运算符)无符号右移位运算时,数值的各位向右移动,低位右移后溢出,舍弃,左侧高位补入0(这是与>>不同之处)。

例如:-126>>>1,1000,0010右移1位得0100001。 从以上介绍可以推导出移位运算规律:表3-7移位运算规律移位运算符(1-2)补码为:1100,0001反码为:1011,1110原码为:1011,1111所以结果为-63,符合表3-7的移位运算规律示例:求解-126>>1根据表3-7速算,结果为-63,那么结果是如何推导出来的呢?已知-126的补码是1000,0010(见表3-6),1000,0010>>1得1100,0001想知道此结果的原值,需再转换为原码,转换规则仍为“取反加一” 试一试:求解-127>>1是多少?这无法使用运算规律来速算,只能推导。

想一想:Java中没有无符号左移运算符,读者可以自行考虑一下为什么?3.2.4逻辑运算符逻辑运算符用于连接关系表达式,对关系表达式的结果进行逻辑运算,如(关系表达式1)&&(关系表达式2)表3-8列出了逻辑运算符及其使用方法。运算符用途举例说明!取反运算!(255>125)比较表达式为true,取反后结果返回false&&逻辑与运算(9>6)&&(100>125)右表达式为false,结果返回false(其一为假,即为假)||逻辑或运算(9>6)||(100>125)左表达式为true,结果为true(其一为真,即为真)表3-8逻辑运算符例3-3:观测“短路”运算符的效果注意:Java中的&&和||运算符采用了电工学中的“短路”方式进行运算例3-2:计算表达式的值publicclassTest{ publicstaticvoidmain(Stringargs[]){ inta=2,b=1; System.out.println(""+(a>b||++b>=a)); System.out.println(b); }}【运行结果】true1【代码说明】因为逻辑表达式中a>b的值为true,因此整体的表达式就为true,右侧的++b>=a表达式不再参与运算,所以b的值仍为13.2.5赋值运算符赋值运算符分为“=”号和复合赋值运算符两种。“=”号是最简单的赋值运算符,其左边是变量,右边为表达式,

inta=3+5; //正确 intb=3.0+5; //错误,右值为8.0,是double型 intc=(int)(3.0+5);//正确,c为8 doubled=a+6; //正确 赋值时,应遵循数据类型转换规则(见本书第二章2.3节)。赋值运算符“=”还可以同其他运算符结合,实现运算和赋值双重功能,简称复合赋值运算符。组合方式为: <变量><其他运算符>=<表达式>; inti=5; i+=21;相当于执行:i=i+21;结果为i=5+21。3.2.6条件运算符条件运算符(?:)是唯一的一个三元运算符,形式为:

表达式1?表达式2:表达式3表达式1是关系或布尔表达式,返回值为boolean值,如果表达式1的值为true,则整体表达式的值为表达式2的值;如果如果表达式2值为false,则整体表达式的值为表达式3的值。 示例:

inta=1800; intsalary=a>1600?2000:1900; //因为a>1600结果为true,所以结果salary值为2000。运算符与表达式-内容目录运算符和表达式的概述运算符表达式3.3.1表达式的值1表达式是常量、变量、运算符和方法调用的组合序列,它有确定的值(一般为表达式推算后最左端的值)。语句是带分号(;)结束标志的表达式序列,它可以有确定的值或无返回值方法调用。2表达式示例:a=(5>3)&&(b<6) //表达式的值为a的值++i //表

温馨提示

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

评论

0/150

提交评论