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);
    }
  }
相关文章
|
12天前
|
前端开发 JavaScript Java
java常用数据判空、比较和类型转换
本文介绍了Java开发中常见的数据处理技巧,包括数据判空、数据比较和类型转换。详细讲解了字符串、Integer、对象、List、Map、Set及数组的判空方法,推荐使用工具类如StringUtils、Objects等。同时,讨论了基本数据类型与引用数据类型的比较方法,以及自动类型转换和强制类型转换的规则。最后,提供了数值类型与字符串互相转换的具体示例。
|
22天前
|
Java
Java基础之数据类型
Java基础之数据类型
17 6
|
23天前
|
Java
在Java中如何将基本数据类型转换为String
在Java中,可使用多种方法将基本数据类型(如int、char等)转换为String:1. 使用String.valueOf()方法;2. 利用+运算符与空字符串连接;3. 对于数字类型,也可使用Integer.toString()等特定类型的方法。这些方法简单高效,适用于不同场景。
47 7
|
1月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
53 4
|
1月前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
37 1
|
2月前
|
存储 Java 关系型数据库
[Java]“不同族”基本数据类型间只能“强转”吗?
本文探讨了不同位二进制表示范围的计算方法,重点分析了Java中int和char类型之间的转换规则,以及float与int类型之间的转换特性。通过具体示例说明了显式和隐式转换的条件和限制。
38 0
[Java]“不同族”基本数据类型间只能“强转”吗?
|
3月前
|
存储 Java Windows
java基础(9)数据类型中的char类型以及涉及到的转义字符
Java中的char类型可以存储一个中文字符,因为它占用两个字节。转义字符允许在代码中使用特殊字符,例如`\n`表示换行,`\t`表示制表符,`\\`表示反斜杠,`\'`表示单引号,`\"`表示双引号。可以使用`\u`后跟Unicode编码来表示特定的字符。
67 2
java基础(9)数据类型中的char类型以及涉及到的转义字符
|
2月前
|
Java
JAVA易错点详解(数据类型转换、字符串与运算符)
JAVA易错点详解(数据类型转换、字符串与运算符)
52 4
|
2月前
|
存储 Java 编译器
[Java]基本数据类型与引用类型赋值的底层分析
本文详细分析了Java中不同类型引用的存储方式,包括int、Integer、int[]、Integer[]等,并探讨了byte与其他类型间的转换及String的相关特性。文章通过多个示例解释了引用和对象的存储位置,以及字符串常量池的使用。此外,还对比了String和StringBuilder的性能差异,帮助读者深入理解Java内存管理机制。
25 0
|
3月前
|
Java
java基础(10)数据类型中的整数类型
Java中的整数类型包括byte、short、int和long。整数字面值默认为int类型,加L表示long类型。整数字面值可以是十进制、八进制(0开头)或十六进制(0x开头)。小容量类型(如int)可自动转换为大容量类型(如long),但大容量转小容量需强制转换,可能导致精度损失。
51 2