面向对象java程序设计课件

上传人:仙*** 文档编号:241846377 上传时间:2024-07-30 格式:PPT 页数:58 大小:2.05MB
返回 下载 相关 举报
面向对象java程序设计课件_第1页
第1页 / 共58页
面向对象java程序设计课件_第2页
第2页 / 共58页
面向对象java程序设计课件_第3页
第3页 / 共58页
点击查看更多>>
资源描述
第 2 章 Java的基本语法2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程2 2主要内容n n2.1 2.1 类型、值与基本变量类型、值与基本变量 2.1.1 2.1.1 基本概念基本概念 2.1.2 2.1.2 基本类型基本类型 2.1.3 2.1.3 引用类型引用类型 2.1.4 2.1.4 类型转换类型转换 2.1.5 2.1.5 简化操作的一些辅助手段简化操作的一些辅助手段n n2.2 2.2 运算符与表达式运算符与表达式 2.2.1 2.2.1 算术运算符与表达式算术运算符与表达式 2.2.2 2.2.2 关系运算符与表达式关系运算符与表达式 2.2.3 2.2.3 逻辑运算符与表达式逻辑运算符与表达式 2.2.4 2.2.4 位运算符与表达式位运算符与表达式 2.2.5 2.2.5 条件运算符与表达式条件运算符与表达式 2.2.6 2.2.6 赋值运算符与表达式赋值运算符与表达式 2.2.7 instanceof2.2.7 instanceof运算符运算符 2.2.8 2.2.8 运算符优先级与赋值顺序的理解运算符优先级与赋值顺序的理解 2.2.9 2.2.9 基本类型所支持的操作运算基本类型所支持的操作运算n n2.3 2.3 语句语句 2.3.1 2.3.1 编组语句编组语句 2.3.2 2.3.2 表达式语句表达式语句 2.3.3 2.3.3 选择语句选择语句 2.3.4 2.3.4 循环语句循环语句 2.3.5 2.3.5 迭代与递归迭代与递归 2.3.6 2.3.6 控制转移语句控制转移语句 2.3.7 2.3.7 注释语注释语2.1 类型、值与基本变量2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程4 4基本概念:字符集 n nASCIIASCII(American Standard Code for Information American Standard Code for Information InterchangeInterchange)字符集:使用)字符集:使用7 7位代码表示大小写字母、位代码表示大小写字母、数字数字0909以及若干控制字符,如以及若干控制字符,如NULNUL和和EOTEOT。n nISO8859-1 Latin-1ISO8859-1 Latin-1字符集:在西欧,用户希望字符集字符集:在西欧,用户希望字符集能够表示他们本国字符集的所有字符,能够表示他们本国字符集的所有字符,ASCIIASCII字符集因而字符集因而被扩展到被扩展到8 8位,即增加了位,即增加了128128个字符,用于表示英文中不个字符,用于表示英文中不存在的各种西欧语言的字符。存在的各种西欧语言的字符。n nUnicodeUnicode字符集:是字符集:是ISOISO标准标准1616位字符集,支持位字符集,支持6553665536个不同的字符。其中大约有个不同的字符。其中大约有2100021000个字符专门用于中文、个字符专门用于中文、日文和韩文的表意文字。日文和韩文的表意文字。n nASCIIASCII、ISO Latin-1ISO Latin-1都是都是UnicodeUnicode的子集。的子集。n nJavaJava内部使用内部使用2 2个字节表示每个字符,采用个字节表示每个字符,采用UnicodeUnicode编码。编码。2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程5 5基本概念:关键字、值、标识符n n关键字(关键字(KeywordKeyword):也称保留字(:也称保留字(Reserved wordReserved word),),全部由小写的英文字母所组成。关键字总共有全部由小写的英文字母所组成。关键字总共有5050多个,其多个,其中一些留作将来供语言设计者扩充语言功能时使用。中一些留作将来供语言设计者扩充语言功能时使用。n n值值 (LiteralLiteral):是指不能由程序员规定的代表某一特定):是指不能由程序员规定的代表某一特定常量或数字的可知的或未知的字母或符号,一般译作常量或数字的可知的或未知的字母或符号,一般译作“直直接量接量”或或“字面值字面值”,实际上泛指赋给各种不同类型(常,实际上泛指赋给各种不同类型(常指基本类型、字符串类型、空类型等)的有效值。本书将指基本类型、字符串类型、空类型等)的有效值。本书将它简称为它简称为“值值”,而另一个单词,而另一个单词“ValueValue”则称为则称为“数值数值”。n n标识符(标识符(IdentifierIdentifier):是程序员提供的名字,在):是程序员提供的名字,在JavaJava中,中,标识符的长度不受限制,但必须以字母、下划线或标识符的长度不受限制,但必须以字母、下划线或$符号符号开始,随后位置也可以包含数字。开始,随后位置也可以包含数字。JavaJava标识符支持几万个标识符支持几万个UnicodeUnicode字母中所包含的世界上任何重要语言中字母中所包含的世界上任何重要语言中的任何字母。的任何字母。举例:举例:IdentifierTest.javaIdentifierTest.java 2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程6 6Java关键字 const和goto是保留字 true,false和null为相应类型的值,不属于关键字主要用途关 键 字用于内置类型booleanbytechardoublefloatintlongshortstrictfpvoid用于对象newsuperthis用于选择语句casedefaultelseifswitch用于循环语句doforwhile用于控制转移breakcontinuereturn用于异常处理catchfinallythrowthrowstryassert用于线程synchronized用于修饰说明abstractfinalprivateprotectedpublicstatic用于其他方法或相关类classinstanceofnativetransientvolatile用于类的扩展和接口的继承extendsimplementsimportinterfaceenum package留作将来使用constgoto2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程7 7强类型语言(Strongly typed language)n nJava属于强类型的程序设计语言。n n所有变量和表达式在编译时都有明确的类型,它有助于编译时的错误检测:类型限制了一个变量能够拥有的或者一个表达类型限制了一个变量能够拥有的或者一个表达式能够生成的值;式能够生成的值;类型还限制了各种操作对这些值的支持程度以类型还限制了各种操作对这些值的支持程度以及决定操作的含义。及决定操作的含义。2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程8 8Java语言的类型结构 2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程9 9基本类型(Primitive Type)n nboolean boolean 用于逻辑运算。用于逻辑运算。n nintint、longlong、bytebyte和和short short 用于整数算术运算。用于整数算术运算。n nchar char 主要用于输入输出。主要用于输入输出。n ndoubledouble和和float float 用于实数(即浮点数)的算术运用于实数(即浮点数)的算术运算。算。n n整型数值缺省为整型数值缺省为intint型,型,longlong型在数值之后加型在数值之后加l l或或L Ln n浮点型数值缺省为浮点型数值缺省为doubledouble型,型,floatfloat型在数值之后型在数值之后加加f f或或F F2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程1010基本类型的特点n n基本类型在所有的平台和实现中的定义相同,类型名称属于Java保留的关键字。n n基本类型的值不允许共享,任何一个基本类型的变量都会独自拥有一份相同类型的值。n n基本类型的变量的值只能通过赋值操作才能被改变。2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程1111基本类型的值(1)类 型位 数取值范围有符号类型byte8 bits128 127(-27 27-1)short16 bits32 768 32 767(-215 215-1)int32 bits2 147 483 648 2 147 483 647(-231 231-1)long64 bits9 223 372 036 854 775 808 9 223 372 036 854 775 807(-263 263-1)无符号类型char16 bitsu0000 uffff(0 65 535,即0 216-1)2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程1212基本类型的值(2)类 型位 数取值范围float32 bits3.40282347e+38f 1.40239846e-45f0.0f1.40239846e-45f 3.40282347e+38fdouble64 bits1.79769313486231570e+308 4.94065645841246544e-3240.04.94065645841246544e-324 1.79769313486231570e+3082024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程1313基本类型的值(3)类 型位 数取值范围boolean1 bittrue/false转义字符Unicode字符含 义 bu0008backspace BS(退格)tu0009horizontal tab HT(Tab键)nu000alinefeed LF(换行)fu000cform feed FF(换页)ru000dcarriage return CR(回车)u0022(double quote,双引号)u0027(single quote,单引号)u005c(backslash,反斜杠)2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程1414举 例n n整数值的不同进制表示:整数值的不同进制表示:NumeralExpression.java NumeralExpression.java n n字符的表达方式:字符的表达方式:CharacterExpression.java CharacterExpression.java n n浮点数浮点数NaNNaN结果及浮点计算的非精确性演示:结果及浮点计算的非精确性演示:FloatingTest.java FloatingTest.java n n数值类型的取值范围:数值类型的取值范围:ValueScope.java ValueScope.java 2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程1515引用类型n n类类型(Class type)n n接口类型(Interface type)n n数组类型(Array type)n n枚举类型(Enumerate type)2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程1616类类型 n n使用关键字使用关键字“classclass”,它定义了一个新的引用类,它定义了一个新的引用类型,并描述这一类型的具体实现。型,并描述这一类型的具体实现。n nJavaJava语言定义的根类(语言定义的根类(Root classRoot class)是)是ObjectObject类,类,也就是说除了也就是说除了ObjectObject类以外,其它类都是类以外,其它类都是ObjectObject类的直接或间接子类(类的直接或间接子类(SubclassSubclass),这些类只能),这些类只能扩展(使用关键字扩展(使用关键字“extendsextends”)自唯一一个业)自唯一一个业已存在的类。已存在的类。n nObjectObject类是缺省的继承父类,如果有一个类直接类是缺省的继承父类,如果有一个类直接继承自继承自ObjectObject类,类,“extends Objectextends Object”可以省略可以省略不写。不写。2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程1717类体的结构组成n n类的成员类的成员 类型:类成员(使用关键字类型:类成员(使用关键字staticstatic)和实例成员(无关)和实例成员(无关键字键字staticstatic)形式:域(形式:域(FieldField;也习惯地叫属性,;也习惯地叫属性,AttributeAttribute)、方)、方法(法(MethodMethod)、内嵌类()、内嵌类(Nested classNested class)和内嵌接)和内嵌接口(口(Nested interfaceNested interface)n n实例初始化或者类初始化的语句块(实例初始化或者类初始化的语句块(BlockBlock)n n实例对象构造器(实例对象构造器(ConstructorConstructor,也称构造方法),也称构造方法)n n举例:举例:ClassExample.java ClassExample.java 2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程1818接口类型 n n使用关键字使用关键字“interfaceinterface”,定义一套必须由类或组件实,定义一套必须由类或组件实现的操作特征标记。现的操作特征标记。n n一般有一个或多个操作特征标记以及零个或多个属性集合一般有一个或多个操作特征标记以及零个或多个属性集合的定义。的定义。n n标识接口(标识接口(Tag interfaceTag interface):不包含任何成员的接口类):不包含任何成员的接口类型,如型,如java.io.Serializablejava.io.Serializable、java.lang.Cloneablejava.lang.Cloneablen n通过类来实现,使用关键字通过类来实现,使用关键字“implementsimplements”,多个接口类,多个接口类型之间用型之间用“,”隔开隔开 。类必须包括接口中定义的方法。类必须包括接口中定义的方法 。n n接口可以进行多继承,也使用关键字接口可以进行多继承,也使用关键字“extendsextends”。n n接口类型中不存在被其它所有接口类型继承的根接口类型。接口类型中不存在被其它所有接口类型继承的根接口类型。2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程1919接口体的结构与特点n n包含与该接口有关的成员,这些成员可以是内嵌包含与该接口有关的成员,这些成员可以是内嵌类、内嵌接口、常量或抽象方法。类、内嵌接口、常量或抽象方法。n n所有接口的成员都被隐式声明为所有接口的成员都被隐式声明为“publicpublic”;n n所有的内嵌类或接口都被隐式声明为所有的内嵌类或接口都被隐式声明为“staticstatic”;n n所有的成员属性都被隐式声明为所有的成员属性都被隐式声明为“staticstatic”和和“finalfinal”,亦即所有的成员属性都是常量;,亦即所有的成员属性都是常量;n n所有的成员方法都被隐式声明为所有的成员方法都被隐式声明为“abstractabstract”,亦即所有的成员方法都不包含任何具体的实现,亦即所有的成员方法都不包含任何具体的实现,但成员方法不能被声明为但成员方法不能被声明为“staticstatic”,因为静态,因为静态方法不能是抽象的。方法不能是抽象的。n n举例:举例:InterfaceExample.java InterfaceExample.java 2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程2020数组类型 n n一个数组对象包含一定数量的数组变量,称为数一个数组对象包含一定数量的数组变量,称为数组的组件或元素。组的组件或元素。n n数组元素通过一个非负的整型索引数值被引用。数组元素通过一个非负的整型索引数值被引用。n n如果数组中包含有如果数组中包含有n n个元素,则数组元素的索引值个元素,则数组元素的索引值分别为分别为0 0(n-1)(n-1)。数组元素的个数可以为零,这。数组元素的个数可以为零,这时该数组被称为时该数组被称为emptyempty(空)数组。(空)数组。n n数组元素的类型可以是基本类型,也可以是其它数组元素的类型可以是基本类型,也可以是其它的引用类型,一个数组中的所有元素的类型都是的引用类型,一个数组中的所有元素的类型都是一样的。一样的。2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程2121数组表示法n nJava语言中正式使用的表示法是,假如数组元素的类型表示为Type,则数组表示为Type x。如int x,读作int数组x。n n另一种表示法是提供给那些有C/C+编程经验的人们使用的,将方括号移到变量名称的后面,即Type x,如int x。2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程2222数组的一些特点n nJavaJava语言中没有直接的多维数组定义,而是把多维数组的语言中没有直接的多维数组定义,而是把多维数组的实现理解为数组的数组。实现理解为数组的数组。n nJavaJava语言中,多维数组中每维数组的长度可以不同,数组语言中,多维数组中每维数组的长度可以不同,数组空间也不一定是连续分配的。空间也不一定是连续分配的。n n数组的直接超类是数组的直接超类是ObjectObject类,因此可以调用类,因此可以调用ObjectObject类中类中的所有方法。的所有方法。n n每个数组类型都已经实现了每个数组类型都已经实现了java.io.Serializablejava.io.Serializable和和java.lang.Cloneablejava.lang.Cloneable接口,也就是可以对数组对象直接接口,也就是可以对数组对象直接进行串行化处理和对象复制,但对于多维数组也是只能实进行串行化处理和对象复制,但对于多维数组也是只能实现单层复制。现单层复制。n n数组中元素的个数可通过数组属性数组中元素的个数可通过数组属性lengthlength进行访问。进行访问。n n举例:举例:ArrayExample.java ArrayExample.java 枚举类型n n枚举类型使用关键字“enum”,它允许用常量来表示特定的数据片断,这些数据片断只接受预先定义的值集合。2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程2323“enum”和采用“class”或“interface”的“final”型属性表达的区别n n枚举类型看起来更加简洁枚举类型看起来更加简洁n n最关键的是枚举表示的这组常量值是类型安全的,如果调最关键的是枚举表示的这组常量值是类型安全的,如果调用这个枚举类型的值超出集合的范围,将引发编译错误用这个枚举类型的值超出集合的范围,将引发编译错误n n用类或接口中的常量表示,通常会借助基本类型的值来描用类或接口中的常量表示,通常会借助基本类型的值来描述常量,这个数值的取值范围是我们主观赋予的,如果在述常量,这个数值的取值范围是我们主观赋予的,如果在调用过程中赋值超出此范围,从语法上看并没有问题,编调用过程中赋值超出此范围,从语法上看并没有问题,编译时就无法检查出来。译时就无法检查出来。n n例如:例如:enum Season SPRING,SUMMER,AUTUMN,WINTER enum Season SPRING,SUMMER,AUTUMN,WINTER class Seasonclass Seasonfinal int SPRING=1;final int SPRING=1;final int SUMMER=2;final int SUMMER=2;final int AUTUMN=3;final int AUTUMN=3;final int WINTER=4;final int WINTER=4;2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程2424枚举类型本质也是类类型n n使用使用enumenum关键字创建一个新的枚举类型时,实际关键字创建一个新的枚举类型时,实际上是在扩展上是在扩展java.lang.Enumjava.lang.Enum类。类。n nJavaJava语言中定义了语言中定义了“abstract class EnumE extends abstract class EnumE extends Enum”Enum”作为所有枚举类型的通用基类,其中作为所有枚举类型的通用基类,其中 E E 表示表示枚举类型的名称。枚举类型的名称。n n枚举类型中的每一个枚举值就是通过构造方法枚举类型中的每一个枚举值就是通过构造方法“protected Enum(String name,int ordinal)”protected Enum(String name,int ordinal)”创建出来的一个实例,其中字符串创建出来的一个实例,其中字符串 name name 记录每记录每个枚举值的名称,个枚举值的名称,ordinal ordinal 设置了该枚举值在值集设置了该枚举值在值集合中所在位置的序数。这些枚举值成为该枚举类型合中所在位置的序数。这些枚举值成为该枚举类型的的“public static final”public static final”成员。成员。n n举例:举例:EnumSample.javaEnumSample.java2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程25252024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程2626类型转换 n n类型转换方式分为窄化(Narrowing)和拓宽(Widening)转换。n n编译时可以自动执行拓宽转换(称为Promotion,提升)。n n而窄化转换则总是要求显式执行强制转换(称为Cast,转型)。2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程2727基本类型的拓宽转换原则 n n如果存在一个如果存在一个doubledouble型,则按型,则按doubledouble型执行运型执行运算。算。n n否则,如果存在一个否则,如果存在一个floatfloat型,则按型,则按floatfloat型执行型执行运算。运算。n n否则,如果存在一个否则,如果存在一个longlong型,则按型,则按longlong型执行型执行运算。运算。n n否则,按照否则,按照3232位的位的intint型计算精度执行运算。型计算精度执行运算。n n当在整型与浮点型之间进行转换时,计算精度当在整型与浮点型之间进行转换时,计算精度不仅仅是数据类型的取值范围问题,它还包括不仅仅是数据类型的取值范围问题,它还包括浮点能够存储的十进制数的位数。浮点能够存储的十进制数的位数。n n举例:举例:PrimitiveWidening.java PrimitiveWidening.java 2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程2828基本类型的窄化转换 n n窄化转换意味着余数转换,这种从一个大容量的数据类型窄化转换意味着余数转换,这种从一个大容量的数据类型到另一个小容量的数据类型的赋值只会取其较小的数值范到另一个小容量的数据类型的赋值只会取其较小的数值范围,这可能造成数量级的损失。围,这可能造成数量级的损失。n n如果需要把一个范围较大的整型数值赋给一个范围较小的如果需要把一个范围较大的整型数值赋给一个范围较小的数据类型的变量,原则上都需要对数值执行强制转换。数据类型的变量,原则上都需要对数值执行强制转换。n n对于对于bytebyte、shortshort、charchar类型的变量,在相应类型的取值类型的变量,在相应类型的取值范围内时,允许不需要显式强制类型转换而直接赋给范围内时,允许不需要显式强制类型转换而直接赋给intint型数值,因为这样做并不会引起数据丢失;当所赋数值不型数值,因为这样做并不会引起数据丢失;当所赋数值不在其取值范围内时,则必须显式进行类型强制转换,否则在其取值范围内时,则必须显式进行类型强制转换,否则将出现错误而不是警告。将出现错误而不是警告。n n如果把浮点型数值转换成整型数值,小数点后面的数值将如果把浮点型数值转换成整型数值,小数点后面的数值将被圆整去掉。被圆整去掉。n n举例:举例:PrimitiveNarrowing.java PrimitiveNarrowing.java 2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程2929引用类型的转换 n n从子类型转换为父类型即属于引用类型的拓宽转换,特别从子类型转换为父类型即属于引用类型的拓宽转换,特别是从任何引用类型(包括类、接口、数组)转换成是从任何引用类型(包括类、接口、数组)转换成JavaJava的的根类根类ObjectObject都属于此种转换形式。引用类型的拓宽转换可都属于此种转换形式。引用类型的拓宽转换可以自动进行,不会引发任何异常。以自动进行,不会引发任何异常。n n引用类型的窄化转换指的是从父类型转换为子类型,特别引用类型的窄化转换指的是从父类型转换为子类型,特别是从是从ObjectObject类转换成其它任何引用类型都属于这种转换形类转换成其它任何引用类型都属于这种转换形式。引用类型的窄化转换同样需要强制进行,即所谓的转式。引用类型的窄化转换同样需要强制进行,即所谓的转型,这种转换的使用十分广泛,它体现了面向对象的多态型,这种转换的使用十分广泛,它体现了面向对象的多态性。性。n n转型将在运行时进行类型匹配检查,如果类型不匹配将引转型将在运行时进行类型匹配检查,如果类型不匹配将引发异常发异常ClassCastExceptionClassCastException。n n举例:举例:ReferenceConversion.javaReferenceConversion.java2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程3030类型转换讨论n n自动转换不要以为扩大取值范围就万无一失浮点型的有效位问题浮点型的有效位问题引用型的属性问题引用型的属性问题n n强制转换2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程3131基本类型的包装类 包装类对应的基本类型字符串转换成数值数值转换成字符串包装类中定义的常量Bytebyteb=Byte.parseByte(s)b=new Byte(s).byteValue()s=String.valueOf(b)TYPE,MAX_VALUE,MIN_VALUEShortshortsh=Short.parseShort(s)sh=new Short(s).shortValue()s=String.valueOf(sh)TYPE,MAX_VALUE,MIN_VALUECharacterchars=String.valueOf(c)TYPE,MAX_VALUE,MIN_VALUEIntegerintn=Interger.parseInt(s)n=new Integer(s).intValue()s=String.valueOf(n)TYPE,MAX_VALUE,MIN_VALUELonglongg=Long.parseLong(s)g=new Long(s).longValue()s=String.valueOf(g)TYPE,MAX_VALUE,MIN_VALUEFloatfloatf=Float.parseFloat(s)f=new Float(s).floatValue()s=String.valueOf(f)TYPE,MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITYDoubledoubled=Double.parseDouble(s)d=new Double(s).doubleValue()s=String.valueOf(d)TYPE,MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITYBooleanbooleanb=new Boolean(s).booleanValue()s=String.valueOf(b)TYPE,FALSE,TRUE自动装箱与自动拆箱n n自动装箱和自动拆箱(自动装箱和自动拆箱(Auto Boxing/UnboxingAuto Boxing/Unboxing),是指当我们想创建一个包装类对象时,可以直接赋予一是指当我们想创建一个包装类对象时,可以直接赋予一个对应基本类型数值,或者当我们想为基本类型变量赋个对应基本类型数值,或者当我们想为基本类型变量赋值时,可以直接赋予一个对应包装类对象,而编译器在值时,可以直接赋予一个对应包装类对象,而编译器在编译时会自动帮我们做相应的转换工作。编译时会自动帮我们做相应的转换工作。n n自动装箱时对于值从自动装箱时对于值从-128-128到到127127之间的值,它们被装箱之间的值,它们被装箱为为IntegerInteger对象后,该对象就保存在内存中被重用。对象后,该对象就保存在内存中被重用。n n自动装箱时只允许采用相同类型的数值,如果类型不匹配则会引发编译自动装箱时只允许采用相同类型的数值,如果类型不匹配则会引发编译错误,如错误,如“Long obj=127;”Long obj=127;”或或“Float obj=127.0;”Float obj=127.0;”都是错的,需都是错的,需写成写成“Long obj=127L;”Long obj=127L;”或或“Float obj=127.0f;”Float obj=127.0f;”。n n举例:举例:AutoBoxing.javaAutoBoxing.java2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程32322024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程3333与字符串相关的封装类 n n字符串在字符串在JavaJava语言中并不定义为基本类型,而是一个类类语言中并不定义为基本类型,而是一个类类型。型。n nJavaJava中封装了中封装了3 3个与字符串相关的最终类,即个与字符串相关的最终类,即StringString、StringBufferStringBuffer和和StringBuilderStringBuilder类,并提供了一系列的方类,并提供了一系列的方法对整个字符串进行操作,使得字符串的处理更加容易,法对整个字符串进行操作,使得字符串的处理更加容易,也符合面向对象编程规范。也符合面向对象编程规范。n nStringString用于处理不变字符串(常量),用于处理不变字符串(常量),StringBufferStringBuffer和和StringBuilderStringBuilder用于处理可变字符串。用于处理可变字符串。n nStringBufferStringBuffer是线程安全的,而是线程安全的,而StringBuilderStringBuilder不是线程不是线程安全的,但它的执行速度比较快。安全的,但它的执行速度比较快。字符串常量的类型Stringn nJavaJava语言中还提供了一种快速创建语言中还提供了一种快速创建StringString对象的方式,非常像对象的方式,非常像基本类型的赋值方式:基本类型的赋值方式:String str=String str=”I am a string constant.I am a string constant.”n nStringString被设计为存储字符串常量的类,这种实例化形式在大多被设计为存储字符串常量的类,这种实例化形式在大多数情况下是更好的数情况下是更好的StringString构造技术,这与所创建的字符串存储构造技术,这与所创建的字符串存储在字符串常量池使其可被共享有关。在字符串常量池使其可被共享有关。n n字符串常量池的工作机制是,当需要某一个字符串时,先到池字符串常量池的工作机制是,当需要某一个字符串时,先到池里查找,如果已经存在,则直接引用;如果还没有就在池中创里查找,如果已经存在,则直接引用;如果还没有就在池中创建一个新的字符串对象。也可以说,字符串常量池中内容相同建一个新的字符串对象。也可以说,字符串常量池中内容相同的的StringString对象只有一个,该对象直到对象只有一个,该对象直到JVMJVM退出时才被清除。退出时才被清除。n n举例:举例:StringExample.java StringExample.java 2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程3434泛型n n泛型通常也称为参数类型(Parameterized Type),它增加了集合框架(Collections Framework)编译时类型安全,并减少原先读取集合中元素时必须进行的转型操作。n n泛型带来的好处至少有:保留类型动态绑定的同时,增加静态类型检查,使保留类型动态绑定的同时,增加静态类型检查,使得编译时能发现更多的错误。得编译时能发现更多的错误。减少容器之间的类型模糊性,使代码更容易阅读。减少容器之间的类型模糊性,使代码更容易阅读。减少使用转型,使代码看起来更加简洁。减少使用转型,使代码看起来更加简洁。n n举例:GenericsSample.java2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程35352.2 运算符和表达式2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程3737Java语言中的算术运算符与表达式操作数数目运算符表达式描 述一元+op正值-op负值+op,op+自增1-op,op-自减1二元+op1+op2加-op1-op2减*op1*op2乘/op1/op2除%op1%op2取模(求余)2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程3838Java语言中的关系运算符与表达式 运算符表达式返回true的情况op1op2op1大于op2=op1=op2op1大于或等于op2op1op2op1小于op2=op1=op2op1小于或等于op2=op1=op2op1与op2相等!=op1!=op2op1与op2不等2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程3939Java语言中的逻辑运算符与表达式 操作数取值表达式运算结果op1op2op1&op2op1|op2!op1falsefalsefalsefalsetruefalsetruefalsetruetruetruefalsefalsetruefalsetruetruetruetruefalse2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程4040Java语言中的位运算符与表达式 运算符表达式描 述&op1&op2二元运算,逻辑与,参与运算的两个操作数,如果两个相应位都为1(或true),则该位的结果为1(或true),否则为0(false)。|op1|op2二元运算,逻辑或,参与运算的两个操作数,如果两个相应位有一个为1(或true),则该位的结果为1(或true),否则为0(false)。op1 op2二元运算,逻辑异或,参与运算的两个操作数,如果两个相应位值相反,则该位的结果为1(或true),否则为0(false)。op1一元运算,对数据的每个二进制位按位取反。op1 op1 op2二元运算,操作数op1按位右移op2位,左边补齐的数值和最高位相同(正数补0,负数补1),即每右移一位,其数值减半。op1 op2二元运算,操作数op1按位右移op2位,左边补齐的数值总是为0,即正整数运算与同,负整数则求该数的反码,但符号位不变。关于运算n nop1 op2op1 op2二元运算,操作数二元运算,操作数op1op1按位右移按位右移op2op2位,左边补齐的数位,左边补齐的数值总是为值总是为0 0,即正整数运算与,即正整数运算与同,负整数则求该数同,负整数则求该数的反码,但符号位不变。的反码,但符号位不变。n n对于短整数和字节来讲,因为在对于短整数和字节来讲,因为在运算之前,首先运算之前,首先需要把它们提升到整数,当操作数为负数时,第需要把它们提升到整数,当操作数为负数时,第7 7或或15311531位将会变为位将会变为1 1。执行。执行运算后,第运算后,第3131位将会位将会变为变为0 0,最终会把负数变为正数,最终会把负数变为正数。n n例如,例如,intint数值数值“-22 3”“-22 3”:“-22”“-22”的原码:的原码:1000 0000 0000 0000 0000 0000 0001 01101000 0000 0000 0000 0000 0000 0001 0110 符号位不变的反码:符号位不变的反码:1111 1111 1111 1111 1111 1111 1110 10011111 1111 1111 1111 1111 1111 1110 1001 右移右移3 3位:位:000 1111 1111 1111 1111 1111 1111 1110 1000 1111 1111 1111 1111 1111 1111 1110 1 其结果为:其结果为:536870909536870909n n建议:不要以数学意义上的数值来分析移位建议:不要以数学意义上的数值来分析移位n n举例:举例:BitOperand.java BitOperand.java 2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程41412024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程4242其它运算符n n条件运算符:三元运算符,其表达式为someConditionsomeCondition?tureExpression:falseExpressiontureExpression:falseExpressionn n赋值运算符与表达式:=、+=+=、-=-=、*=、/=/=、%=%=、=、=、&=&=、|=|=、=n ninstanceof运算符 2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程4343Java语言运算符优先级以及同等优先级运算符的组合顺序运算符描 述优先级(数越大优先级越高)同等优先级结合顺序()圆括号15左右new创建类实例15左右 数组下标运算符15左右.成员(属性、方法)选择15左右+、-后缀自增(自减)114左右+、-前缀自增(自减)113右左按位取反13右左!逻辑非13右左-、+算术负(正)号13右左(Type)强制类型转换13右左*、/、%乘、除、取模运算12左右+、-加、减运算11左右、左右移位运算10左右2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程4444Java语言运算符优先级以及同等优先级运算符的组合顺序(续)运算符描 述优先级(数越大优先级越高)同等优先级结合顺序instanceof、=关系运算9左右=、!=相等性运算8左右&位逻辑与7左右位逻辑异或6左右|位逻辑或5左右&条件与4左右|条件或3左右?:条件运算符2右左=、*=、/=、%=、+=、-=、=、=、&=、=、|=赋值运算符1右左理解Java语言中的表达式n n从左到右顺序解析运算符和操作数n n根据运算符的优先级高低确定运算顺序n n按运算符的结合顺序对操作数进行类型判断并赋值n n举例:PlusOperator.javaPlusOperator.javaEvaluationOrder.java EvaluationOrder.java 2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程45452024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程4646关于断句无鸡鸭亦可无鱼肉亦可青菜一小碟足矣建议:在编程时还应该十分注意程序的可读性在编程时还应该十分注意程序的可读性,避免理解歧义。,避免理解歧义。2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程4747整型支持的操作运算 n n比较运算,其结果为比较运算,其结果为booleanboolean型:型:大小比较大小比较 、=、=相等比较相等比较 =、!=!=n n数值运算,其结果为数值运算,其结果为intint或或longlong型:型:加减运算加减运算 +、-乘除运算乘除运算*、/、%符号运算符号运算 +、-前(后)缀自增运算前(后)缀自增运算 +前(后)缀自减运算前(后)缀自减运算 -位运算位运算 、按位取反运算按位取反运算 按位逻辑运算按位逻辑运算&、|、n n条件运算条件运算?:?:n n类型转换运算类型转换运算 (TypeType)n n字符串连接运算字符串连接运算 +n nByteByte、ShortShort、IntegerInteger、LongLong、CharacterCharacter等包装类中的方法等包装类中的方法n nJavaJava中存在一个称为的中存在一个称为的java.math.BigIntegerjava.math.BigInteger类,支持无限制的整数运算。类,支持无限制的整数运算。2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程4848浮点型支持的操作运算 n n比较运算,其结果为比较运算,其结果为booleanboolean型:型:大小比较大小比较 、=、=相等比较相等比较 =、!=!=n n数值运算,其结果为数值运算,其结果为floatfloat或或doubledouble型:型:加减运算加减运算 +、-乘除运算乘除运算*、/、%符号运算符号运算 +、-前(后)缀自增运算前(后)缀自增运算 +前(后)缀自减运算前(后)缀自减运算 -n n条件运算条件运算?:?:n n类型转换运算类型转换运算 (TypeType)n n字符串连接运算字符串连接运算 +n nFloatFloat、DoubleDouble等包装类中的方法以及等包装类中的方法以及java.lang.Mathjava.lang.Math类,类,MathMath类中类中包含许多与数学运算有关的方法,如幂运算方法包含许多与数学运算有关的方法,如幂运算方法exp(double a)exp(double a)、随机、随机数生成方法数生成方法random()random()、正弦函数计算方法、正弦函数计算方法sin(double a)sin(double a),等等。,等等。n nJavaJava语言存在一个称为语言存在一个称为java.math.BigDecimaljava.math.BigDecimal的类,支持无限制的实的类,支持无限制的实数运算。数运算。2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程4949布尔型支持的操作运算 n n关系比较运算关系比较运算 =、!=!=n n逻辑非运算逻辑非运算 !n n逻辑运算逻辑运算&、|、n n条件与和条件或条件与和条件或&、|n n条件运算条件运算?:?:n n字符串连接运算字符串连接运算 +,布尔型的值,布尔型的值truetrue和和falsefalse都可都可以转换成字符串,并作字符串连接运算。以转换成字符串,并作字符串连接运算。n nBooleanBoolean包装类中的方法。包装类中的方法。2.3 语句2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程5151编组语句 n n代码块由一对花括号“”界定,中间包含零或多个语句以及局部变量声明组成,且能够以任何顺序存在。无论任何位置,只要允许单个语句存在,都可以放置代码块。n n空语句仅仅是分号“;”本身。空语句不执行任何动作,无论何处,只要可以放置普通语句,都可以使用空语句。空语句总是可以完全正常执行。2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程5252表达式语句 n n赋值、方法调用、类的实例化、自增(减)1运算等,都是表达式语句。n n常用的语句格式如下:new StringBuffer(new StringBuffer(“HelloHello”);/);/创建不被引用创建不被引用的实例对象的实例对象new JFrame().setVisible(true);/new JFrame().setVisible(true);/方法调方法调用用i+;/i+;/自增运算自增运算a=b;/a=b;/赋值赋值2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程5353选择语句 n nif if语句的一般语法格式如下:语句的一般语法格式如下:if(boolean-expression)if(boolean-expression)statement1;statement1;elseelsestatement2;statement2;n nswitchswitch语句的一般语法格式如下:语句的一般语法格式如下:switch(expression)switch(expression)case value1:statement1;case value1:statement1;break;break;case value2:statement2;case value2:statement2;break;break;case valueN:statemendN;case valueN:statemendN;break;break;default:defaultStatement;default:defaultStatement;n n举例:举例:Kid.java Kid.java 2024/7/302024/7/30JavaJava面向对象程序设计教程面向对象程序设计教程5454循环语句 n nwhilewhile语句语句 initialization /initialization /初始化部分初始化部分while(term
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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