Java基本数据类型及其类型转换

简介: Java基本数据类型及其类型转换

目录

数据类型

隐含的强制类型转换

类型转换规则:

自动类型转换


数据类型

数据类型 所占字节数 最小值 最大值 默认值
byte 1个字节(8位) -128 127 0
short 2个字节(16位) -32768 32767 0
int 4个字节(32位) -2,147,483,648(-2^31) 2,147,483,647(2^31 - 1) 0
long 8个字节(64位) -2^63 2^63 -1 0L
float 4个字节(32位)
1.4E-45
3.4028235E38
0.0f
double 8个字节(64位)
4.9E-324
1.7976931348623157E308
0.0d
char 2个字节(16位) 0
65535
‘u0000’
boolean 1个字节(8位) false true false

隐含的强制类型转换

整数字面量默认位 int 型,小数字面量默认为 double 型。

类型转换规则:

  • 1. 不能对boolean类型进行类型转换
  • 2. 不能把对象类型转换成不相关类的对象。
  • 3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
  • 4. 转换过程中可能导致溢出或损失精度,例如:

int i =128;

byte b = (byte)i;

  • 因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。

自动类型转换

(1)整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。

(2)转换从低级到高级。

低  ------------------------------------>  高


byte,short,char—> int —> long—> float —> double

(3)byte,short,char之间进行运算时,都会先转化为int在进行计算。

(4)计算机可以自动将低类型转换为高类型,但是不能将高类型转换为低类型。

(5)当整数字面值没有超过byte,short,char,int范围时,可以直接赋值给byte,short,char,int。

(6) 当整数字面值没有超过int范围时,可以直接赋值给long,如果超过了int范围,但是没有超过long范围,可以在整数字面值后面加上L或l。

(7)小数字面值赋值给float时需要在小数末尾加上F或f。

例:

class A
  {
    public static void main(String[] a)
    {
      long b = 2147483648;
      System.out.println(b);
      //错误
      //2147483648超出了int型
      //应该在2147483648后面加上L
      byte c = 10;
      System.out.println(c);
      //正确
      byte d = c / 2;
      System.out.println(d);
      //错误
      //c/2做运算时,会被当做int处理,高类型不能赋值给低类型
        long e = c / 2;
      System.out.println(d);
      //正确
      //c/2做运算,被当做int处理,低类型可以赋值给高类型,存在类型转换
      float f = 3.2;
      System.out.println(f);
      //错误
      //应该在3.2后面加上F或者f
      byte g = 2;
      byte h = 2;
      byte i = g + h;
      System.out.println(i);
      //错误
      //g和h都是byte类型,进行运算时都会先转化为int类型,结果也为int类型,int类型不能赋值给byte类型
      double j = 10 / 3;
      System.out.println(j);
      //正确,编译结果为3.0
      //10和3都是int类型,运算结果还是int类型,int类型可以转化为double类型,存在类型转换
      j = 10.0 / 3;
      System.out.println(j);
      //正确,编译结果为3.3333333333333335
      //10.0是double类型,3是整型,运算结果也是double类型
      byte k = 4;
      k = k + 4;
      System.out.println(k);
      //错误
      //k + 4的类型为int型,int类型无法转化成byte类型
      k+ = 4;
      System.out.println(k);
      //正确,编译结果为8
      //k+ = 4  ====>   k = (byte)(k + 4);
    }
  }
相关文章
|
26天前
|
Java
当Java数据类型遇上“爱情”,会擦出怎样的火花?
当Java数据类型遇上“爱情”,会擦出怎样的火花?
46 1
|
26天前
|
Java 程序员
Java数据类型:为什么程序员都爱它?
Java数据类型:为什么程序员都爱它?
39 1
|
26天前
|
存储 Java
Java数据类型:你究竟有多少面孔?
Java数据类型:你究竟有多少面孔?
31 1
|
26天前
|
存储 算法 Java
我与Java数据类型的那场“风花雪月”
我与Java数据类型的那场“风花雪月”
34 0
|
26天前
|
存储 自然语言处理 Java
Java数据类型:为何它如此“撩人”?
Java数据类型:为何它如此“撩人”?
34 0
|
26天前
|
存储 算法 Java
从菜鸟到大神,Java数据类型是如何改变我的人生的?
从菜鸟到大神,Java数据类型是如何改变我的人生的?
25 0
|
7天前
|
Java 编译器 程序员
Java自动类型转换的妙用
Java中的自动类型转换(隐式类型转换)是指编译器在无需显式指定的情况下自动将一种数据类型转换为另一种类型。这一特性简化了代码,提高了可读性,并在多态中发挥了重要作用。例如,在数学运算时,较小类型会自动转换为较大类型以避免精度损失;在面向对象编程中,子类对象可以自动转换为父类引用,增强了代码的灵活性和兼容性。此外,它还使得数组和集合的使用更加方便,整体上让编程更加优雅和高效。
|
7天前
|
存储 Java
Java内置数据类型和实例的详解
Java内置数据类型分为基本和引用两类。基本数据类型包括整型(`byte`、`short`、`int`、`long`)、浮点型(`float`、`double`)、字符型(`char`)和布尔型(`boolean`),用于存储简单的数值;引用数据类型则用于存储对象的引用,包括类(如`String`)、接口和数组。掌握这两类数据类型是Java编程的基础。以下示例展示了各种数据类型的使用方法。
|
26天前
|
存储 Java 程序员
揭秘!Java数据类型背后的“黑科技”
揭秘!Java数据类型背后的“黑科技”
30 1
|
26天前
|
存储 Java 开发者
Java数据类型:从入门到精通,你不得不看的“宝典”
Java数据类型:从入门到精通,你不得不看的“宝典”
36 0