欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    Java第2章数据类型和运算符.ppt

    • 资源ID:2201846       资源大小:870.51KB        全文页数:83页
    • 资源格式: PPT        下载积分:8
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要8
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java第2章数据类型和运算符.ppt

    第2章 数据类型和运算符,内容提要,每种语言都有它所支持的数据类型、运算符和控制结构。Java语言中既有基本数据类型,又有引用数据类型,同时支持丰富的运算符。,本章要点,本章将介绍Java语言的数据类型和各种运算符的使用,为后续章节的学习打下基础。学习本章后,应该掌握Java语言的数据类型并能正确使用运算符。,2.1 简单程序的开发,编写程序涉及设计算法和将算法转换成代码两个步骤。算法描述了如何解决问题和解决问题的步骤。算法可以使用自然语言或伪代码(自然语言和编程语言的混合)描述。例如,对求圆面积的问题可以描述如下: 第1步:读取半径值。 第2步:使用下面公式计算面积: area = radius * radius * 第3步:显示面积值。,2.1 简单程序的开发,编写代码就是将算法转换成程序。在Java程序中首先定义一个ComputeArea类,其中定义main()方法,如下所示: public class ComputeArea public static void main(String args) / 第1步:读入半径值 / 第2步:计算面积 / 第3步:显示面积 ,2.1 简单程序的开发,首先我们应该定义两个变量来存储半径和面积。 double radius; double area; 变量代表内存中存储数据和计算结果的位置,每个变量需要指定其存储的数据类型和名称。double是数据类型,radius和area是变量名。在程序中通过变量名操纵变量值。变量名应尽量使用有意义的名称。,2.1 简单程序的开发,要从键盘读取数据可以使用Scanner类的nextInt()或nextDouble()方法。首先创建Scanner类的一个实例,然后调用nextDouble()方法读取double数据: Scanner input = new Scanner(System.in); / 创建一个Scanner实例input double radius = input.nextDouble(); / 通过input实例读取一个double型数,2.1 简单程序的开发,程序2.1 ComputeArea.java,2.1 简单程序的开发,由于Scanner类存放在java.util包中,因此程序使用import语句导入该类。在main()方法中使用Scanner类的构造方法创建了一个Scanner类的一个对象,在其构造方法中以标准输入System.in作为参数。得到Scanner对象后,就可以调用它的有关方法来获得各种类型的数据。程序中使用nextDouble()方法得到一个浮点型数据,然后将其赋给double型变量radius。最后输出语句输出以该数为半径的圆的面积。程序中圆周率使用Math类的PI常量。,2.2 数据类型,在程序设计中,数据是程序的必要组成部分,也是程序处理的对象。不同的数据有不同的类型,不同的数据类型有不同的数据结构、不同的存储方式,并且参与的运算也不同。,2.2.1 Java数据类型,Java语言的数据类型可分为: 基本数据类型(primitive data type) 引用数据类型(reference data type),2.2.1 Java数据类型,2.2.1 Java数据类型,1. 基本数据类型 Java语言还有void类型,它主要用于指定方法的返回值。,2.2.1 Java数据类型,2. 变量及赋值 变量(variable)是在程序运行中其值可以改变的量。一个变量应该有一个名字,在内存中占据一定的存储单元。Java有两种类型的变量:基本类型的变量和引用类型的变量。基本类型的变量包括数值型(整数型和浮点型)、布尔型和字符型。引用类型变量包括类、接口、枚举和数组等。 变量在使用之前必须定义,变量的定义包括变量的声明和赋值。,2.2.1 Java数据类型,变量声明的一般格式为: modifier type varName=value,varName=value ; 其中,modifier为变量的访问修饰符、 type为变量的类型、varName为变量名。下面声明了几个不同类型的变量。 int age ; double d1,d2 ; char ch1, ch2 ;,2.2.1 Java数据类型,使用赋值运算符“=”给变量赋值,一般称为变量的初始化。如下是几个赋值语句。 age = 21 ; ch1 = 'A' ; d1 = d2 = 0.618 ; / 可一次给多个变量赋值 也可以在声明变量的同时给变量赋值,例如: boolean b = false ;,2.2.1 Java数据类型,3.常量和字面量 常量(constant)是在程序运行过程中,其值不能被改变的量。常量实际是一个由final关键字修饰的变量,一旦为其赋值,其值在程序运行中就不能被改变。例如,下面定义了几个常量: final double PI = 3.1415926; final int MAX_ARRAY_SIZE = 22; final int SNO;,2.2.1 Java数据类型,常量可以在声明的同时赋值,也可以声明后赋值。一旦赋值便不允许修改。 字面量(literals)是某种类型值的表示形式,字面量有三种类型:基本类型的字面量、字符串字面量以及null字面量。基本类型的字面量有4种类型:整数型、浮点型、布尔型、字符型。如123、-789为整型字面量,3.456、2e3为浮点型字面量,true、false为布尔型字面量,'g'、'我'为字符字面量。,2.2.2 整数类型,Java语言提供了4种整数类型,分别是字节型(byte)、短整型(short)、整型(int)和长整型(long)。这些整数类型都是有符号数,可以为正值或负值。每种类型的整数在JVM中占的位数不同,因此能够表示的数的范围也不同。 不要把整数类型的宽度理解成实际机器的存储空间,一个byte型的数据可能使用32位存储。,2.2.2 整数类型,Java的整型字面量有4种表示形式: (1)十进制数,如0、257、-365。 (2)二进制数,是以0b或0B开头的数,如0B101010表示十进制数42。 (3)八进制数,是以0开头的数,如0124表示十进制数84,-012表示十进制数-10。 (4)十六进制数,是以0x或0X开头的整数,如0x124表示十进制数的292。 整型字面量具有int类型,在JVM中占32位。对于long型值,可以在后面加上l或L,如125L,它在JVM中占64位。,2.2.2 整数类型,Java的整型变量使用byte、short、int、long等声明,下面是整型变量的定义: byte b = 120 ; short s = 1000; int i = 99999999; long l = -9223372036854775808 ; / 这是long型数据的最小值 在给变量赋值时,不能超出该数据类型所允许的范围,否则编译器给出错误提示。,2.2.2 整数类型,如: byte b = 200 ; 编译错误说明类型不匹配,不能将一个int型的值转换成byte型值。因为200超出了byte型数据的范围(-128127),因此编译器拒绝编译。,2.2.2 整数类型,在表示较大的整数时,可能需要用到长整型long。例如下面程序计算一光年的距离。 程序2.2 LightYear.java,2.2.2 整数类型,程序运行结果如下: 一光年的距离是9460800000000公里。 如果把该程序的变量seconds和distance的类型声明为int类型,编译不会出现错误,但结果不正确。,2.2.3 浮点型,浮点型的数就是通常所说的实数。在Java中有两种浮点类型的数据:float型和double型。这两种类型的数据在JVM中所占的位数不同,float型占32位,double型占64位。因此,通常将float型称为单精度浮点型,将double型称为双精度浮点型。它们符合IEEE-754标准。,2.2.3 浮点型,浮点数运算不会因溢出而导致异常。如果下溢,则结果为0,如果上溢,结果为正无穷大或负无穷大(显示标识符为Infinity或-Infinity)。此外若出现没有数学意义的结果,Java用NaN(Not a Number)表示,如0.0/0.0的结果为NaN。这些常量已在基本数据类型包装类中定义。 浮点型变量定义用float和double关键字。 float pi = 3.1415926F; double e = 2.71828;,2.2.3 浮点型,浮点型常量默认的类型是double型数据。如果表示float型常量数据,必须在后面加上F或f,double型数据也可加D或d。 byte b = 0x18; / 十六进制整数 int i = 0b101010; / 二进制整数 long l = 0x11111111L; float f = .333F; / float型值必须加F或f System.out.println(“byte b = ” + b); System.out.println(“int i = ” + i); System.out.println(“long l = “ + l); System.out.println(“float f = “ + f);,2.2.3 浮点型,下面程序定义了几个数值型变量,并输出其值。 程序2.3 NumberDemo.java,2.2.3 浮点型,如果一个数值字面量太长,读起来会比较困难。因此,从Java 7开始,对数值型字面量的表示可以使用下划线(_)将一些数字进行分组,这可以增强代码的可读性。下划线可以用在浮点型数和整型数(包括二进制、八进制、十六进制和十进制)的表示中。下面是一些使用下划线的例子: 210703_19901012_2415 / 表示一个身份证号 3.14_15F / 表示一个float类型值,2.2.3 浮点型,在数值字面值中使用下划线对数据的内部表示和显示没有影响。例如: long creditNo = 1234_5678_9012_1234L System.out.println(creditNo); / 输出为1234567890121234 在数值字面量中使用下划线只是提高代码的可读性,编译器将忽略所有的下划线。另外,下划线不能放在数值的最前面和最后面,也不能放在浮点数小数点的前后。,2.2.4 字符型,Java语言使用Unicode(统一码)为字符编码,它是由Unicode Consortium建立的一种编码方案。Unicode字符集最初使用两个字节(16位)为字符编码,这样就可表示65 536个字符。新版Unicode 4.0标准使用UTF-16为字符编码,可以表示更多的字符,它可以表示世界各国的语言符号,包括希腊语、阿拉伯语、日语以及汉语等。ASCII码字符集是Unicode字符集子集。,2.2.4 字符型,字符型字面量用单引号将字符括起来,大多数可见的Unicode码字符都可用这种方式表示,如a、我等。对于不能用单引号直接括起来的符号,需要使用转义序列来表示。表示方法是用反斜杠()表示转义。,2.2.4 字符型,在Java程序中用3位八进制数表示字符的格式为ddd,如141表示字符a。也可以用4位十六进制数表示字符,格式为uxxxx,如u0062表示字符b,u4F60和u597D分别表示中文的“你”和“好”。任何Unicode字符都可用这种方式表示。 字符型变量使用char定义,在内存中占16位,表示的数据范围是065535。如: char c = 'a' char c1 = 97;,2.2.4 字符型,Java字符型数据实际上是int型数据一个子集,可以与其他数值型数据混合运算。但字符型数据不能与int型数据直接相互转换。一般情况下,char类型的数据可直接转换为int类型的数据,而int类型的数据转换成char类型的数据需要强制转换。如: int i = 66; char c = 'a' i = c; / 合法 c = i; / 不合法,2.2.5 布尔型数据,布尔型数据用来表示逻辑真或逻辑假。布尔型常量很简单,只有两个值true和false,分别用来表示逻辑真和逻辑假。 布尔型变量使用boolean关键字声明,如下面语句声明了布尔型变量t并为其赋初值true: boolean t = true; 所有关系表达式的返回值都是布尔型的数据,如表达式10 9的结果为false。,2.2.5 布尔型数据,下面程序演示了字符型数据和布尔型数据的使用。 程序2.4 CharBoolDemo.java,2.2.6 字符串型数据,字符串是字符序列,不属于基本数据类型,它是一种引用类型。字符串在Java中是通过String类实现的。可以使用String声明和创建一个字符串对象。还可以通过双引号定界符创建一个字符串字面量,例如: “This is a string.” 一个字符串字面量不能分在两行来写。如 String s2 = “This is an important point to note.“,2.2.6 字符串型数据,对于较长的字符串,可以使用加号将两个字符串连接: String s1 = “Java strings“ + “ are important.“; String s2 = “This is an important “ + “point to note.“ ; 还可以将一个String和一个基本类型或者另一个对象连接在一起。例如,下面这行代码就是将一个String和一个整数连接在一起。 String s3 = “String number “ + 3;,2.3 常用运算符,运算符和表达式是Java程序的基本组成要素。把表示各种不同运算的符号称为运算符(operator),参与运算的各种数据称为操作数(operand)。不同的运算符用来完成不同的运算。表达式(expression)是由运算符和操作数按一定语法规则组成的符号序列。以下是合法的表达式: a + b、(a + b)*(a - b)、“name = ” + “李 明” 表达式经过运算后都会产生一个确定的值。一个常量或一个变量是最简单表达式。,2.3.1 算术运算符,算术运算符一般用于对整型数和浮点型数运算。算术运算符有加(+)、减(-)、乘(*)、除(/)和取余数(%)5个二元运算符和正(+)、负(-)、自增(+)、自减(- -)4个一元运算符。,2.3.1 算术运算符,1. 二元运算符 二元运算符“+”、“-”、“*”、“/”和“%”分别用来进行加、减、乘、除和取余运算。“%”运算符用来求两个操作数相除的余数,操作数可以为整数,也可以为浮点数。如,7 % 4的结果为3,10.5 % 2.5的结果为0.5。当操作数含有负数时的规则是余数的符号与被除数相同且余数的绝对值小于除数的绝对值。例如: 10 % 3 =1,10 % -3 =1, -10 % 3 = -1,-10 % -3 = -1,2.3.1 算术运算符,在操作数涉及负数求余运算中,可通过下面规则计算:先去掉负号,再计算结果,结果的符号取被除数的符号。如求-10 % -3的结果,去掉负号求10 % 3,结果为1。由于被除数是负值,因此最终结果为-1。 在整数除法及取余运算中,如果除数为0,则抛出ArithmeticException异常。当操作数有一个是浮点数时,如果除数为0,除法运算将返回Infinity或-Infinity,求余运算将返回NaN。,2.3.1 算术运算符,“+”运算符不但用于计算两个数值型数据的和,还可用于字符串对象的连接。 System.out.println(“abc“ + “de“); 当+运算符的两个操作数一个是字符串而另一个是其他数据类型,系统会自动将另一个操作数转换成字符串,然后再进行连接 int x = 1, y = 2, z = 3; System.out.println(abc”+x+y+z); / “abc123” 但要注意,下面代码输出“6abc”。 System.out.println(x + y + z + “abc“);,2.3.1 算术运算符,2. 一元运算符 一元运算符正(+)和负(-)用来改变操作数的符号,而“+”和“-”运算符主要用于对变量的操作,分别称为自增和自减运算符,“+”表示加1,“-”表示减1。它们又都可以使用在变量的前面或后面,如果放在变量前,表示给变量加1后再使用该变量;若放在变量的后面,表示使用完该变量后再加1。例如,假设当前变量x的值为5,执行下面语句后y和x的值如下所示,2.3.1 算术运算符,y = x+ ; y = 5 x = 6 y = +x ; y = 6 x = 6 y = x- ; y = 5 x = 4 y = -x ; y = 4 x = 4 自增和自减运算符可以作用于浮点型变量,如下列代码是合法的。 double d = 3.15 ; d + ; / 执行后d的结果为4.15,2.3.1 算术运算符,请注意下面程序的输出结果。 程序2.5 IncrementTest.java,2.3.2 关系运算符,关系运算符(也称比较运算符)用来比较两个值的大小。,2.3.2 关系运算符,关系运算符一般用来构成条件表达式,比较的结果返回true或false。假设定义了下面的变量: int p = 9; int q = 65; char c = 'A' 下面的表达式的返回值都是true。 p = q,2.3.2 关系运算符,在Java语言中,任何类型的数据(包括基本类型和引用类型)都可以用“=”和“!=”比较是否相等,但只有基本类型的数据(布尔型数据除外)可以比较哪个大哪个小。比较结果通常作为判断条件,例如: if (x = y),2.3.3 位运算符,位运算有两类:位逻辑运算(bitwise)和移位运算(shift)。位逻辑运算符包括按位取反()、按位与(&)、按位或(|)和按位异或()4种。移位运算符包括左移()和无符号右移()3种。位运算符只能用于整型数据,包括byte、short、int、long和char类型。设a = 10, b = 3,下表列出了各种位运算符的功能与示例。,2.3.3 位运算符,2.3.3 位运算符,在Java语言中,整数是用补码表示的。在补码表示中,最高位为符号位,正数的符号位为0,负数的符号位为1。若一个数为正数,补码与原码相同;若一个数为负数,补码为原码的反码加1。 例如,+ 42的补码为: 00000000 00000000 00000000 00101010 - 42的补码为: 11111111 11111111 11111111 11010110,2.3.3 位运算符,1. 位逻辑运算符 位逻辑运算是对一个整数的二进制位进行运算。设A、B表示操作数中的一位,位逻辑运算的规则如表所示。,2.3.3 位运算符,运算符是对运算数的每一位按位取反。例如, 42的结果为- 43。因为42的二进制补码为:00000000 00000000 00000000 00101010,按位取反后结果为11111111 1111111 11111111 11010101,即为- 43。对任意一个整型数i,都有等式成立: i = -i-1 再看以下按位与运算。 int a = 51, b = -16; int c = a ,2.3.3 位运算符,上面代码的输出结果为: c = 48 如果两个操作数宽度(位数)不同,在进行按位运算时要进行扩展。例如一个int型数据与一个long型数据按位运算,先将int型数据扩展到64位,若为正,高位用0扩展,若为负,高位用1扩展,然后再进行位运算。,2.3.3 位运算符,2. 移位运算符 Java语言提供了3个移位运算符:左移运算符()和无符号右移运算符()。 左移运算符()用来将一个整数的二进制位序列左移若干位。移出的高位丢弃,右边添0。例如,整数7的二进制序列为: 00000000 00000000 00000000 00000111 若执行7 2,结果为: 00000000 00000000 00000000 00011100 结果是7左移2位,相当于7乘4。,2.3.3 位运算符,右移运算符()用来将一个整数的二进制位序列右移若干位。移出的低位丢弃。若为正数,移入的高位添0,若为负数,移入的高位添1。 无符号右移运算符()也是将一个整数的二进制位序列右移若干位。它与右移运算符的区别是,不论正数还是负数左边一律移入0。例如,-192的二进制序列为: 11111111 11111111 11111111 01000000 若执行-192 3,结果为-24。 11111111 11111111 11111111 11101000 若执行-192 3,结果为536870888。 00011111 11111111 11111111 11101000,2.3.4 逻辑运算符,逻辑运算符的运算对象只能是布尔型数据,并且运算结果也是布尔型数据。逻辑运算符包括以下几种:逻辑非(!)、短路与(&&)、短路或(|)、逻辑与(&)、逻辑或(|)、逻辑异或()。假设A、B是两个逻辑型数据,则逻辑运算的规则如表所示。,2.3.4 逻辑运算符,对一个逻辑值A,逻辑非(!)运算是当A为true时,!A的值为false,当A的值为false,!A的值为true。,2.3.4 逻辑运算符,对逻辑“与”(&&或&)和逻辑“或”(|或|)运算都有两个运算符,它们的区别是:“&&”和“|”为短路运算符,而“&”和“|”为非短路运算符。对短路运算符,当使用“&&”进行“与”运算时,若第一个操作数的值为false时,就可以判断整个表达式的值为false,因此,不再继续求解第二个表达式的值。,2.3.4 逻辑运算符,同样当使用“|”进行“或”运算时,若第一个操作数的值为true时,就可以判断整个表达式的值为true,不再继续求解第二个表达式的值。 对非短路运算符(&和|),将对运算符左右的表达式求解,最后计算整个表达式的结果。,2.3.4 逻辑运算符,程序2.6 LogicalDemo.java,2.3.5 赋值运算符,赋值运算符(assignment operator)用来为变量指定新值。赋值运算符主要有两类,一类是使用等号(=)赋值,它把一个表达式的值赋给一个变量或对象;另一类是扩展的赋值运算符。,2.3.5 赋值运算符,1. 赋值运算符 赋值运算符“=”的一般格式为: variableName = expression; 这里,variableName为变量名,expression为表达式。其功能是将等号右边表达式的值赋给左边的变量。例如: int x = 10; int y = x + 20;,2.3.5 赋值运算符,赋值运算必须是类型兼容的,即左边的变量必须能够接受右边的表达式的值,否则会产生编译错误。如下面的语句会产生编译错误。 int j = 3.14 ; 因为3.14是double型数据,不能赋给整型变量,因为可能丢失精度。编译器的错误提示是:Type mismatch:cannot convert double to int。,2.3.5 赋值运算符,使用等号(=)可以给对象赋值,这称为引用赋值。将右边对象的引用值(地址)赋给左边的变量,这样,两个变量地址相同,即指向同一对象。如: Date d1 = new Date(); Date d2 = d1; 此时d1、d2指向同一个对象。对象引用赋值与基本数据类型的拷贝赋值是不同的。,2.3.5 赋值运算符,2. 扩展赋值运算符 在赋值运算符(=)前加上其他运算符,即构成扩展赋值运算符。它的一般格式为: variableName op = expression ; 这里op为运算符,其含义是将变量variableName 的值与expression的值做op运算,结果赋给variableName 。例如,下面两行是等价的: a + = 3 ; a = a + 3 ;,2.3.5 赋值运算符,扩展赋值运算符有11个,设a = 15, b = 3,下表给出了所有的扩展的赋值运算符及其使用方法。,2.3.6 运算符的优先级和结合性,运算优先级是指在一个表达式中出现多个运算符又没有用括号分隔时,先运算哪个后运算哪个。不同的运算符有不同的运算优先级。 结合性是指对某个运算符构成的表达式,计算时如果先取运算符左边的操作数,然后取运算符,则该运算符是左结合的,若先取运算符右侧的操作数,后取运算符,则是右结合的。赋值运算符就是右结合的,2.3.6 运算符的优先级和结合性,2.3.6 运算符的优先级和结合性,无需死记硬背运算符的优先级。必要时可以在表达式中使用圆括号,圆括号的优先级最高。例如,考虑以下代码: int x = 5; int y = 5; boolean z = x * 5 = y + 20; 因为“*”和“+”的优先级比“=”高,比较运算之后,z的值是true。这个表达式的可读性较差。使用圆括号修改如下: boolean z = (x * 5) = (y + 20);,2.4 数据类型转换,通常整型、实型、字符型数据可能需要混合运算或相互赋值,这就涉及类型转换的问题。Java语言是强类型的语言,即每个常量、变量、表达式的值都有固定的类型,而且每种类型都是严格定义的。在Java程序编译阶段,编译器要对类型进行严格的检查,任何不匹配的类型都不能通过编译器。比如在C/C+中可以把浮点型的值赋给一个整型变量,在Java中这是不允许的。如果一定要把一个浮点型的值赋给一个整型变量,需要进行类型转换。 在Java中,基本数据类型的转换分为自动类型转换和强制类型转换两种。,2.4.1 自动类型转换,自动类型转换也称加宽转换,它是指将具有较少位数的数据类型转换为具有较多位数的数据类型。例如: byte b = 64 ; int i = b ; / 字节型数据b自动转换为整型 将byte型变量b的值赋给int型变量i,这是合法的,因为int型数据占的位数多于byte型数据占的位数,这就是自动类型转换。,2.4.1 自动类型转换,以下类型之间允许自动转换: 从byte到short、int、long、float或者double 从shor到int、long、float或者double 从char到int、long、float或者double 从int到long、float或者double 从long到float或者double 从float到double,2.4.1 自动类型转换,从一种整数类型扩大转换到另一种整数类型时,不会有信息丢失的危险。同样,从float转换为double也不会丢失信息。但从int或long转换为float,从long转换为double可能发生信息丢失。 例如,下面代码的输出就丢失了精度。 int n = 123456789 ; float f = n ; / 可自动转换,但丢失了精度 System.out.println(f) ; / 输出结果是1.23456792E8,2.4.1 自动类型转换,当使用二元运算符对两个值进行计算时,如果两个操作数类型不同,一般要自动转换成更宽的类型。例如,计算n + f,其中n是整数,f是浮点数,则结果为float型数据。对于宽度小于int型数据的运算,结果为int型。 布尔型数据不能与其他任何类型的数据相互转换。,2.4.2 强制类型转换,可以将位数较多的数据类型转换为位数较少的数据类型,如将double型转换为byte型,这时需要通过强制类型转换来完成。其语法是在圆括号中给出要转换的目标类型,随后是待转换的表达式。如: byte b = 5; double d = 333.567; b = (byte)d;/将double型值强制转换byte型值 System.out.println(b); 上面语句的最后输出结果是77。,2.4.2 强制类型转换,强制类型转换有时可能要丢失信息。在进行强制类型转换时应测试转换后的结果。 以下类型之间的转换需要进行强制转换: 从short到byte或者char 从char到byte或者short 从int到byte、short或者char 从long到byte、short、char或者int 从float到byte、short、char、int或者long 从double到byte、short、char、int、long或者float,2.4.3 表达式中类型自动提升,除了赋值可能发生类型转换外,在含有变量的表达式中也有类型转换的问题,: byte a = 40; byte b = 50; byte c; c = a + b; / 编译错误 c = (byte)(a + b); / 正确 int i = a + b;,2.4.3 表达式中类型自动提升,尽管a + b的值没有超出byte型数据的范围,但是如果将其赋给byte型变量c将产生编译错误。这是因为,在计算表达式a + b时,编译器首先将操作数类型提升为int类型,最终计算出的a + b的结果90是int类型。如果要将计算结果赋给c,必须使用强制类型转换。这就是所谓的表达式类型的提升。,2.4.3 表达式中类型自动提升,下面代码不发生编译错误,即常量表达式不发生类型提升。 c = 40 + 50; 自动类型转换和强制类型转换也发生在对象中,对象的强制类型转换也使用括号实现。 程序2.7 FractionDemo.java,2.5 小结,Java语言的数据类型分为基本数据类型和引用数据类型。基本数据类型包括boolean、char、byte、short、int、long、float和double等8种,引用数据类型包括数组、类、接口和枚举等。 运算符和表达式是Java程序的基本要素。Java运算符包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和条件运算符等。在运算过程中可能需要数据类型的转换,其中包括自动类型转换和强制类型转换。,预习,第3章 程序流程控制,

    注意事项

    本文(Java第2章数据类型和运算符.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开