首页 > 编程语言 >Java中的8种基本数据类型及其存储方式

Java中的8种基本数据类型及其存储方式

时间:2024-08-09 17:55:31浏览次数:16  
标签:存储 Java 数据类型 char 127 类型 转换 数据

文章目录

基本数据类型

  • Java属于C类语言,有8种数据类型
数据类型byteshortintlongfloatdoublecharboolean
数据大小8bit16bit32bit64bit32bit64bit8bit/24bit/32bit/64it32bit
默认值0000l0.0f0.0\u0000(空格)false
包装类ByteShortIntegerLongFloatDouleCharacterBoolean
数值范围 ( − 128 , 127 ) (-128,127) (−128,127) ( − 32768 , 32767 ) (-32768,32767) (−32768,32767) ( − 2 31 , 2 31 − 1 ) (-2^{31},2^{31}-1) (−231,231−1) ( − 2 63 , 2 63 − 1 ) (-2^{63},2^{63}-1) (−263,263−1)约为 ± 3.40282347 E + 38 F ±3.40282347E+38F ±3.40282347E+38F约为 ± 1.79769313486231570 E + 308 ±1.79769313486231570E+308 ±1.79769313486231570E+308--
  • 包装类的默认值为均为null。
  • 1B = 8bit = 1字节

存储方式

整型数据

负数的存储为其绝对值的原码取反码再加1得到的补码形式存储,正数的原码即为其补码,因此计算机中数值都是以补码的形式进行存储。

浮点型数据

float中1位为符号位,8位作为阶位 ( 0 , 255 ) (0,255) (0,255)假设为 x x x,23位为数值位 ( 0 , 2 23 − 1 ) (0, {2^{23} -1}) (0,223−1)假设为 y y y,则其表示的数值为 ( 2 x − 127 ) ∗ y (2^{x-127})*y (2x−127)∗y,这样并不能表示所有的小数,因此会存在误差,对于比较大的数,只能组合出一个近似值。

double中1位作为符号位,11位作为阶位 ( 0 , 2047 ) (0,2047) (0,2047),52位作为数值位,其表达的数值为 ( 2 x − 1023 ) ∗ y (2^{x-1023})*y (2x−1023)∗y。

char类型数据

数据的大小根据编码类型决定。
可以将两个char类型数据加减乘除后赋值给int类型,但是不能赋值给char类型。

public static void main(String[] args) {
    char c1, c2;
    c1 = 'a';
    c2 = 'b';
    int i = c1 + c2; // i = 97 + 98 = 195 (a的ASCII码为97)
    char c = c1 + c2; //编译错误
}

布尔类型数据

对于boolean类型占用32bit的空间并不构成浪费,因为不管boolean类型多大,在实际存储中都会占用4kb的内存页的存储空间。在CPU缓存行中,boolean类型数据占用32bit空间,会使得缓存行中的数据密度降低,单个缓存行的读取需求减少,从而提高传输效率,传输到CPU内部之后,boolean类型会转变为int类型进行处理。这样以空间换取时间的操作在计算机中十分常见。

其他

  • 超范围运算编译不会报错,会按照错误溢出结果继续运算下去(溢出的结果保留低位)。
  • Java中变量声明之后不具有初始值,需要初始化(首次赋值)后才能使用,这一点与C语言不同。

数据类型的转换

自动转换

  • 当小数据转换成大数据时,系统会自动转换。

强制转换

  • 大数据转小数据的时候,就是强制转换。转换后可以会导致溢出或者精度下降。
  • long类型转换float类型会丢失精度。
  • int类型转float类型会丢失精度,转double类型不会。

标签:存储,Java,数据类型,char,127,类型,转换,数据
From: https://blog.csdn.net/dawn191228/article/details/141032343

相关文章

  • 面向忙碌的-Java-开发者的-Python-教程-全-
    面向忙碌的Java开发者的Python教程(全)原文:PythonfortheBusyJavaDeveloper协议:CCBY-NC-SA4.0一、语言让我们从了解Python与Java的不同之处开始我们的Python之旅。在下一章深入研究Python的语法之前,我将帮助你设置Python。Python是什么?Python是一种“......
  • 分布式存储和集中式存储的区别是什么?应用场景是什么?
    原文链接:https://www.jb51.net/blockchain/944935.html在数字领域中,会有分布式存储和集中式存储这两概念,分布式存储是指数据分布在多个存储节点上,这些节点可以位于不同的地理位置。集中式存储是指所有数据都存储在一个单一的中央服务器或数据中心中。关于这两种存储方式,很多新手......
  • java中子类如何通过super调用父类的构造方法
    在Java中,子类可以通过使用super关键字来调用父类的构造方法。这通常在子类的构造方法中进行,以便在创建子类对象时初始化父类的成员。你有一个父类Animal,并且它有一个构造方法:classAnimal{Stringname;//父类的构造方法Animal(Stringname){......
  • 十大java开发框架总结,微服务开发必备!
     提起java开发框架,大部分工程师可能主要使用的是ssh三件套,在当前微服务作为开发主流的时代,我们有必要也了解下其他java开发框架。1.SpringBoot SpringBoot是当前Java开发框架的首选,几乎是行业标准了。由轻量级Java开发框架spring进化而来。一直被模仿,从未被超越。2. Quar......
  • java创建线程的几种方式,以及它们之间的区别(面试常用)
    线程创建的几种方法继承Thread类。如果继承了Thread类,直接new一个对象就可以创建一个线程实现Runnable接口。如果实现了Runnable接口,则还需要用Thread的构造方法,才能创建一个线程//使用Thread类创建线程并启动线程publicclassThreadTestextendsThread{@Overrid......
  • JAVA报错:Caused by: java.lang.NoSuchFieldError: REFLECTION
     Causedby:java.lang.NoSuchFieldError:REFLECTIONatcom.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.<init>(RuntimeModelBuilder.java:93)atcom.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:473)atcom......
  • edge浏览器加载java插件的方法
    在MicrosoftEdge浏览器中直接加载Java插件并不是一个直接支持的功能,因为Edge是基于Chromium内核的浏览器,主要支持Web技术如HTML、CSS和JavaScript。Java插件(通常指的是Java小程序,使用Java编程语言编写的应用程序)主要用于在早期的InternetExplorer浏览器中运行,但在现代浏览器中已......
  • 从Java类加载器源码浅析到线上热部署实现
    1Java代码的执行过程写了这么多代码,有没有想过我们的代码是怎么执行的?或者说定义了那么多类,我们的class是怎么加载到内存的?Java语言属于一种高级语言,而cpu能执行的只有机器码,所以Java代码的运行离不开jvm虚拟机的编译,下面用一张图说明在HotSpot虚拟机中Java代码加载到cpu执行的......
  • Java小白入门到实战应用教程-Scanner类及IO流讲解
    Java小白入门到实战应用教程-Scanner类及IO流讲解Scanner类我们前面写的很多例子都是程序独自执行的,但是我们做编程写代码的目的是要实现能人和代码去交互的。现在我们就来了解一个知识点,去实现最简单的人和程序的交互。在java中通过Scanner类来获取用户在控制台的输入......
  • 一文带您了解如何降低对象存储成本
    本文分享自天翼云开发者社区《一文带您了解如何降低对象存储成本》,作者:刘****筠首先,需要了解天翼云对象存储(原生版)I型ZOS的三种存储类型,分别供标准、低频、归档存储,全面覆盖从热到冷的各种数据存储场景,您可根据使用场景和性能要求选择合适的存储类型。标准存储提供高可靠、高可......