Java基本数据类型及之间的转换

基本类型可以分为三类:

字符类型char;

布尔类型boolean;

数值类型byte、short、int、long、float、double。

数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double

1、布尔型

boolean类型不可以转换成其他的数据类型,不可以以0或非0的数字代替;

2、整数型

整型默认为int型,而long类型表示的范围要超出int表数范围,所以,声明long类型时,常量后要加L

如:long l1=12345678  //  数值在int范围之内,还不会出错

       long l2=8888888888;//  数值在int范围之外,会出错

       long l3=8888888888L; //正确

3、浮点型

浮点型默认为double,所以float类型声明时后面需要加f/F ; 或者用强制转换符

如:float f1 = (float)0.1;

float f2 = 0.1f;



二、基本数据类型转换:

    各数据类型按容量大小(表数范围大小)由小到大排列为:

     Byte, short, char  ——int ——long——float——double

  1.转换时遵循的原则

     1)容量小的类型自动转换为容量大的类型;

     2)容量大的类型转换为容量小的类型时,要加强制转换符;

    3)byte,short,char之间不会互相转换,并且三者在计算时首先转换为int类型;

    4)实数常量默认为double类型, 整数常量默认为int类型;

    *  字符型 为什么也能和 整形、浮点型进行运算呢? 

       答:  字符型在机器内部也是数字。进行计算时,先获得字符的ASCK码,然后再进行计算。

2.转换举例: 

     Int i1=123;

     Int i2=456;

     Double d1 = (i1+i2)*1.2             //容量小的类型自动转换为容量大的类型

      Byte b1=1;

      Byte b2=2;

      Byte b3=(byte)(b1+b2);        //byte,short,char在计算时首先转换为int,大容量(int)转换为小容量的类型(byte)时要加强制转换符

  典型问题:

(1)  double d = 1e200;//打印显示Infinity;

(2)  float f = 11.1//错误;默认为double类型,应该修改为float f = 11.1f;

(3)public class TestDataKind {

            public static void main(String[] args) {

               byte b = 44;

               char c = 'b';

               short s = 1024;

               int i = 40000;

               long l = 12463l;

               float f = 35.67f;

               double d = 3.1234d;

       /*

        * (f * b)时,b自动提升为float类型 (l*f)时,l自动提升为float类型 (i/c)

*时,c自动提升为int类型

        * (d*s)时,s自动提升为double类型 再相加时,中间结果都变为了double类型。

        * 这里result只能声明为double类型,result声明为其他类型会出错,除非进行

*强制类型转换

        */

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

               System.out.print((f * b) + " + " + (l * f) + " + " + (i /

c) + " - " + (d * s));

               System.out.println(" = " + result);

            }

}

(4) byte b1 = (byte)128;

byte b2 =(byte)-129;

System.out.println(b1);

System.out.println(b2);

    打印结果:-128和127

    分析:byte只有八位,只能表示-128—127;计算机中负数的存储方式是补码。对负数的绝对值的二进制值取反,再加一,即为负数的二进制码。如:-1的绝对值1的二进制码为00000001,取反得到11111110,再加一为11111111。-128的绝对值128的二进制码为10000000,取反得到01111111,再加一为10000000,正好是Byte的最大表示范围。而-129的绝对值129的二进制码为10000001,取反后得01111110,加一后得01111111,最后结果就是127




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值