美文网首页
数据类型

数据类型

作者: 瓶盖英雄 | 来源:发表于2018-08-08 12:17 被阅读0次

一、数据类型分类

  • 整型(4种)
      - byte   1个字节   -128~127
      - short  2个字节   -32768~32767
      - int      4个字节   -21 4748 3648~21 4748 3647
      - long   8个字节   -922 3372 0368 5477 5808~922 3372 0368 5477 5807
        byte和short主要用于特定的场合(如底层文件的处理或者需要控制占用存储空间量的大数组)
        int最常用
        long在使用时有一个后缀L(如6000000000L)
示例
long num = 2200000000L;  //所赋值范围超出int的范围,必须加L
long num = 198L;  //所赋值范围未超出int的范围,可以加L
long num = 198;  //所赋值范围未超出int的范围,可以不加L

  • 浮点型(2种)
      - 单精度浮点数  float            4个字节  有效位6-7位
      - 双精度浮点数  double        8个字节  有效位为15位
    float类型的变量赋值数字后面要加f/F
    double类型的变量赋值数字后面可以加或不加d/D
示例
float f = 123.4f;  //为一个float类型的变量赋值,必须加f
double d1 = 100.1  //为一个double类型的变量赋值,可以不加d
double d2 = 199.3d  //为一个double类型的变量赋值,可以加d

  • 字符型(char)
    给char类型赋值时,需要加''把字符括起来
示例
char c = 'a';
char ch = 97;

Tips:在这个代码块中,'a'和97都表示a这个字符,在ASCII表十进制的97可以查到代表a这个字符
(十六进制和二进制同理)


  • 布尔型(boolean)
      布尔型变量只有两个值
        - true
        - false
示例
boolean flag = ture;  //初始化变量为true
flag = false;  //将false赋值给flag

二、变量类型的转换

1.自动类型转换(隐式类型转换)
    - 条件
         - 两种数据类型彼此兼容
         - 目标类型的取值范围大于源类型的取值范围

示例
byte b = 3;
int x = b;  //程序把byte类型的变量b转换成了int类型,无须特殊声明

Tips:由于int类型的取值范围大于byte类型的取值范围,编译器在赋值过程中不会造成数据丢失
所以编译器能自动完成这种转换

除了示例的情况,还有很多类型之间可以进行自动类型转换

  • 整数类型之间可以实现转换,如byte类型的数据可以赋值给short、int、long类型的变量;short、char类型的数据可以赋值给int、long类型的变量;int类型的数据可以赋值给long类型的变量。
  • 整数类型转换为float类型,如byte、char、short、int类型的数据可以赋值给float类型的变量。
  • 其他类型转换为double类型,如byte、char、short、int、long、float类型的数据可以赋值给double类型的变量。
    2.强制类型转换(显示类型转换)
             - 两种数据类型之间的转换需要进行显式声明。(当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,自动类型转换无法进行,需要强制类型转换)
示例
1  public class Example01 {
2     public static void main(String[]args) {
3        int num = 4;
4        byte b = num;
5        System.out.println(b);
6      }
7   }

在这种情况下,由于byte的取值范围比int小,一个字节的变量无法存储四个字节的变量,导致数值溢出,所以无法进行自动类型转换,程序会报错,在这时候需要进行强制类型转换:
将第4行代码改为
byte b = (byte) num;
程序就不会报错了,运行结果为4

  • Tips : 在对变量进行强制类型转换时,会发生取值范围较大的数据类型向取值范围较小的数据类型的转换。如将一个int类型的数转换为byte类型,极容易导致数据精度的丢失。
示例
1  public class Example02{
2    public static void main(String[]args) {
3      byte a;
4      int b = 298;
5      a = (byte) b;
6      System.out.println("b = " + b);
7      System.out.println("a = " + a);
8     }
9  }

运行结果为
b = 298
a = 42

由此可知,当将变量b的类型强制转换为byte类型后,前面3个高位字节的数据丢失,数值发生改变
过程如下
int :00000000 00000000 00000001 00101010(298)
byte:                                                 00101010(42 )

很明显丢失了精度


相关文章

  • JAVA 之路第一讲

    数据类型: 基础数据类型 包装器数据类型 引用数据类型 null 数据类型 基础数据类型: 整型 byte(字节型...

  • php 数据类型和数据类型转化

    一、数据类型 基础数据类型 复合数据类型 特殊数据类型 二、获取数据类型 三、打印数据类型和值 四、数据类型判断 ...

  • OC和C中的数据类型

    数据类型对比 C语言数据类型C语言数据类型 OC数据类型

  • JAVA 核心笔记 || [2] 数据类型

    JAVA数据类型分为两大数据类型: 1.内置数据类型2.引用数据类型 内置数据类型 引用数据类型 上篇 : 开篇 ...

  • 数据类型

    数据类型作用:数据类型不同,空间大小不同。 数据类型分类:基本数据类型、引用数据类型基本数据类型:整数型、浮点型、...

  • Java知识之数据类型

    Java数据类型图表## Java数据类型分为:### 基础数据类型 引用数据类型 null类型 基础数据类型分別...

  • JAVA基础第四天

    JAVA数据类型---布尔类型; 数据类型转换自动数据类型转换 强制数据类型转换

  • Java数据类型(慢慢积累,对于事物的理解也会不一样)

    Java的数据类型: 1. 内置数据类型(基本数据类型); 2. 引用数据类型; Java基本数据类型:(...

  • 【IOS 开发】 数据类型详解

    1. 数据类型简介及输出 (1) 数据类型简介 数据类型简介: Object - C 数据类型 分为 基本数据类型...

  • iOS 数据类型简介及输出

    一、数据类型简介及输出 1.数据类型简介 数据类型简介 : Object - C 数据类型 分为 基本数据类型, ...

网友评论

      本文标题:数据类型

      本文链接:https://www.haomeiwen.com/subject/kkytbftx.html