1.表达式中的自动类型提升:

表达式求值时,Java自动的隐含的将每个byte、short或char操作数提升为int类型,这些类型的包装类型也是可以的。

例如:short s1 = 1;

  s1 = s1 + 1;

s1+1运算中的操作数s1会被自动提升为int类型,s1+1运算结果会成为int类型,再赋值给short类型的s1时,编译器会报告需要强制转换类型的错误。需要改为short s1=1; s1=(short)(s1+1);结果就是short类型。

例如:short s1 = 1;

  s1 += 1;

+=是java语言中的运算符,Java编译器会对它特殊处理进行正确的编译。

2.类型提升规则:

byte、short和char类型的值都被提升为int类型;

如果有一个操作数是long类型,就将整个表达式提升为long类型;

如果有一个操作数是float类型,就将整个表达式提升为float类型;

如果任何一个操作数为double类型,结果将为double类型。

例如:

byte b=1;

char c='a';

short s=1024;

int i=50;

float f=2.0f;

double d=.123;

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

f*b中,b被自动提升为float类型,该表达式结果是float类型;

i/c中,c被自动提升为int类型,该表达式结果是int类型;

d*s中,s被自动提升为doubl类型,该表达式结果是double类型;

最后,float+int-double,结果会被提升为double类型,double类型为最后结果result的类型。

java 运算符使表达式结果类型自动提升的更多相关文章

  1. 关于Java运算中类型自动提升的问题

    1.表达式中的自动类型提升: 表达式求值时,Java自动的隐含的将每个byte.short或char操作数提升为int类型,这些类型的包装类型也是可以的. 例如:short s1 = 1; s1 =  ...

  2. Java中关于类型自动提升的两个注意点。

    问题一:在进行赋值运算时,进行类型提升: 例如:short s1 = 1;s1 = s1 + 1; (错的编译通不过) short s2 = 1;s2 += 1;(正确,编译和运行都能通过) 为什么呢 ...

  3. 初识java——运算符和表达式以及注释

    java中有不同的运算符,并且在运算中有着优先级的排序计算,其中++和——的优先级最高,最先计算 运算符注意:1,增量和减量运算符++,——. int a=1++; int b=++1; 其中1++表 ...

  4. Java(4)运算符及表达式

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201675.html 博客主页:https://www.cnblogs.com/testero ...

  5. Java进阶4表达式中的陷阱

    Java进阶4表达式中的陷阱 20131103 表达式是Java中最基本的组成单元,各种表达式是Java程序员最司空见惯的内容,Java中的表达式并不是十分的复杂,但是也有一些陷阱.例如当程序中使用算 ...

  6. java表达式类型的自动提升

    当一个java算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升.Java定义如下的自动提升规则:1. 所有byte型.short型和char型将被提升到int型. 2. 整个 ...

  7. Java -- 表达式类型的自动提升

    1. 提升规则: a. 所有byte型,short型和char型将被提升到int型. b. 整个算数表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型. 例1: short val = 5; ...

  8. [零基础学JAVA]Java SE基础部分-03. 运算符和表达式

    转自:http://redking.blog.51cto.com/27212/116751 1.课程名称:运算符.表达式 讲解了JAVA中各种运算符的使用,包括与.或.非.大于.小于等. 2.知识点 ...

  9. java基础深入解析基本类型

    一.基本类型的简介 基本类型的两条准则: Java中,如果对整数不指定类型,默认时int类型,对小数不指定类型,默认是double类型. 基本类型由小到大,可以自动转换,但是由大到小,则需要强制类型转 ...

随机推荐

  1. 再读C++线程池

    最近仔细看了一下https://github.com/henkel/threadpool代码,总体感觉非常精巧,使用了 boost库的bind function完成了线程池与业务端的完全解耦:所有的任 ...

  2. knockout应用开发指南(完整版)

    http://www.cnblogs.com/TomXu/archive/2011/11/21/2257154.html

  3. C语言程序设计第4堂作业

    大家注意:本次作业稍有增加,由于放假期间大家空闲时间比较充足,将之前学习过程中遗留的问题必须在假期解决.   本次课学习主要内容: 分支结构中的二分支结构.多分支结构和else-if语句 掌握字符型数 ...

  4. Spring中的SPEL

    src\dayday\Person.java package dayday;/** * Created by I am master on 2016/11/28. */public class Per ...

  5. JavaScript onblur 和 onkeyup事件用法

    1.onblur表示失去焦点的时候被调用: 2.onkeyup表示键盘每输入完一个字符之后发生.简单来讲,就是键盘上的按键被放开的时候触发. 例子: <!DOCTYPE HTML PUBLIC ...

  6. X删除数据表的新用法

    删除数据表,可以这样进行,以前傻不拉唧的用sql去手动删除.             DAL dal = ...             dal.Db.CreateMetaData().SetSche ...

  7. Maven项目下java.lang.ClassNotFoundException的解决方法

    问题背景: Maven的project下,项目中已经引用了相应的jar包.Java class中没有语法错误,在执行时报ClassNotFound.检查了Maven的pom.xml,依赖引入正常. 错 ...

  8. 【转】VS2010安装后出现无法使用帮助的解决方案

    安装完VS2010后 再安装MSDN 打开“Help Library 管理器 - Microsoft Help 查看器 1.0” 提示“请为本地内容选择位置” 默认的位置是在“C:/Documents ...

  9. angular ng-if scope权限问题

    今天在一个ng-if处理的div中处理一个scope,我一开始想要打印这个选中的值,但是一直打印的是为undefined,找了一会,原来是ng-if这个指令单独开了一个作用域,它只可以继承,不可以进行 ...

  10. BZOJ 3156 防御准备

    也是斜率优化....推下式子就好了. #include<iostream> #include<cstdio> #include<cstring> #include& ...