`

深入探讨Java类型提升的约定[转]

阅读更多

    转: http://doc.chinaunix.net/java/200804/160498.shtml

 

     除了将byt型和short型提升到int型以外,java定义了若干适用于表达式的类型提升规则(type promotion rules). 首先,如刚才描述的,所有的byte型和short型的值被提升到int型.其次,如果一个操作数是long型,整个表达式将被提升到long型;如果一个操作数是float型,整个表达式将被提升到float型;如果有一个操作数是double型,计算结果就是double型.下面的程序表明:在表达式中的每个值是如何被提升以匹配各自二进制运算符的第二个参数:

 

<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->  class Promote {
  public static void main(String[] args) {
  byte b = 42;
  char c = 'a';
  short s = 1024;
  int i = 50000;
  float f = 5.67f;
  double d = .1234;
  double result = (f * b) + (i / c) - (d * s);
  System.out.println((f * b) + "+" + (i / c) + " - " + (d * s));
  System.out.println("result =" + result);
  }
  }

  进一步看看发生在下列程序行的类型提升:

  double result = (f * b) + (i / c) - (d * s);

  在第一个表达式f*b中,变量b被提升为float类型,该子表达式的结果当然是float类型.接下来,在子表达式i/c中,边量c被提升为int类型,该子表达式的结果当然是int类型.然后,子表达式d*s中的变量s被提升为double类型,该子表达式的结果当然是double类型.最后,考虑三个中间值,float类型,int类型,和double类型.float类型加int类型的结果是float类型,然后float类型减去提升为double类型的double类型,该表达式的最后结果是double类型.

分享到:
评论

相关推荐

    Java Language Specification(Java编程规范)中英文

    这里,我们将深入探讨Java编程规范中的核心概念,并提供一些关键知识点。 1. **基本语法与类型系统**: - **变量**:Java中的变量有基本类型和引用类型。基本类型包括整型(byte, short, int, long)、浮点型...

    MLDN魔乐JAVA_09深入引用、this关键字、对象比较.rar

    本课程“MLDN魔乐JAVA_09深入引用、this关键字、对象比较”将带你深入探讨这些核心概念。 首先,让我们来讨论“引用”。在Java中,变量可以分为基本类型和引用类型。引用类型变量实际上存储的是对象在内存中的地址...

    狂神说java系列笔记(java基础+javaweb+ssm+微服务)全套

    1. **25、SpringBoot入门及原理.pdf**:这部分内容将介绍Spring Boot的安装配置、快速启动应用的方法,以及其基于约定优于配置的设计哲学,还会探讨Spring Boot如何简化微服务的开发过程。 2. **20、狂神说MyBatis....

    Java中使用Groovy的三种方式

    本文将深入探讨在Java项目中使用Groovy的三种主要方式,并阐述它们各自的优势和应用场景。 一、作为嵌入式脚本 Java 6引入了JSR 223(Scripting for the Java Platform),允许在Java程序中直接执行脚本语言。...

    Java再说JNI之实例

    Java再次探讨JNI(Java Native Interface)这一主题,其主要目的是为了解决Java语言与本地代码交互的问题。JNI在Java世界中扮演着重要角色,它允许Java程序调用C/C++等本地代码,反之亦然,使得Java应用可以利用底层...

    java programming thoughts.rar_java_java programming

    Java集合框架是另一个值得深入探讨的主题,它包括ArrayList、LinkedList、HashSet、HashMap等数据结构,为存储和操作对象提供了便利。此外,接口如List、Set、Map和Queue定义了通用的操作,使得不同集合类型的代码...

    java 实验和作业

    在"java 实验和作业"这个主题下,我们可以深入探讨Java编程的学习过程,特别是通过实验和作业来提升技能。 实验在学习编程语言时起着至关重要的作用,它们帮助我们从理论走向实践,将抽象的概念转化为可运行的代码...

    JAVA基础(j2se部分)

    在探讨Java基础,特别是J2SE部分时,我们首先需要理解Java的几个核心概念。Java是一种面向对象的编程语言,其设计哲学强调“一次编写,到处运行”。Java语言发展至今,可分为几个部分,如J2SE、J2EE和J2ME。J2SE是...

    Java高级程序设计(第二版)-源代码-肖英-51702891

    《Java高级程序设计(第二版)》是一本深入探讨Java编程技术的专业书籍,其源代码提供了丰富的实例,帮助读者理解并掌握高级Java编程的核心概念。这本书涵盖了Java的多个重要领域,包括异常处理、集合框架以及数据库...

    基于计算机软件开发的Java语言探讨.zip

    Java语言在计算机软件开发中的应用广泛且深远,它以其跨平台、面向对象和高效的特点,成为了全球开发者首选的编程语言之一。...通过深入学习和实践,开发者可以充分利用Java的优势,提升软件开发的效率和质量。

    java核心技术卷1

    根据提供的信息,“Java核心技术卷1...它不仅涵盖了Java语言的基础知识,还深入探讨了其高级特性和标准类库的使用方法,为读者提供了丰富的理论知识和实践经验。希望每位学习者都能从中受益,不断提升自己的技术水平。

    Java NIO 英文文字版

    这本书《Java NIO》深入探讨了Java 1.4版本中的新I/O能力,并展示了如何利用这些特性来大幅提升代码的执行效率。 书中的内容涵盖了NIO的新特性,基础和高级I/O概念,二进制I/O和新的缓冲区类,内存映射文件和文件...

    JAVA 2应用编程150例

    首先,我们来探讨Java的基础部分。这包括变量、数据类型、运算符和控制结构。例如,理解基本数据类型(如int、float、char)和引用数据类型(如类、接口、数组)的差异至关重要。条件语句(if-else)、循环(for、...

    Java基础知识点总结.docx

    Java是一种广泛使用的面向对象的编程语言,其基础知识涵盖了多个方面,包括语法、面向对象特性、异常处理、多线程...以上只是Java基础知识的一个概述,每个话题都值得深入探讨和实践,不断学习和总结是提升技能的关键。

    藏经阁-Java开发手册(嵩山版)-63页

    配套图书《码出高效》深入探讨了计算机基础、JVM、并发等主题,旨在帮助开发者深入理解原理,提升编码技艺。 总的来说,《Java开发手册(嵩山版)》不仅是Java开发者的工具书,更是提升软件质量、保障团队协作效率...

    JAVA基本编码规范

    本文将深入探讨几个关键的编程规范,包括源文件组织、命名约定、注释规则以及成员函数标准。 **一、JAVA编程规范简介** 编写规范的Java代码是提升软件质量的基础。良好的编码习惯可以降低错误率,提高代码的可读性...

    JavaJava%BEE软件工程师就业求职手册.doc

    - **2.2.4 理解继承**:深入探讨Java中的继承机制,包括单继承限制、继承链以及覆盖方法等。 - **2.2.5 熟悉Java的常用命令**:列出并解释了在开发过程中经常用到的Java命令,如`javac`、`java`等。 - **2.2.6 ...

    java学习资料.zip

    "java学习资料.zip"包含了两本经典书籍的中文版本:《Effective Java》的第一版和第二版,这些都是Java开发者深入理解语言特性和最佳实践的重要资源。 《Effective Java》是由Joshua Bloch编写的,他是一位经验丰富...

Global site tag (gtag.js) - Google Analytics