「6」数据类型

1、Java数据类型

  ●Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间

    ●JVM内存管理分为三大块:栈内存(调用方法时,在方法中声明的一些基本类型)、堆内存(new出来的对象,引用类型)、方法区(静态变量、常量、类的信息)。

    ●JVM会把整型默认为int类型(不超范围的可以自动转换成小类型,long需要末尾加l或L),带小数的默认为double类型(float需要末尾加f或F)。小数为零点几的可以省略零,也可以后面加eXX,代表乘以10的XX次方。数值前面加上括号,里面写上类型可实现强制类型转换。

    ●字符型char必须用单引号括起来(也可直接使用数值或十六进制的Unicode字符),在java中字符char类型使用的是占两字节的Unicode字符编码UTF-16(’\u0000’)。

  ●Java对于整数有三种不同的表现形式

    ●十进制:0-9,满10进一

    ●八进制:0-7,满8进一,以0开头

    ●十六进制:0-9,A-F,满16进一,以0x开头

  ●进制的基本转换

    ●十进制转二进制:除2取余数(小数为乘2取整数)

    ●二进制转十进制:乘2的幂数(小数为2的-1次方、-2次方)

    ●八进制、二进制互转:一位变三位、三位变一位

    ●十六进制、二进制互转:一位变四位、四位变一位

  ●负数的二进制表现形式

    ●对应的正数二进制取反加一

  ●数值转换练习:

    练习1:将二进制数1101.101转换为十进制数。(13.625)

    练习2:将十进制整数105.625转换为二进制整数。(1101001.101)

    练习3:将1011101001.110101B转换为十六进制数(2E9.D4)

2、基本类型转换

  ●语法

    ●自动类型转换(隐式转换):

      在某种条件下,系统自动完成类型转换也称隐含转换(Implicit casting)

      ●两种类型兼容

      ●目标类型大于源类型

      ●对于表达式,如果一个操作数为double型,则整个表达式可提升为double型

    ●强制类型转换(Explicit Casting)(显式转换):

      在一定条件下,程序员手动完成类型转换

      ●两种类型兼容

      ●一般目标类型小于源类型

  ●要点

    强制类型转换会丢失精度

  ●示例代码

    1、自动类型转换:

      int i = 10;

      double d = i;

    2、强制类型转换

      double d = 10.0;

      int i = (int)d;

  ●总结:byte<short(char)<int<long<float<double

  ●示例

    ●去年Android手机所占的市场份额是10,今年增长的市场份额是19.8,求今年所占的份额。

      int before = 10;                  //Android手机市场份额

      double rise = 19.8;            //增长的份额

      int now = before + rise;   //现在的份额      ← 编译出错,不能完成自动类型转换

      更改为int now = before + (int)rise;         //现在的份额      ←强制类型转换

posted @ 2017-05-27 21:52  qq379264347  阅读(307)  评论(0编辑  收藏  举报