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);
    }
  }
相关文章
|
10天前
|
存储 Java 测试技术
Java零基础教学(08):基本数据类型和取值范围
【8月更文挑战第8天】Java零基础教学篇,手把手实践教学!
17 5
Java零基础教学(08):基本数据类型和取值范围
|
10天前
|
存储 Java 测试技术
Java零基础(9) - 聊聊基本数据类型取值范围
【8月更文挑战第9天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
17 5
|
11天前
|
存储 Java 测试技术
Java零基础(8) - 谈谈基本数据类型
【8月更文挑战第8天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
29 6
|
12天前
|
存储 Java
02 Java基础语法(变量+数据类型+运算符)(下)
02 Java基础语法(变量+数据类型+运算符)
16 5
|
12天前
|
存储 Java
02 Java基础语法(变量+数据类型+运算符)(上)
02 Java基础语法(变量+数据类型+运算符)
30 4
|
23天前
|
Java
java 文件上传 :MultipartFile 类型转换为file类型
java 文件上传 :MultipartFile 类型转换为file类型
37 9
|
6天前
|
Java C#
C# 和 java 基本数据类型
C# 和 java 基本数据类型
6 0
|
1月前
|
存储 安全 Java
day17:Java零基础 - 基本类型转换
【7月更文挑战第17天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
21 2
|
1月前
|
存储 Java
Java中的基本数据类型及其包装类
Java中的基本数据类型及其包装类
|
1月前
|
分布式计算 Java 调度
MaxCompute产品使用合集之使用Tunnel Java SDK上传BINARY数据类型时,应该使用什么作为数据类字节
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。