《Java 7程序设计入门经典》一2.12 赋值中的类型转换

2.12 赋值中的类型转换

在编程中,常常需要将一种类型的变量赋值给另一种类型的变量。例如,要把int值赋给float变量,如:

当在一个赋值语句中有兼容的类型时,运算符右边的值自动转换为左边的类型。于是,在上面的代码片段中,变量i的值转换为float类型,然后赋给变量f。但是,由于Java有严格的类型检查,不是所有的类型都互相兼容,因此,不是所有的隐式转换都允许发生。例如,boolean类型与int类型就不兼容。
当把一种类型的数据赋给另一种类型的变量时,在以下情况下会发生自动类型转换(automatic type conversion):
两种类型兼容。
目标类型比源类型范围更大。
当满足这两个条件时,发生类型扩张的转换。例如,对于所有有效的byte类型的值而言,int类型总是足够大的,可以保存。而且,int类型和byte类型都是整数类型。所以,发生从byte类型到int类型的自动转换。
对于扩大范围的转换,数值型数据(包括整数类型和浮点数类型)都互相兼容。例如,因为从long类型到double类型是扩大范围的转换,其能自动执行,所以下面的程序完全可以运行:

尽管从类型long到类型double有自动转换,但是从类型double到类型long没有自动转换,因为这并不是扩大范围的转换。于是,上面的程序若改成下面的版本,就无效:

没有从数值类型到char类型或boolean类型的自动转换。char类型与boolean类型也不互相兼容。但是,可以把一个整数字面量赋给char类型。

时间: 2025-01-08 15:55:59

《Java 7程序设计入门经典》一2.12 赋值中的类型转换的相关文章

《Java 7程序设计入门经典》一导读

前 言 本书通过Java语言来讲解编程的基础知识.该书假设读者之前没有任何编程经验.本书首先介绍最基本的知识,例如,如何编译和运行Java程序:接着,讨论关键字.运算符和一些形成Java语言的构造.本书还会涉及Java的应用编程接口(Application Programming Interface,API)库.其中,包括Swing框架,它可以用来创建具有图形用户界面(Graphical User Interface,GUI)的程序.还包括集合框架,它可以用来存储对象集合.简而言之,本书旨在对J

《Java 7程序设计入门经典》一2.15 表达式

2.15 表达式 运算符.变量和字面量都是表达式(expression)的组成部分.当在程序中遇到表达式时,会计算该表达式.因为它在前面的程序中已经用过,所以读者可能对表达式已有相当的直观理解.另外,Java的表达式也与代数中的表达式类似.但是,现在还是要讨论表达式的一些方面. 2.15.1 表达式中的类型转换 在表达式中,可能将两种或多种不同类型但互相兼容的数据混合.例如,因为short类型和long类型都是数值类型,所以在表达式中将它们混合使用.当一个表达式中混合不同种类的数据,它们会转换为

《Java 7程序设计入门经典》一第2章 数据类型和运算符

第2章 数据类型和运算符 本章要点 了解Java的基本数据类型: 使用字面量: 初始化变量: 了解方法中变量作用域的规则: 使用算术运算符: 使用关系运算符和逻辑运算符: 理解赋值运算符: 理解速记赋值: 理解赋值语句中的类型转换: 使用强制类型转换: 理解表达式中的类型转换. 对任意一种编程语言而言,其基础都是数据类型和运算符.Java也不例外.这些元素定义语言的限制,决定它能够用于哪些类型的任务.幸运的是,Java支持一系列丰富的数据类型和运算符,使其适合于几乎所有类型的编程. 数据类型和运

《Java 7程序设计入门经典》一3.12 do-while循环

3.12 do-while循环 最后一种Java循环是do-while循环.与在循环开始测试循环条件的for循环和while循环不同,do-while循环在每次循环结束时测试条件.这意味着,do-while循环总是至少执行一次.do-while循环的一般形式为: 尽管在只出现一条语句时可以不使用花括号,当它们常用来提供do-while结构的可读性,防止其与while语句混淆.只要条件表达式为真,do-while循环就不断迭代. 下面程序演示了do-while循环,直到用户输入字母q时循环结束.

《Java 7程序设计入门经典》一1.12 创建代码块

1.12 创建代码块 Java的另一个关键元素是代码块(code block).代码块是两条或多条语句.可以通过将语句包括在一对花括号内实现代码块.一旦创建了代码块,代码块就成为一个逻辑单元,可以放在任何可以放置单条语句的地方.代码块非常重要,它能将一系列语句作为控制语句的目标,比如,在1.11节介绍的if语句或for语句中.例如,考虑以下if语句: 这里,if语句的目标是代码块,它包括两条语句.如果w小于h,在块中的两条语句都会执行.如果w不小于h,将不使用该块,两条语句都不会执行.于是,在块

《Java 7程序设计入门经典》一3.17 习题

3.17 习题 1.写一个程序,从键盘读入字符,直到接收到一个英文句号(.).程序需要计算输入的空格的个数.在程序结束时输出总结果. 2.请写出if-else-if梯队的一般形式. 3.针对下列程序 其中最后的else子句与哪个if配对? 4.写一个for循环语句,从1000计数到0,步进值为-2. 5.下面的代码片段是否有效? 6.请解释break语句的用途(包括其两种形式.) 7.在下面的代码片段中,break语句执行后会显示什么? 8.下面程序片段的输出是什么? 9.for循环中的迭代表达

《Java 7程序设计入门经典》一2.3 字面量

2.3 字面量 在Java中,字面量(literal)指人类可以阅读的固定值的表示.例如,数100是字面量.字面量也常常称为常量(constant).大多数字面量及其用法非常直观,前面的示例程序中已经以各种形式使用过它们.现在正式地解释它们. Java的字面量可以是任意基本数据类型.每种字面量的表示取决于类型.如前所述,字符常量由单引号包括.例如,'a'和'%'都是字符常量. 整数字面量是没有小数部分的数.例如,10和-10是整数字面量.浮点字面量有小数点,小数点后是小数部分.例如,11.123

《Java 7程序设计入门经典》一2.14 运算符的优先级

2.14 运算符的优先级 表2-3从高到低显示了Java所有运算符的优先级次序.在同一行的运算符有相同的优先级.表2-3还包括了在本书后面会介绍的一些运算符.运算符决定其在表达式中什么时候执行.有高优先级的运算符会在低优先级运算符运行前执行.例如,表达式 10-4*2 的结果是2,不是12.这是因为乘法比减法的优先级高.除了赋值运算符外,相同优先级的运算符从左向右运算.一系列的赋值运算符从右向左运算.对于分隔符(separator)方括号([]).圆括号(())和点(.),它们作为运算符有最高的

《Java 7程序设计入门经典》一1.4 Java语言

1.4 Java语言 本书使用Java语言来讲解编程的基础知识.虽然其他编程语言也可以用来达到此目的,但是由于以下两个原因,本书选择了Java:首先,它是世界上使用最广泛的计算机语言之一.所以从实际的观点看,它是绝佳的学习语言.其次,它设计和实现了一些特性,这些特性使得对编程基础知识的介绍变得简单. 但是还有第三个原因.Java展现了现代编程的许多特点.对Java的理解可以使你像专业程序员一样看待和思考编程工作.它是这个时代定义的语言之一. 计算机语言演进是一个正在进行的历史过程,而Java是其