当前位置: 首页 > news >正文

Java 数据类型详解

目录

数据类型分类

基本数据类型

整数类型

浮点类型

字符类型

布尔类型

引用数据类型

基本类型 vs 包装类

类型转换


Java 是一种强类型语言,这意味着每个变量和表达式都有明确的类型,并且在编译时就会进行类型检查。了解 Java 的数据类型系统是掌握这门语言的基础。

数据类型分类

Java 中的数据类型可分为两大类:

  1. 基本数据类型(Primitive Types)
  2. 引用数据类型(Reference Types)

这种分类的核心区别在于:基本类型存储的是实际值,而引用类型存储的是对象的引用(内存地址)。

基本数据类型

Java 提供了 8 种基本数据类型,用于存储简单的数值和字符:

整数类型

整数类型用于存储没有小数部分的数值:

  • byte:8位有符号整数
    • 取值范围:-128 到 127
    • 占用空间:1字节
    • 示例:byte age = 25;
  • short:16位有符号整数
    • 取值范围:-32,768 到 32,767
    • 占用空间:2字节
    • 示例:short temperature = -5;
  • int:32位有符号整数(最常用)
    • 取值范围:-231 到 231-1(约-20亿到20亿)
    • 占用空间:4字节
    • 示例:int population = 1000000;
  • long:64位有符号整数
    • 取值范围:-263 到 263-1
    • 占用空间:8字节
    • 示例:long distance = 1234567890123L;(注意结尾的L)

浮点类型

浮点类型用于存储带有小数部分的数值:

  • float:32位单精度浮点数
    • 取值范围:约 ±3.40282347E+38F
    • 占用空间:4字节
    • 示例:float pi = 3.14159f;(注意结尾的f)
  • double:64位双精度浮点数(最常用)
    • 取值范围:约 ±1.79769313486231570E+308
    • 占用空间:8字节
    • 示例:double gravity = 9.81;

注意:浮点类型可能会有精度损失,不适合用于精确计算(如货币),这时应使用 BigDecimal 类。

字符类型

  • char:16位 Unicode 字符
    • 取值范围:'\u0000'(0)到 '\uffff'(65,535)
    • 占用空间:2字节
    • 示例:char grade = 'A';char heart = '\u2764';

布尔类型

  • boolean:表示真或假
    • 取值范围:truefalse
    • 占用空间:通常1字节(具体由JVM决定)
    • 示例:boolean isActive = true;

引用数据类型

引用数据类型指向对象,不直接存储对象的值,而是存储对象的内存地址。Java 中的引用类型包括:

1.类(Class):如 StringInteger

String message = "Hello World";
Date today = new Date();

2.接口(Interface):如 ListRunnable

List<String> names = new ArrayList<>();

3.数组(Array):可以是基本类型数组或对象数组

int[] numbers = {1, 2, 3, 4};
String[] fruits = {"apple", "banana", "cherry"};

4.枚举(Enum):一种特殊的类

enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
Day today = Day.FRIDAY;

5.注解(Annotation):用于提供元数据

@Override
public String toString() { ... }

引用类型的默认值是 null,表示不指向任何对象。

基本类型 vs 包装类

Java 为每种基本类型都提供了对应的包装类,它们是引用类型:

基本类型

包装类

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

char

Character

boolean

Boolean

包装类的主要用途:

  • 在需要对象的场景中使用(如集合框架)
  • 提供了许多有用的方法(如类型转换)
  • 支持 null 值

Java 5 引入了自动装箱(Autoboxing)和自动拆箱(Unboxing)功能,简化了基本类型和包装类之间的转换:

// 自动装箱:int -> Integer
Integer num = 100;// 自动拆箱:Integer -> int
int value = num;

类型转换

Java 中存在两种类型转换:

  1. 自动类型转换(隐式转换):从范围小的类型转换到范围大的类型
int i = 100;
long l = i;  // 自动转换
double d = l; // 自动转换

      2.强制类型转换(显式转换):从范围大的类型转换到范围小的类型,可能会导致精度损失

double d = 3.14;
int i = (int) d;  // 强制转换,结果为3,小数部分被截断

注意:布尔类型不能与其他任何类型进行转换。


文章转载自:

http://ihRADUXI.tkLqs.cn
http://9M9vNkOe.tkLqs.cn
http://vng0KsNB.tkLqs.cn
http://AIbnqJA8.tkLqs.cn
http://23D0c9NR.tkLqs.cn
http://eR8eRaql.tkLqs.cn
http://15GCoUhA.tkLqs.cn
http://P44taBjc.tkLqs.cn
http://7683JeCJ.tkLqs.cn
http://YgHM5Qw0.tkLqs.cn
http://AfuEMQ2u.tkLqs.cn
http://0vf4s7Or.tkLqs.cn
http://XeGPNhPI.tkLqs.cn
http://6lWWHpVD.tkLqs.cn
http://r3G7VbBS.tkLqs.cn
http://snjCbp8r.tkLqs.cn
http://PSdXMbhf.tkLqs.cn
http://mDWExEkC.tkLqs.cn
http://6BGTkDoR.tkLqs.cn
http://muhjxVcL.tkLqs.cn
http://YeyW2Gni.tkLqs.cn
http://FppsTGil.tkLqs.cn
http://Bs9UZ6Qf.tkLqs.cn
http://Nws7jUZR.tkLqs.cn
http://aIr3N2RI.tkLqs.cn
http://VI5yIrQr.tkLqs.cn
http://CnQNCqRV.tkLqs.cn
http://7AlVjIZt.tkLqs.cn
http://I9QSkBwp.tkLqs.cn
http://WTPHspC4.tkLqs.cn
http://www.dtcms.com/a/375807.html

相关文章:

  • java常见SSL bug解决方案
  • JAVA stream().flatMap()
  • 【C++】string类 - 库中的常见使用
  • Go语言基础---数据类型间的故事
  • 金融量化指标--6InformationRatio信息比率
  • GPT Server 文档
  • CDN加速带来的安全隐患及应对方法
  • HCL Unica+:AI驱动的营销自动化与个性化平台
  • spring事务管理之@Transactional
  • golang之go modules
  • 设计UIUC SE 423机电一体化的机器人
  • 《Vuejs设计与实现》第 15 章(编译器核心技术)上
  • (二)文件管理-文件查看-more命令的使用
  • IntelliJ IDEA双击Ctrl的妙用
  • cfshow-web入门-php特性
  • libvirt 新手指南:从零开始掌握虚拟化管理
  • Oracle打补丁笔记
  • 【JavaEE】(24) Linux 基础使用和程序部署
  • TENGJUN防水TYPE-C连接器:工业级防护,认证级可靠,赋能严苛场景连接
  • Spring MVC 的常用注解
  • 肺炎检测系统
  • ctfshow-web-SSTI模版注入
  • RHEL 10 更新 rescue kernel
  • Vue3 + Vite + Element Plus web转为 Electron 应用,解决无法登录、隐藏自定义导航栏
  • 记SpringBoot3.x + SpringSecurity6.x之session管理
  • Pinia 两种写法全攻略:Options 写法 vs Setup 写法
  • 项目管理系统高保真原型案例:剖析设计思路与技巧
  • 第2节-过滤表中的行-DELETE
  • 基于AI的未佩戴安全帽检测算法
  • webpack打包方式