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自动类型转换

     1)两种类型是彼此兼容的
     2)转换的目的类型占得空间范围一定要大于转化的源类型

  正向过程:由低字节向高字节自动转换

    byte->short->int->long->float->double

  逆向过程:使用强制转换,可能丢失精度。

     int a=(int)3.14;

3. Java数据类型自动提升(注意以下讨论的是二元操作符)

   Java定义了若干使用于表达式的类型提升规则: 
   1)所有的byte型. short型和char型将被提升到int型(例外: final修饰的short, char变量相加后不会被自动提升。)
   2)如果一个操作数是long形 计算结果就是long型;
   3)如果一个操作数是float型,计算结果就是float型;
   4)如果一个操作数是double型,计算结果就是double型;
 
   另一种归纳方式(《Java核心技术卷I》P43):   
  如果两个操作数其中有一个是double类型,另一个操作就会转换为double类型。
  否则,如果其中一个操作数是float类型,另一个将会转换为float类型。
  否则,如果其中一个操作数是long类型,另一个会转换为long类型。
  否则,两个操作数都转换为int类型。
 
   eg 1:
     Promote.java class promote
{
public static void main (string args[])
{
byte b = 50;
char c = 'a';
short s = 1024;
int i = 50000;
float f =5.67f;
double d =0.1234;
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类型,想减后该表达式的最后的结果就是double类型。

5) 黙认浮点类型为double,float数据类型有一个后缀为" f "或" F "。

6) long类型有一个后缀,为" l " 或者" L "。

 eg 2:

   byte a = 1;

   byte b = 2;

   a = a+b;      //编译出错自动类型提升成int

   a += b;       //自加没有自动类型提升问题

  把高字节转成低字节,需要作强制类型转换. byte c=(byte)a+b;

eg 3:

 byte b1=1,b2=2,b3,b6;
final byte b4=4,b5=6;
b6=b4+b5;
b3=(b1+b2); //会发生编译错误
System.out.println(b3+b6);

  没有final修饰的变量相加后会被自动提升为int型,与目标类型byte不相容,需要强制转换(向下转型)。

4. Java强制类型转换

     格式:目标类型 变量=(目标类型)源类型变量/常量
     eg:
        int i=5;
        byte j=(int)i;
    注意:在强制类型转换中目标类型和源类型变量的类型始终没有发生改变
    易错点:
        byte b;
        b=3;
        b=(byte)b*3    //编译出错,因为(byte)的运算级别比*高,所以会先转换b后再*3
        b=(byte)(b*3)  //正确
 
参考博文: 
http://blog.csdn.net/liang5630/article/details/37935383
http://blog.sina.com.cn/s/blog_66e7f79b0100ysd3.html

java 基本数据类型及自动类型提升的更多相关文章

  1. Java对于表达式中的自动类型提升

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

  2. Java中运算符及其优先级、自动类型提升、类型转化

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

  3. 二、JAVA基本数据类型:内置数据类型,引用类型

    变量的值存储在内存中,内存管理系统通过变量的类型分配存储空间,且该空间只能存储该类型数据,通过定义不同的变量,在内存中储存不同类型的数据. JAVA的两大数据类型 1. 内置数据类型 2.引用数据类型 ...

  4. java的数据类型、自动拆装箱、字面量

    java 中的数据类型分为两大类:值类型(基本数据类型)和引用类型(复合数据类型)  值类型分为 1,整数类型(byte,short,int,long) 2,浮点类型(float,double) 3, ...

  5. Java基本数据类型与包装类型(转)

    基本数据类型的包装类 为什么需要包装类? Java并不是纯面向对象的语言.Java语言是一个面向对象的语言,但是Java的基本数据类型却不是面向对象的.但是我们在实际使用中经常需要将基本数据转化成对象 ...

  6. 关于变量,JAVA基本数据类型,运算符类型,如何从控制台接收输入的数据

    一,变量与变量的使用 1.变量是在程序运行中其值可以改变的量,java程序的一个基本存储单元 2.变量的使用 变量类型+变量名 二,JAVA基本数据类型 1.数值型a.整点类型(byte.short. ...

  7. java 基本数据类型与变量类型

    Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. byte,short,char,int,long,float,double Java语言支持的变 ...

  8. java基本数据类型与封装类型详解(int和Integer区别)

    int是java提供的8种原始数据类型之一. Java为每个原始类型提供了封装类,Integer是java为int提供的封装类(即Integer是一个java对象,而int只是一个基本数据类型).in ...

  9. java 基本数据类型跟封装类型的差距

    import java.util.*; class test1{ public static void main(String[] args){ long start1 = System.curren ...

随机推荐

  1. OCR学习及tesseract的一些测试

    最近接触OCR,先收集一些资料,包括成熟软件.SDK.流行算法. 1. 一个对现有OCR软件及SDK的总结,比较全面,包括支持平台.编程语言.支持字体语言.输出格式.相关链接等 http://en.w ...

  2. numpy中loadtxt 的用法

    numpy中有两个函数可以用来读取文件,主要是txt文件, 下面主要来介绍这两个函数的用法 第一个是loadtxt, 其一般用法为 numpy.loadtxt(fname, dtype=, comme ...

  3. Selenium Webdriver——操作隐藏的元素(三)switchTo().frame()

    在web 应用中经常会遇到frame 嵌套页面的应用,页WebDriver 每次只能在一个页面上识别元素,对于frame 嵌套内的页面上的元素,直接定位是定位是定位不到的.这个时候就需要通过switc ...

  4. Microsoft Interview第一轮

    上来随意交谈了一小会儿,开了点小玩笑,chat了一些关于他们recruter行程的话题,缓和了一下气氛. 进入正题,问了做的research的方向,我说是DLT,然后大概给他讲解了一下具体是什么, 跟 ...

  5. TensorFlow 开发环境搭建--Pycharm

    今天动手开始搭建TensorFlow开发环境, 用PyCharm来跑MNIST中的例子.记录过程如下 下载安装 (1)首先安装AnaConda, AnaConda可以帮忙去管理安装包,帮忙创建虚拟环境 ...

  6. 一款优秀的OA办公系统有哪些功能?

    OA办公系统解决企业的日常管理规范化.增加企业的可控性.提高企业运转的效率的基本问题,范围涉及日常行政管理.各种事项的审批.办公资源的管理.多人多部门的协同办公.以及各种信息的沟通与传递.可以概括的说 ...

  7. sql性能优化(摘自网络)

    索引,索引!!!为经常查询的字段建索引!! 但也不能过多地建索引.insert和delete等改变表记录的操作会导致索引重排,增加数据库负担. 优化目标 1.减少 IO 次数 IO永远是数据库最容易瓶 ...

  8. Node.js最新技术栈之Promise篇

    前言 大家好,我是桑世龙,github和cnodejs上的i5ting,目前在天津创业,公司目前使用技术主要是nodejs,算所谓的MEAN(mongodb + express + angular + ...

  9. ThinkPHP内置日志记录

    ThinkPHP内置日志记录日志记录http://document.thinkphp.cn/manual_3_2.html#log 日志的处理工作是由系统自动进行的,在开启日志记录的情况下,会记录下允 ...

  10. JavaScript Match

    JavaScript Match 版权声明:未经授权,严禁转载! 随机数 // 随机数 Math.random() 随机生成一个大于等于0且小于1的小数. // 0>= r < 1 [0, ...