1、JAVA基础基础演示课件教师自我介绍v教师姓名:教师姓名:q(请进行自我介绍请进行自我介绍 )演示课件课程概述课程概述vJava开发环境介绍及编程入门v标示符、关键字及数据类型v表达式及流程控制v数组v常用数据结构及算法v面向对象编程OOPv封装、继承、多态v异常处理Exception演示课件课程目标课程目标v掌握程序设计语言开发的一般步骤v编译并运行Java应用程序 v理解并使用Java的在线帮助文档 v理解Java语言的语法元素和结构特点 v理解面向对象程序设计的一般特性,并且能使用这些特性 v理解并使用Java异常处理机制演示课件程序语言发展历程程序语言发展历程v机器语言 二进制机器代码
2、,不便理解,不好记忆,与硬件平台相关,不具有可移植性。v汇编语言 用助记符号来描述,与机器代码一一对应,能够理解,但同样不可移植。v高级语言按自然语言的语法风格书写程序,方便理解,在原代码的层次上可以实现跨平台移植。10001001 11100101mov dptr,#2000 if(ab)max=a;else max=b;演示课件高级语言开发过程高级语言开发过程编辑原代码 编译 执行演示课件JAVA起源起源vStanford University NetworkvJAVA名称的起源v官网:http:/ Gosling现任SUN公司副总裁及Sun研究院院士,他亲手设计了Java语言,并开发了J
3、ava编译器和JAVA虚拟机,使Java成为了世界上最流行的开发语言。演示课件JAVA历史历史v1995年,Java首次公开亮相。v1996年1月23日Sun Microsystems发布了JDK1.0。这个版本包括了两部分:运行环境(即JRE)和开发环境(即JDK)。v1997年2月18日发布了JDK1.1。v1998年,JDK1.2版本发布。将Java分成了J2EE、J2SE和J2ME。表明了Java开始向企业,桌面应用,和移动设备应用3大领域挺进。v2000年,JDK1.3 发布。v2002年,JDK1.4 发布。v2004年,JDK1.5 发布。同时JDK1.5改名为J2SE5.0。v
4、2005年6月,Java SE 6。此时,Java的各种版本已经更名以取消其中的数字“2”v2006年11月13日,SUN公司宣布Java全线采纳GNU General Public License Version 2,从而公开了Java的源代码。演示课件JAVA应用概述vJAVAMEq微型版vJAVASEq标准版vJAVAEEq企业版演示课件名词解释名词解释vJDK Java Development Kit(java 开发工具包)Software Development Kit(1.2版本-1.4版本)vJVM Java Virtual Machine(java 虚拟机)vJRE Java
5、Runtime Environment(java 运行环境)演示课件JAVA开发基本术语vJDK包含Java运行的基本类库和开发命令,安装JDK可以进行完整的Java开发。vJRE包含Java运行的基本类库和一些运行命令,安装JRE可以运行编译好的Java程序。vJVMJava语言内部运行的核心。演示课件v Java Programmer Java程序员v Java Developer Java开发人员v Java Web Developer web开发人员v J2EE Architect J2EE 架构师Java职业的分工职业的分工演示课件Java 语言特点语言特点1、简单性:Java语言类
6、似于C/C+,可以说Java语言是C+语言的一个纯净的版本,在 java语言中没有头文件,指针,运算符重载等2、面向对象:C面向过程 C+面向过程+面向对象Java 纯面向对象的语言,3、分布式:Java有一个扩展的例程库,用于处理 Http/Ftp之类的 Tcp|Ip协议。Java语言能通过 url打开的访问网络上的对象,其便利的程序如同本地访问.演示课件Java 语言特点语言特点4、健壮性:java投入了大量的精力进行早期的问题检测,后期的动态检测,并消除了有出错倾向的状态,java和 c+最大的不同在于 java采用的指针模型可以消除重写内存和损坏数据的可能性.5、安全性:java适用于
7、网络/分布式环境,为了达到这个目标,在安全方面投了大量的精力,使用java可以构建防病毒。禁止运行时堆栈溢出,禁止自己内存空间,未授权的读写文件。6、可移植性:跨平台:JVM 作用用来解释执行字节码文件根据不同的平台进行不同的解释执行,从而可以达到跨平台作用,C+生成直接可以运行的机器码文件。java素有“一次编译,到处运行”演示课件参考书籍参考书籍演示课件Java 认证介绍认证介绍q SCJPSun certified java5 programmerScjp主要偏重于对java语言的语法与及JDK的内容.q SCJDSun certified java5 DeveloperSCJD相对于S
8、CJP进一步测试用JAVA 开发应用程序的能力 演示课件开发工具开发工具v 开发环境q JDKq 编辑器只要是文本编辑器或unix环境下的viq Windows环境可以使用功能较在的文本编辑器q 集成开发环境 Eclipse IDE NetBeans 等v Eclipse下载网站q http:/演示课件Module 1Java开发环境介绍及编程入门开发环境介绍及编程入门 演示课件本章目标本章目标q了解高级语言开发的一般步骤了解高级语言开发的一般步骤q正确安装及配置正确安装及配置Java开发和运行环境开发和运行环境q理解理解JVM的运行机制的运行机制q了解了解java语言的垃圾回收机制语言的垃圾
9、回收机制q编写并运行第一个编写并运行第一个java代码代码 演示课件下载并安装下载并安装JDK1.从以下网站可下载从以下网站可下载JDK http:/ 根据开发机器的不同,请下载相应平台下的根据开发机器的不同,请下载相应平台下的JDK2.Install JDK Windows:run the executable Unix:run the shell演示课件 JDK 下载页面下载页面Win 32平台JDK下载Linux平台JDK下载演示课件配置配置Java环境变量环境变量3.设置如下三个环境变量设置如下三个环境变量:JAVA_HOME,CLASSPATH,PATH Windows 2000/N
10、T/XP系统:系统:开始开始设置设置控制面板控制面板系统系统高级高级环境变量环境变量演示课件Windows环境下的安装配置环境下的安装配置v 安装安装JDK软件包软件包v 设置环境变量设置环境变量点击我的电脑右键点击我的电脑右键-属性属性-高级高级-环境变量环境变量-新建新建JAVA_HOME=JDK安装目录编辑安装目录编辑:path=在原来的在原来的path路径前增加路径前增加 JDK安装目录安装目录/bin 注意注意windows平台中是以分号分隔平台中是以分号分隔v 测试测试 运行运行cmd java javac java-version 如果以上三个命令都能运行的话,说明安装成功如果以
11、上三个命令都能运行的话,说明安装成功演示课件JDK安装目录介绍安装目录介绍v Bin 编译器和工具编译器和工具v Demo 演示演示v Docs HTML格式的类库文档格式的类库文档v Include 用于编译本地方法的文件用于编译本地方法的文件v Jre java运行环境文件运行环境文件v Lib 类库文件类库文件v Src 类库源文件类库源文件演示课件Java虚拟机虚拟机(JVM)BytecodeJVMCPU提供字节码(提供字节码(bytecode)的运行环境)的运行环境屏蔽底层平台的差异屏蔽底层平台的差异演示课件JVM的作用的作用演示课件Java垃圾收集的概念垃圾收集的概念vJava语言
12、使用语言使用new运算符来分配内存空间,运算符来分配内存空间,没有动态内存分配的概念。没有动态内存分配的概念。vJava系统线程自动处理无用内存空间的垃圾系统线程自动处理无用内存空间的垃圾收集收集 vJava程序员只能建议,但不能强制程序员只能建议,但不能强制JVM去执去执行垃圾收集程序,使用下面的代码行垃圾收集程序,使用下面的代码:java.lang.System.gc()java.lang.Runtime.gc()演示课件Java程序的运行过程程序的运行过程HelloWorldApp.javaHelloWorldApp.classjavacjava跨平台不跨平台演示课件第一个第一个Java
13、程序程序HelloWorld.java public class HelloWorldpublic static void main(String args)System.out.println(“Hello World!”);演示课件要点要点(1)一个源文件中至多只能有一个一个源文件中至多只能有一个public的的class 源文件名必须和它中定义的源文件名必须和它中定义的public的类名相同的类名相同 一个文件中可以同时写多个类,但是只能有一个公开一个文件中可以同时写多个类,但是只能有一个公开的类的类 Main方法方法 java程序的入口程序的入口演示课件要点要点(2)v编写源代码编写源
14、代码,生成生成.java文件文件v编译源代码编译源代码,生成生成.class 文件文件javac HelloWorld.javav运行该程序运行该程序java HelloWorld演示课件Jvm加载字节码文件加载字节码文件v 加载代码加载代码 (类加载器类加载器)将将class字节码文件读入内存字节码文件读入内存,并放在数据的方法区并放在数据的方法区,在堆区中创建在堆区中创建java.lang.Class对象对象,用于封装类在方法区内的数据结构用于封装类在方法区内的数据结构v 连接连接 把已经读入内存的类的二进制数据合并到把已经读入内存的类的二进制数据合并到jvm运行环境中去运行环境中去v 验
15、证代码验证代码 (字节码校验器字节码校验器)保证加载类有正确的内部结构保证加载类有正确的内部结构,并与其他类协调一致辞主要有以下几个方并与其他类协调一致辞主要有以下几个方面面:文件结构检查文件结构检查,语义检查语义检查,字节码验证字节码验证,二进制兼容的验证二进制兼容的验证v 准备准备 Jvm为类的静态变量分配内存为类的静态变量分配内存,并调置默认的初始值并调置默认的初始值v 解析解析 Jvm把类的二进制数据中的符号引用替换为直接引用把类的二进制数据中的符号引用替换为直接引用v 执行代码执行代码 (解释器解释器)Jvm执行类初始化语句执行类初始化语句,为类静态变量赋以初值为类静态变量赋以初值演
16、示课件练习练习:Information.java1.开发一个开发一个Java程序打印出下列信息程序打印出下列信息:姓名姓名 性别性别 年龄年龄 毕业学校毕业学校 户籍户籍演示课件Package包结构包结构Package a.b.c;public class HelloWorldpublic static void main(String args)System.out.println(“Hello World!”);将生成的字节码文件以包结构形式来存放,用于方便管理类文件将生成的字节码文件以包结构形式来存放,用于方便管理类文件Package 必须要写在源文件第一行,注释除外必须要写在源文件第一
17、行,注释除外演示课件Package包结构包结构 带有包结构的程序在编译是需要加参数:带有包结构的程序在编译是需要加参数:v Javac -d .HelloWorld.java 运行带包结构的程序时,要指定类全名运行带包结构的程序时,要指定类全名v Java a.b.c.HelloWorld演示课件Import 导入机制导入机制Package a.b.c;Import java.util.*;public class HelloWorldpublic static void main(String args)System.out.println(“Hello World!”);System.ou
18、t.println(new Date();演示课件生成生成java doc文档文档/*此种注释存在于源代码中时,编译时使用此种注释存在于源代码中时,编译时使用javadoc命令命令可以生成可以生成doc文档文档*/用法:用法:Javadoc -d .HelloWorld.java演示课件生成生成java doc文档文档v authorv version 标注在标注在javadoc中的使用中的使用 使用以上标记时要增加使用以上标记时要增加 author -version参数参数进行注释文档的抽取进行注释文档的抽取,默认情况下会忽略默认情况下会忽略演示课件压缩成压缩成jar文件文件在在java中可
19、以将生成的字节码文件按照生成目录的结构中可以将生成的字节码文件按照生成目录的结构压缩成压缩成jar文件方便使用文件方便使用压缩命令:压缩命令:Jar -cvf first.jar a解压命令:解压命令:Jar -xvf first.jar运行运行jar 文件中的程序文件中的程序:java -classpath first.jar a.b.c.HelloWorld演示课件Jar命令参数命令参数 x 解压解压 u 更新更新 d 列表列表 v 显示压缩过程显示压缩过程 c 创建压缩文件创建压缩文件 f 压缩文件名压缩文件名 m 按照清单指定的系统进行压缩按照清单指定的系统进行压缩演示课件命令行参数命
20、令行参数 Echo.javapublic class Echopublic static void main(String args)System.out.println(args0);运行命令:运行命令:Java Echo xubin演示课件要点:要点:v 可执行程序必需要可执行程序必需要main方法方法v 只能只能public和和static调换位置调换位置v args可以是任意的名字可以是任意的名字v args0 代表第一个命令行参数代表第一个命令行参数v 注意注意:运行时一定要有命令行参数输入运行时一定要有命令行参数输入,否则会有数组否则会有数组下标越界异常出现下标越界异常出现演示课件
21、练练 习习 编程打印出所有命令行的参数。编程打印出所有命令行的参数。从命令参数中接收姓名,在程序打印从命令参数中接收姓名,在程序打印Hello xxxxx 演示课件Java API 文档文档Download it from http:/演示课件本章总结本章总结v 在这一章里,我们讨论了以下问题在这一章里,我们讨论了以下问题:q怎样建立怎样建立Java开发环境开发环境qJava语言的关键特性语言的关键特性qJava虚拟机虚拟机(JVM)的功能的功能qJava的垃圾收集机制的垃圾收集机制q常用常用Java开发命令和开发工具包开发命令和开发工具包q编写并运行一个编写并运行一个Java应用程序应用程序
22、演示课件Module 2标示符、关键字和数据类型标示符、关键字和数据类型演示课件本章目标本章目标q程序注释程序注释q标示符标示符q关键字关键字q基本数据类型基本数据类型演示课件注注 释释v三种类型的注释三种类型的注释q/单行注释单行注释q/*这是一段多行注释,它跨越了多个行这是一段多行注释,它跨越了多个行*/q/*这是一个文档注释,可以使用这是一个文档注释,可以使用JDK的的javadoc工具工具从原文件中抽取这种注释形成程序的帮助文档。从原文件中抽取这种注释形成程序的帮助文档。*/v使用使用javadoc命令建立命令建立HTML格式的程序文档格式的程序文档javadoc options pa
23、ckagenames sourcefiles files演示课件Java的标示符的标示符1,什么是标示符?,什么是标示符?在在java语言中用来给一个类、变量或方法命名的符号语言中用来给一个类、变量或方法命名的符号2,标示符的命名规则:,标示符的命名规则:以字母以字母,“_”或或“$”符号开头符号开头 可以包含字母、可以包含字母、“_”、“$”和数字符号和数字符号 大小写敏感大小写敏感 不能与保留关键字冲突不能与保留关键字冲突 没有长度限制没有长度限制例如:例如:identifier _sys_ var1$char userName user_ name演示课件Java的标示符(续)的标示符(
24、续)3,命名,命名约定:类名类名,接口名接口名:每个单词的首字母应该大写:每个单词的首字母应该大写 class MyFirstClass interface Weapon 字段、方法以及对象:第一个单词首字母应小写,其他单词首字母大写字段、方法以及对象:第一个单词首字母应小写,其他单词首字母大写 boolean isWoman void setName(String name)常量:全部用大写字母表示。常量:全部用大写字母表示。public final int GREEN public final int HEAD_ COUNT Java包(包(Package):它们全都字母小写。):它们全都
25、字母小写。package java.awt.event 演示课件Java中的关键字中的关键字关键字列表:关键字列表:abstract boolean break byte case catch char class continue default do double else extends enum false final finally float for if implements import instanceof int interface long native new null package private protected public return short stat
26、ic super switch synchronized this throw throws transient true try void volatile while Java 中中 true false 不是关键字不是关键字,而是而是boolean类型的字面量类型的字面量保留字:保留字:const,goto所有的关键字都是小写,所有的关键字都是小写,friendly,sizeof不是不是java的关键字的关键字 演示课件数据类型数据类型v基本数据类型(基本数据类型(primitive type)vbyte short int longvfloat double char booleanv
27、引用数据类型(引用数据类型(reference type)演示课件Java的基本数据类型的基本数据类型qboolean 布尔值(布尔值(true 或或 false)qbyte 8-bit 整形值整形值qshort 16-bit 整形值整形值qint 32-bit 整形值整形值qlong 64-bit 整形值整形值qchar 16-bit unicode编码的字符编码的字符qdouble 64-bit 浮点数值浮点数值qfloat 32-bit 浮点数值浮点数值演示课件布尔类型布尔类型-boolean一个一个boolean类型的变量用来表示一个或真或假的关系类型的变量用来表示一个或真或假的关系一
28、个一个 boolean 类型变量的值必须是类型变量的值必须是true 或或 false二者二者 之一之一 boolean isCorrect=true;演示课件文本数据类型文本数据类型char和和 Stringv char q 其实就是一个无符号的其实就是一个无符号的16位整形,其范围为位整形,其范围为065535,用来存储该字符,用来存储该字符的的Unicode编码值,因为编码值,因为Unicode 编码中包含汉字的编码,所以一个编码中包含汉字的编码,所以一个char类型的变量也可以存储一个汉字字符。类型的变量也可以存储一个汉字字符。q 在代码中直接给出的一个字符值必须用单引号括起来。在代码
29、中直接给出的一个字符值必须用单引号括起来。char zhChar=中中;char enChar=a;char ucChar=u0060;q 对某些不方便直接书写或直接书写有歧义的字符,对某些不方便直接书写或直接书写有歧义的字符,java语言规定用语言规定用转义字符给出。转义字符给出。q 可以把可以把char类型数据当作整数数据来操作。例如:类型数据当作整数数据来操作。例如:int three=3;char one=1;int four=three+one;演示课件转义字符转义字符 转义字符转义字符描述描述 ddd1到到3位位8进制数所表示的字符进制数所表示的字符(ddd)uxxxx1到到4位位
30、16进制数所表示的字符进制数所表示的字符(xxxx)单引号字符单引号字符 双引号字符双引号字符 反斜杠字符反斜杠字符 r回车回车 n换行换行 f走纸换页走纸换页 t横向跳格横向跳格 b退格退格Java语言中转义字符都以语言中转义字符都以给出常用转义字符列表:给出常用转义字符列表:演示课件字符串类型字符串类型-Stringv Stringq 是是JDK中定义的一个类,不是基本数据类型中定义的一个类,不是基本数据类型q 一个一个String对象可以用来存储多个字符,在程序中直接给出一个对象可以用来存储多个字符,在程序中直接给出一个 String值要用双引号括起来值要用双引号括起来 String m
31、yName=“Blues”;q 可以使用可以使用+运算符把多个运算符把多个String数据连接起来,并且还可连接其他类数据连接起来,并且还可连接其他类型的数据型的数据q 例如:例如:int count=7;System.out.println(Counted +count+chars.);演示课件整形数据(整形数据(byte,short,int and long)v 三种形式给一个整形变量直接赋值三种形式给一个整形变量直接赋值:十进制、八进制和十六进制十进制、八进制和十六进制v 直接给出的值默认是直接给出的值默认是int类型。类型。v 长整形值应该在数字后面跟上长整形值应该在数字后面跟上 l
32、或或 L标示标示public void testIntType()int ia=0 x55;/十六进制十六进制 int ib=011;/八进制八进制 byte bb=0 x771;byte ba=(byte)0 x771;long la=1234567L;/十进制十进制 演示课件整形数据在计算机内的存储方式整形数据在计算机内的存储方式v 计算机能存储的值都是二进制值计算机能存储的值都是二进制值,整形数据在计算机中的存储方式分两整形数据在计算机中的存储方式分两种情况讨论:种情况讨论:short a=57;0000 0000 0011 10011111 11111100 0111 1,正整数,存储
33、该数字的二进制原码。,正整数,存储该数字的二进制原码。short a=-57;2,负整数,存储该数字的二进制补码。,负整数,存储该数字的二进制补码。int a=57;0000 0000 0000 00000000 0000 0011 1001int a=-57;1111 1111 1111 11111111 1111 1100 0111高字节位高字节位低字节位低字节位演示课件浮点数据类型浮点数据类型 float 和和 doublev 直接在程序中书写的浮点数默认为直接在程序中书写的浮点数默认为 dobule类型。类型。v float 类型的数据占类型的数据占32位长度(位长度(4 Bytes)
34、v double类型的数据占类型的数据占64位长度(位长度(8 Bytes)v 直接表示一个直接表示一个float 类型的值必须在数字后跟类型的值必须在数字后跟 f 或或Fv 直接表示一个直接表示一个double 类型的值可以在数字后跟类型的值可以在数字后跟d 或或Dv 可以用科学计数法表示,如:可以用科学计数法表示,如:123.456e3或或123.456E3public void testFloatType()float fa=123.4f;float fb=12.5E300F;float fc=(float)12.5E300;double da=123D;double db=123.45
35、6D;double dc=123.45e301;演示课件基本数据类型的取值范围基本数据类型的取值范围TypeBitsBytesMinimum RangeMaximum Rangeboolean81Only two values:true or falsebyte81-2727-1short162-215215-1char1620216-1int324-231231-1long648-263263-1float324Not neededNot neededdouble648Not neededNot needed演示课件变量的声明和赋值变量的声明和赋值package sample;public
36、class Assign public static void main(String args)int x,y;/声明声明int类型变量类型变量x和和y float z=3.414f;/声明声明float类型变量并赋值类型变量并赋值 double w=3.1415;/声明声明double类型变量并赋值类型变量并赋值 boolean truth=true;/声明声明boolean类型变量并赋值类型变量并赋值 char c;/声明声明char类型变量类型变量c String str;/声明声明String类型的引用类型的引用 String str1=“bye”;/声明声明String类型的引用并
37、且实例化类型的引用并且实例化 c=A;/给给c变量赋值变量赋值 str=“Hi out there!”;/给给str实例化实例化 x=6;y=1000;演示课件引用数据类型(引用数据类型(reference type)v 数组数组Array,类,类 classe,接口,接口interface属于属于reference 类型。类型。v reference 类型的变量是所引用的对象的内存地址类型的变量是所引用的对象的内存地址。v 例子:例子:class MyDate private int day=1;private int month=1;private int year=2000;public
38、 MyDate(int day,int month,int year).public void print().public class TestMyDate public static void main(String args)MyDate my_ birth=new MyDate(22,7,1964);演示课件引用数据类型(引用数据类型(reference type)v 创建一个类对象:创建一个类对象:v MyDate my_ birth=new MyDate(22,7,1964);演示课件引用数据类型(引用数据类型(reference type)两个引用变量的赋值将会产生如下结果:两个
39、引用变量的赋值将会产生如下结果:int x=7;int y=x;MyDate s=new MyDate(22,7,1964);MyDate t=s;t=new MyDate(22,12,1964);两个变量指向同一个对象:两个变量指向同一个对象:演示课件对象气球对象气球引用对象对象引用对象对象就像一个充满氢气的气球,我们没有办法直接去得到它,要想对它的使用都必须通过一根对象就像一个充满氢气的气球,我们没有办法直接去得到它,要想对它的使用都必须通过一根连着它的绳子来访问,这根绳子就是对象的引用。一根绳子同时只能连着一个气球,就像一个连着它的绳子来访问,这根绳子就是对象的引用。一根绳子同时只能连着
40、一个气球,就像一个引用同时只能指向一个对象;可以用多根绳子同时连接一个气球,也就是可以有多个引用同时引用同时只能指向一个对象;可以用多根绳子同时连接一个气球,也就是可以有多个引用同时指向同一个对象;如果某个气球没有任何绳子连着它,那它就会飞走,同样,某个对象如果没指向同一个对象;如果某个气球没有任何绳子连着它,那它就会飞走,同样,某个对象如果没有引用连接它,它就会成为垃圾,等着被有引用连接它,它就会成为垃圾,等着被java的垃圾收集器回收;如果某根绳子没有连接任何的垃圾收集器回收;如果某根绳子没有连接任何气球,那么它就是一个空引用,对它的访问没有意义。同样,某个引用如果没有指向对象,那气球,那
41、么它就是一个空引用,对它的访问没有意义。同样,某个引用如果没有指向对象,那么对它的访问将会抛出么对它的访问将会抛出NullPointerException引用null演示课件本章总结本章总结 在这一章中,我们讨论了以下问题在这一章中,我们讨论了以下问题:不同类型的注释不同类型的注释 标示符和关键字标示符和关键字 基本数据类型基本数据类型 引用类型引用类型 对象的概念对象的概念演示课件练练 习习1,写一个程序,要求定义出boolean,int,char,double,float,String 类型的变量并赋初值,然后将这些值输出出来。2,程序中定义有如下语句,画出这些整形值在内存空间中的存储 状
42、态。int a=74;int b=-132;int c=0 x2B8F;3,下列哪些赋值语句是错误的:(1)byte b=0 x175;(2)int i=0 x27f;(3)char c=123;(4)int a=真;(5)float f=12.345E2;(6)boolean f=0;演示课件练练 习习 4,判断下列语句中的a和b的值是否相等:(1)int a=0;int b=0;(2)int a=0;char b=u0000;(3)int a=123;char b=u007B;(4)int a=0 x123;char b=123;(5)int a=3+5;char b=8;(6)int a
43、=3+5;char b=8;(7)char a=u0000;char b=0;演示课件Module 3表达式及流程控制语句表达式及流程控制语句演示课件本章目标本章目标vJava的运算符的运算符v基本数据类型的赋值基本数据类型的赋值v布尔表达式布尔表达式v选择结构选择结构(if else,switch)v循环结构(循环结构(while,dowhile,for)v使用使用continue和和break进行循环控制进行循环控制演示课件常用运算符列表常用运算符列表序号描述运算符结合性1括号和引用()。左右2单目运算符+-!右左3算术运算符*/%+-左右4关系运算符 =!=左右5逻辑运算符&|&|左右6
44、位运算符&|左右7条件运算符?:/8赋值运算符=+=-=*=/=%=&=|=右左演示课件算术运算符算术运算符v 说明:说明:qJava对对“+”运算符进行了扩展,使它能够进行字运算符进行了扩展,使它能够进行字符串的连接,符串的连接,如如“abc”+“de”,得到串,得到串“abcde”q+i,-i 在使用在使用i前,先使前,先使i的值改变的值改变qi+,i-在使用在使用i后,再改变后,再改变i的值的值演示课件关系运算符关系运算符v 说明:说明:qJava中,任何数据类型的数据(包括基本类型和引用类中,任何数据类型的数据(包括基本类型和引用类型)都可以通过型)都可以通过=或或!=来比较是否相等来
45、比较是否相等(这与这与C、C+不不同同)。q关系运算的结果返回关系运算的结果返回true或或false,而不是,而不是C、C+中中的的1或或0。q演示课件布尔逻辑运算符布尔逻辑运算符q逻辑运算符逻辑运算符AND(&)、)、OR(|)以及)以及NOT(!)能生成一)能生成一个布尔值(个布尔值(true或或false)q说明:说明:只可将只可将AND,OR或或NOT应用于布尔值。不可将一个应用于布尔值。不可将一个非布尔值当作布尔值在逻辑表达式中使用非布尔值当作布尔值在逻辑表达式中使用例如:以下是非法的。例如:以下是非法的。int i=1,j=2;i&ji|j!i演示课件布尔逻辑运算符布尔逻辑运算符
46、q说明:说明:对浮点数字的比较是非常严格的。对浮点数字的比较是非常严格的。短路运算:短路运算:1、a&b&c2、a|b|c3、x=y=1 a=5,b=3,c=2,d=1 (x=ab)&(y=cop1 op2op1右移op2位op1 op1 op2op1无符号右移op2位演示课件位运算符(位运算符(,&,|,)演示课件位运算符(位运算符(,:将一个数的各二进制位全部右移若干位:将一个数的各二进制位全部右移若干位,移到右端的低位被移到右端的低位被舍弃,最高位则移入原来高位的值舍弃,最高位则移入原来高位的值 例如例如:a=00110111,则,则 a2=00001101 b=11010011,则,则
47、 b2=11110100右移一位相当于除右移一位相当于除2取商取商例如:例如:128 1 returns 128/2=64 256 4 returns 256/16=16-256 4 returns -256/16=-16 :一个数的各二进制位无符号右移若干位,与运算符:一个数的各二进制位无符号右移若干位,与运算符相同相同,移出的低位被舍弃,但不同的是最高位都补,移出的低位被舍弃,但不同的是最高位都补0。如如:a=00110111,则则 a2=00001101b=11010011,则则 b2=00110100演示课件位运算符位运算符q 说明:说明:用来将一个数的各二进位全部左移若干位。高位左移
48、后溢出舍弃,:用来将一个数的各二进位全部左移若干位。高位左移后溢出舍弃,低位补低位补0。例如:例如:a=00001111,则,则a2=00111100。在不产生溢出的情况下,左移一位相当于乘在不产生溢出的情况下,左移一位相当于乘2128 1 returns 128*2=25616 2 returns 16*2*2=64演示课件类型转换类型转换v 基本数据类型和引用类型的数据都可以转换类型,但这基本数据类型和引用类型的数据都可以转换类型,但这种转换是有限制的种转换是有限制的v 类型转换分为两种:自动类型转换类型转换分为两种:自动类型转换(隐含转换隐含转换)和强制和强制类型转换类型转换(显式转换显
49、式转换)v 隐含类型转换发生在把一个子类型赋给一个超类型时隐含类型转换发生在把一个子类型赋给一个超类型时v 显式类型转换有一定的限制显式类型转换有一定的限制演示课件基本数据类型转换序列基本数据类型转换序列charbyteshortintdoublefloatlong说明:说明:1 1,在本图中,顺着箭头方向的类型转换可以自动进行,在本图中,顺着箭头方向的类型转换可以自动进行,逆箭头方向的转换或无箭头类型之间的转换必须强制转换。逆箭头方向的转换或无箭头类型之间的转换必须强制转换。2 2,能将,能将A A类型变量自动转换成类型变量自动转换成B B类型变量的前提条件是这种类型变量的前提条件是这种转换
50、不会造成数据和精度的丢失,即转换不会造成数据和精度的丢失,即A A类型的取值范围是类型的取值范围是B B类类型的取值范围的子集。型的取值范围的子集。演示课件类型转换的例子类型转换的例子package sample;public class CastingTest public void implictCasting()byte a=0 x60;int ia=a;char b=a;int c=b;long d=c;long e=1000000000L;float f=e;double g=f;String s=hello;Object o=s;public void explicitCastin