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

表达式求值时,Java自动的隐含的将每个byteshortchar操作数提升为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 类型提升规则

(1)byteshortchar类型的值都被提升为int类型;

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

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

(4)如果任何一个操作数为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中运算符及其优先级、自动类型提升、类型转化

                   自动类型提升的规则 两个操作数中有一个为double型的数据,计算结果提升为double. 两个操作数中无double型,有一个float,计算结果自动提升为float. ...

  2. java 基本数据类型及自动类型提升

    1.Java的8种基本数据类型及其所占空间大小: boolean  8bit/1byte       byte      8bit/1byte       char      16bit/2byte ...

  3. java 基本数据类型及自己主动类型提升

    基本数据类型:8种 1.整型: byte    1个字节    8位    -128到127 short   2个字节    16位  -2^15到(2^15)-1 int    4个字节    32 ...

  4. 【java】jackson 中JsonFormat date类型字段的使用

    为了便于date类型字段的序列化和反序列化,需要在数据结构的date类型的字段上用JsonFormat注解进行注解具体格式如下 @JsonFormat(pattern = "yyyy-MM- ...

  5. 时间、金钱在java、数据库中的变量类型之总结

    在编写程序时,总是有些变量的类型搞不很明白,现将目前涉及到的变量总结一下: 1.“时间”类型 (1).在数据库中的变量类型是:DateTime 比如: operateTime DATETIME,//数 ...

  6. Java访问Scala中的Int类型

    出错代码 写java 和 scala 混合代码的时候遇到一个小问题 def extractRefInputFieldsWithType(exprs: JList[RexNode]): Array[(I ...

  7. java EL表达式中${param.name}详细

    在浏览器地址输入,表示传入一个参数test,值为123 URL:http://localhost:8888/Test/index.jsp?test=123 <body> ${test} $ ...

  8. java语言方法中定义final类型的入参有什么用意?

    无论参数是基本数据类型,还是引用数据类型,只要加了final,不好意思,该参数不可以再赋值(实参传进来给形参,就相当于初始化完成).可以防止在方法里面不小心重新赋值,造成一些不必要的麻烦!!!参考:h ...

  9. java重载中的基本类型的自动类型转换

    当传递到函数的参数的数据类型表示的范围小于函数形参的参数类型遵循如下原则 : char类型比较特殊, 直接转换为int:  char ->int ->long->float-> ...

随机推荐

  1. 使用SMTP发送邮件

    先定义一个邮件实体: public class EntityMail { /// <summary> /// 发件人 /// </summary> public string ...

  2. fastText 安装

    Windows: https://www.lfd.uci.edu/~gohlke/pythonlibs/#fasttext 下载需要的版本 然后:pip install 文件名

  3. LeetCode【第1题】Two Sum

    准备刷一刷LeetCode了. 题目: ''' Given an array of integers, return indices of the two numbers such that they ...

  4. 安装sublime text2 for ubuntu

        Add our Sublime Text 2 Ubuntu PPA using the following commands: sudo add-apt-repository ppa:webu ...

  5. activiti 临时笔记mark

    public class TenMinuteTutorial { public static void main(String[] args) { // Create Activiti process ...

  6. SQL Server - 文件组,文件,备份,分区

    FileGroup:文件组,为逻辑划分:Files:文件,为实际文件,需要指定文件属于哪个文件组. 使用多个文件的有点:可以将磁盘I/O压力分散,提供按文件和文件组(按文件和文件组进行备份需要设置数据 ...

  7. Json.Net组件指定/忽略序列化字段属性技巧知识点

    我们在用Json.Net序列化组件序列化类的时候,经常有这样的一个需求:指定被序列化类中的某些字段属性是要忽略的,或者是指定字段属性序列化 比如下面这个类: public class Bar { pu ...

  8. 手把手教你写一个java的orm(四)

    开始准备生成sql 在上一篇里,我们已经取到了我们在生成sql语句中所需要的信息,这一篇里我们开始根据class来生成我们需要的sql.在这之前我们先确认几件事情 sql里的参数我们使用占位符的形式. ...

  9. spring boot获取request

    1. Controller中 1.1 通过静态方法获取 HttpServletRequest request = ((ServletRequestAttributes)RequestContextHo ...

  10. tcpcopy架构

    tcpCopy 1.0 的最新架构分为三个角色: Online Server(OS):上面要部署 TCPCopy,从数据链路层(pcap 接口)抓请求数据包,发包是从IP层发出去: Test Serv ...