JAVA基本数据类型、数据类型转换

来源:互联网 发布:亳州淘宝教学 编辑:程序博客网 时间:2024/04/26 06:06

JAVA中数据类型

一、基本数据类型

  1. 数值型
    1. 整型
      1. byte 字节型 占一个字节 用8位存储数据 范围:-128~127 默认值0
      2. short 短整型 占2个字节 2^15 范围:-32768~32767 默认值:0
      3. Int 整型 占四个字节 范围:-2^31~2^31-1
        1. 从JDK1.7开始,允许数字中间插入_分隔数字,在编译时,自动省略。
        2. java 中整数默认为Int,默认值是0.
      4. long 长整形 占8个字节 需要在后面加L作为标识,默认为0L。
    2. 浮点型
      1. float 单精度 占4个字节 在后面加f作为标识 默认值:0.0F
      2. double 双精度 占8个字节 java中小数的默认类型 默认值:0.0
    3. 字符型
      1. char 占2个字节 0~65535
      2. 编码:阿斯科玛表—ASCII 0-127 西欧码表—ISO8859-1 0-255 GB2312—2个字节表示一个汉字 —GBK Unicode编码体系—UTF-8—3个字节表示一个字符—万国码表
      3. 转义字符:\t 制表符 \r 回车 \n 换行 \ 反斜杠 \’单引号 \”双引号
        默认值: ‘\u0000’—以\u开头表示这个字符是它对应的UTF-8的编码
    4. 布尔型
      1. boolean true|false
    5. 注:
      1. java中数值类型都是有符号的。

二、引用数据类型

  1. 类—class 接口—interface 数组—[]

三、数据类型的转换

  1. 隐式转换/自动类型转换
    1. 转换规律一:byte->short->int->long
      1. long l = 34;//34默认是int类型,int类型的值可以赋值给long类型—在int类型的而取值范围内,将值直接赋值给long类型,可以不加L
    2. float f = 3.2f;
      double d = f;
    3. 转换规律二:float->double
      int i = 3;
      float f = i;
    4. 转换规律三:int->float,可能会产生精度损失
      float f = -25;//true
      float f = 25.0;//false
      long l = 34;
      float f = l ;—->true
    5. 转换规律四:任何一个整型都可以赋值给浮点型的变量,但是可能产生精度损失
      int->double—>会产生精度损失
      char c = ‘e’;
      int i = c;
    6. 转换规律五:char -> int
      //这两种写法在编译时期就已经转换成了对应的形式了
      char c = 98;–true–> char c = ‘b’;
      short s = ‘b’;–true—> short s = 98;
      char c = -1; //编译报错
      //分开编译的,编译完了char c = ‘b’; ‘b’已经以字符形式存在了内存中
      //由于两句话是分开编译的,所以现在JVM已经不确定c变量所表示表示的字符是否在short类型的取值范围内了。
      char c = ‘b’;
      short s = c;–false
      //编译完成之后s的取值已经存入内存中了,再次使用s的时候,不能按照对应的码表转换成字符,能确定这个数字是否在码表的范围内吗?
      short s = 100;
      char c = s;
      因为两句话是分开编译的,所以无法确定范围。

注:各个基本类型之间是平等的,不存在大小或者说是父子关系。
2. 显示转换/强制类型转换

1. 当把大的类型转换为小的类型的时候,需要强制转换float f = 3;->3.0fint i = (int)f;double d = 3.8;int i = (int)d;-> i = 3;当把浮点型数据转换为整型变量的时候,需要强制类型的转换。小数转换成整数的时候,不是四舍五入,而是舍弃掉小数部分。因此,小数转换整数的时候,也会产生精度损失。

注意:在计算机中,绝大部分小数是没办法精确保存的