java表达式类型的自动提升】的更多相关文章

当一个java算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升.Java定义如下的自动提升规则:1. 所有byte型.short型和char型将被提升到int型. 2. 整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型.操作数的等级排列如下图所示,位于箭头右边类型的等级高于位于箭头左边类型的等级. byte b1 = 3; byte b2 = 4; byte b3 =b1+b2;  x 在运算期间,b1和b2被自动提升为int byte b3 =(b…
1. 提升规则: a. 所有byte型,short型和char型将被提升到int型. b. 整个算数表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型. 例1: short val = 5; val = val -2 ; 编译时将报错 "Type mismatch: cannot convert from int to short",表达式中右边的val自动提升为int型,int --> short故报错. 例2: byte b = 40; char c = 'a';…
变量只能定义一次,不能定义两次, 变量的作用域:当前的大括号与子括号才有效 变量的作用:存储值,取值 整型:向上自动升级,向下强制降级 char,byte,shot参与运算时候自动提升为int型 因为byte,char,shot在运行时候会有溢出的情况,所以自动提升.两个int参与运算时候 不会提升为long,不会报错,但是会损失精度 任何的整数类型和long类型做运算都会转换成long类型 整型默认为int型…
问题一:在进行赋值运算时,进行类型提升: 例如:short s1 = 1;s1 = s1 + 1; (错的编译通不过) short s2 = 1;s2 += 1;(正确,编译和运行都能通过) 为什么呢?这其中就涉及到了类型的自动提升问题.解释如下: short s1 = 1; // 这个表达式会进行自动类型提示,因为1为int类型, // 所以提升后整体的数据类型为int类型.因为short类型为2个字节,int类型为4个字节, // 把四个字节的内容放到2个字节的内容中,编译肯定通不过. //…
基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型.它们是我们编程中使用最频繁的类型.java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化. 1. Java的简单类型及其封装器类 Java基本类型共有八种: 基本类型可以分为三类:字符类型char,布尔类型boolean以及数值类型byte.short.int.long.float.double.数值类型又可以分为整数类型byte.short.int.long和浮点数类型float.double.JAV…
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自动的隐含的将每个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;…
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的8种基本数据类型及其所占空间大小: boolean  8bit/1byte       byte      8bit/1byte       char      16bit/2byte       short     16bit/2byte float      32bit/4byte       int        32bit/4byte       long      64bit/8byte       double  64bit/8byte   2.Java自动类型转换  …
具体自动提升类型如上图所示.其中long->float的转换一开始让我感觉有点问题,因为long是64位的,而float却是32位的. 遂找寻答案,参考博客java中long到float的自动转换引发的血案. 原因 首先要知道一点,float能表示的数的范围比long大,那么可想而知,一个long型数可以转为float型. long类型,取值范围是-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807(-263 ~ 263-1) float类…
当传递到函数的参数的数据类型表示的范围小于函数形参的参数类型遵循如下原则 : char类型比较特殊, 直接转换为int:  char ->int ->long->float->double 其他的基本数据类型都遵循这个规则: byte->short->int->long->float->double 浮点型常量: 比如0.5等没有明确指出是何种类型的常量. 直接处理成double类型, 而不是float 如果希望是某一种明确的类型, 最后显示地给出,…
[1]您确定真正了解后缀表达式与前缀表达式的区别吗? public class IncrementDemo{ public static void main(String[] args) { int i = 0; int j = 0; i = i++; j = ++j; System.out.printf("i=%d,j=%d \n",i,j); } } 输出结果是什么呢? 关于前缀表达式与后缀表达式,JLS中是这样解释的: 1.The value of the postfix inc…
Java表达式转型规则由低到高转换: 1.所有的byte,short,char型的值将被提升为int型: 2.如果有一个操作数是long型,计算结果是long型: 3.如果有一个操作数是float型,计算结果是float型: 4.如果有一个操作数是double型,计算结果是double型: 5.被fianl修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的类型而转化.…
本题答案应为:B.C.D ------------知识点------------ Java表达式转型规则由低到高转换(例如int 到 double): 1.所有的byte,short,char型的值将被提升为int型: 2.如果有一个操作数是long型,计算结果是long型: 3.如果有一个操作数是float型,计算结果是float型: 4.如果有一个操作数是double型,计算结果是double型: 5.被fianl修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的…
目录 写在前面 系列文章 变量表达式 常量表达式 条件表达式 赋值表达式 二元运算符表达式 一元运算符表达式 循环表达式 块表达式 总结 写在前面 首先回顾一下上篇文章的内容,上篇文章介绍了表达式树的解析和编译.如果忘记了,可以通过下面系列文章提供的入口进行复习.这篇文章将介绍常见的表达式类型. 常见的表达式类型都有个共同的基类Expression.创建这些类型的对象,是通过API的方式创建的(也就是Expression的静态方法),首先引入命名空间: using System.Linq.Exp…
目录 写在前面 系列文章 隐式类型 自动属性 初始化器 匿名类 总结 写在前面 上篇文章是本系列的小插曲,也是在项目中遇到,觉得有必要总结一下,就顺手写在了博客中,也希望能帮到一些朋友.本文将继续介绍linq系列的基础知识,隐式类型,自动属性,初始化器,匿名类的相关概念,这些内容也许与linq相关也许不相关,但还是放一起总结吧,也算是复习了.部分内容通过反编译的方式一探究竟. 系列文章 Linq之Lambda表达式初步认识 Linq之Lambda进阶 隐式类型 先看看Msdn上对隐式类型的简单定…
原文网址:http://iaiai.iteye.com/blog/1843553 1   背景 在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量.之前我们通常利用public final static 方法定义的代码如下,分别用1 表示春天,2表示夏天,3表示秋天,4表示冬天. public class Season { public static final int SPRING = 1; public static final int SUMMER = …
JAVA 异常类型结构分析 Throwable 是所有异常类型的基类,Throwable 下一层分为两个分支,Error 和 Exception. Error 和 Exception Error Error 描述了 JAVA 程序运行时系统的内部错误,通常比较严重不可挽回,除了通知用户和尽力使应用程序安全地终止之外,无能为力,应用程序不应该尝试去捕获这种异常.通常为一些虚拟机异常,如 StackOverflowError 等. Exception Exception 类型下面又分为两个分支,一个…
为什么要引进基本类型? Java 引进了八个基本类型,来支持数值计算.Java 这么做的原因主要是工程上的考虑,因为使用基本类型能够在执行效率以及内存使用两方面提升软件性能. Java 虚拟机的 boolean 类型 在 Java 语言规范中,boolean 类型的值只有两种可能,它们分别用符号“true”和“false”来表示.显然,这两个符号是不能被虚拟机直接使用的. 在 Java 虚拟机规范中,boolean 类型则被映射成 int 类型.具体来说,“true”被映射为整数 1,而“fal…
问题及答案来源自<Java程序员面试笔试宝典>第四章 Java基础知识 4.4基本类型与运算 1.Java提供了哪些基本数据类型? Java一共提高了八种原始的数据类型:byte.short.int.long.float.double.char.boolean 基本数据类型不是对象,而是基本数据类型,这些数据类型变量在声明之后就会立刻在栈上被分配内存空间 八种基本类型可以分为以下四类: int相关:short(2字节).int(4字节).long(8字节) float相关:float(4字节)…
原文链接:https://dzone.com/articles/var-work-in-progress 作者:Anghel Leonard 译者:沈歌 Java局部变量类型推断(LVTI),简称var类型(标识符var不是一个关键字,是一个预留类型名),Java 10中通过JEP 286: Local-Variable Type Inference 添加进来.作为100%编译特征,它不会影响字节码,运行时或者性能.在编译时,编译器会检查赋值语句右侧代码,从而推断出具体类型.它查看声明的右侧,如…
Java基础系列1:Java基本类型与封装类型 当初学习计算机的时候,教科书中对程序的定义是:程序=数据结构+算法,Java基础系列第一篇就聊聊Java中的数据类型. 本篇聊Java数据类型主要包括两个内容: Java基本类型 Java封装类型 Java基本类型 Java基本类型分类.大小及表示范围 Java的基本数据类型总共有8种,包括三类:数值型,字符型,布尔型,其中 数值型: 整数类型:byte.short.int.long 浮点类型:float.double 字符型:char 布尔型:b…
一 基本类型包装类 1.包装类概述 Java中提供了相应的对象来解决实现字符串与基本数据之间转换问题,基本数据类 型对象包装类:java将基本数据类型值封装成了对象. 8种基本类型对应的包装类如下: 其中需要注意int对应的是Integer,char对应的Character,其他6个都是基本类型首字母大写即可. 基本数据类型对象包装类特点:用于在基本数据和字符串之间进行转换. 将字符串转成基本类型: parseXXX(String s);其中XXX表示基本类型,参数为可以转成基本类型的字符串,如…
1. 前言 在Java这种强类型语言中类型转换.类型判断是经常遇到的.今天就细数一下Java中类型判断的方法方式. 2. instanceof instanceof是Java的一个运算符,用来判断一个对象是否为一个类的实例 .用法: boolean isInstance = obj instanceof Class 其中 obj 为一个对象实例,Class 为类名或者一个接口名,当 obj 为 Class 的实例,或是其子类实例,或是其接口的实现类实例,都返回 true,否则返回false. 需…
Java基本类型 2019-11-03  19:03:48  by冲冲 1.两个float型相减丢失精度,如何解决? 使用BigDemical装饰器模式 public class Test { public static void main(String[] args) { float a = 2.030944f; float b = 1.001085f; System.out.println(a - b);// 1.0298591 BigDecimal c = new BigDecimal(F…
02 java包装类型的缓存机制 Java 基本数据类型的包装类型的大部分都用到了缓存机制来提升性能. Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据,Character 创建了数值在 [0,127] 范围的缓存数据,Boolean 直接返回 True or False. 下面让我们来探究源码吧! Integer源码 可以看到 当我们需要转换的值在 -128>=x<=127 这个区间 会采用堆中的引用 不信看看下面的测…
以下基本上是java string类型最常用的三种方法 new string()就不介绍了  基本等同于第三种 String a;  申明一个string类型的 a,即没有在申请内存地址,更没有在内存任何指向引用地址; String a = null ;   申明一个string类型的 a,同时在内存里申请了一个地址,但是该地址不指向任何引用地址: String a = "" :申明一个string类型的 a,既在内存里申请了地址,该地址又指向一个引用该字符串的引用地址: 一般来说 字…
Atitti.java exp ast java表达式语法ast构造器 /atiplat_cms/src/com/attilax/lang/AstParser.java 原理 分割tokens_slice_li 分析splitor,, 主要是dot 和end 作者::  ★(attilax)>>>   绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com 转…
最近做android开发,需要用到枚举值,这样可以连续赋值,我按之前c++那样书写,如下所示: public enum ColorSelect { RED_BAGE = 0, GREEN_BAGE, BLUE_BAGE; } 编译不过. 我将赋值语句修改了以后,如下所示: public enum ColorSelect { RED_BAGE , GREEN_BAGE, BLUE_BAGE; } 编译通过.说明C++那样的赋值方法不适用java.所以,我需要弄清楚的是: 1. 在java平台上,如…