【JavaSE专栏5】Java 基本数据类型和取值范围

news2024/9/20 20:29:21

作者主页:Designer 小郑
作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue、SpringBoot和微信小程序)、系统定制、远程技术指导。CSDN学院、蓝桥云课认证讲师,全栈领域优质创作者。热爱技术、专注业务、开放合作、乐于分享,期待你我共同成长!
主打方向:Vue、SpringBoot、微信小程序

目录

    • 一、Java 的数据类型
      • 1.1 存储单位
      • 1.2 Java 基本数据类型
    • 二、Java 的取值范围
      • 2.1 变量定义
      • 2.2 取值范围验证
    • 三、课时小结

在这里插入图片描述


一、Java 的数据类型

在计算机科学和计算机编程中,数据类型或简单的类型是数据的一个属性,它告诉编译器或解释器程序员打算如何使用数据。大多数编程语言支持整数(大小不同)、浮点数(近似实数)、字符和布尔值的基本数据类型。数据类型约束表达式的值,例如变量或函数,可能需要。此数据类型定义了可以对数据执行的操作、数据的含义以及存储该类型值的方式。数据类型提供一组值,表达式(即变量、函数等)可以从中获取其值。

数据类型在类型系统中使用,类型系统提供了定义、实现和使用它们的各种方法。不同的类型系统确保不同程度的类型安全。

几乎所有的编程语言都明确包含数据类型的概念,尽管不同的语言可能使用不同的术语。


1.1 存储单位

在学习数据类型之前,首先需要学习什么是存储单位。

在计算机中,每一块内存都被划分为一个个最小存储单元。

比特(位)是计算机中最基本的单位,位是最基本的概念,在计算机中,由于只有逻辑0和逻辑1的存在,即每一个逻辑0或者1便是一个位.

每个最小存储单元只能存储 0 或者 1,称作 bit (比特),八个比特等于一个字节,单位换算如下所示。

  • 8 bit = 1 Byte 一字节
  • 1024 B = 1 KB (KiloByte) 千字节
  • 1024 KB = 1 MB (MegaByte) 兆字节
  • 1024 MB = 1 GB (GigaByte) 吉字节
  • 1024 GB = 1 TB (TeraByte) 太字节
  • 1024 TB = 1 PB (PetaByte) 拍字节
  • 1024 PB = 1 EB (ExaByte) 艾字节
  • 1024 EB = 1 ZB (ZetaByte) 泽字节
  • 1024 ZB = 1 YB (YottaByte) 尧字节
  • 1024 YB = 1BB(Brontobyte)珀字节
  • 1024 BB = 1 NB (NonaByte) 诺字节
  • 1024 NB = 1 DB (DoggaByte)刀字节

聪明的小伙伴看了上面的公式,就会理解为什么 100 M 的宽带,实际下载速度只有12.5 MB/S 了。

字节是计算机信息技术用于计量存储容量的一种计量单位,字节表示计算机编程语言中的数据类型和语言字符,在计算机中八位作为一个字节,字节是构成信息的一个小单位,并作为一个整体来参加操作。在微型计算机中,用字节来表示存储器的存储容量。


1.2 Java 基本数据类型

Java 中有着 3 大类基本数据类型,分别是数值型、字符型和布尔型。

其中数值型分为整数的 byteshortintlong,和浮点数 floatdouble,共计 8 种,如下图所示。

在这里插入图片描述

提示:Java 中除了基本数据类型外,还有引用数据类型,包括类、接口、数组,将在后面的课时中讲解。


二、Java 的取值范围

在学习 Java 各数据类型的取值范围前,首先要学习基本变量的定义方法。

2.1 变量定义

首先参考《JavaSE专栏3】JDK安装、IntelliJ IDEA安装、配置环境变量》 完成基本项目的创建,后面课时不在提示本段。

整型 Int

首先定义一个整型 int,并且赋值为 1,代码如下所示。

public class Main {
    public static void main(String[] args) {

        int a = 1;
        System.out.println(a);
    }
}

整型 short

定义一个整型 short,并且赋值为 2,代码如下所示。

public class Main {
    public static void main(String[] args) {

        short a = 2;
        System.out.println(a);
    }
}

整型 byte

定义一个整型 byte,并且赋值为 3,代码如下所示。

public class Main {
    public static void main(String[] args) {

        byte a = 3;
        System.out.println(a);
    }
}

整型 long

定义一个整型 long,并且赋值为 4,请注意需要加上后缀 L,否则默认为 int,代码如下所示。

public class Main {
    public static void main(String[] args) {

        long a = 4L;
        System.out.println(a);
    }
}

浮点型 float

定义一个浮点型 float,并且赋值为 5.0,请注意需要加上后缀 f,否则默认为 double,代码如下所示。

public class Main {
    public static void main(String[] args) {

        float a = 5.0f;
        System.out.println(a);
    }
}

浮点型 double

定义一个浮点型 double,并且赋值为 6.0,代码如下所示。

public class Main {
    public static void main(String[] args) {

        double a = 6.0;
        System.out.println(a);
    }
}

字符型 char

定义一个字符型 char,并且赋值为 ‘a’,代码如下所示。

public class Main {
    public static void main(String[] args) {

        char a = 'a';
        System.out.println(a);
    }
}

布尔型 boolean

定义一个布尔型 boolean,并且赋值为 true,代码如下所示。

public class Main {
    public static void main(String[] args) {

        boolean a = true;
        System.out.println(a);
    }
}

Java 中还存在包装类的定义方式,效果基本等同,如 int a = 1 也可以定义为 Integer a = 1。
包装类有着不同的存储位置、初始值和使用方式。
包装类的概念、使用方法和自动装箱拆箱在后续课时中会讲到。

在这里插入图片描述


2.2 取值范围验证

在验证之前首先展示结果,如下图所示。

在这里插入图片描述

取值范围验证代码如下:

public class Main {
    public static void main(String[] args) {

        System.out.println("Byte 最大值 = " + Byte.MAX_VALUE);
        System.out.println("Byte 最大值 = " + Byte.MIN_VALUE);

        System.out.println("Short 最大值 = " + Short.MAX_VALUE);
        System.out.println("Short 最大值 = " + Short.MIN_VALUE);

        System.out.println("Int 最大值 = " + Integer.MAX_VALUE);
        System.out.println("Int 最大值 = " + Integer.MIN_VALUE);

        System.out.println("Long 最大值 = " + Long.MAX_VALUE);
        System.out.println("Long 最大值 = " + Long.MIN_VALUE);

        System.out.println("Float 最大值 = " + Float.MAX_VALUE);
        System.out.println("Float 最大值 = " + Float.MIN_VALUE);

        System.out.println("Double 最大值 = " + Double.MAX_VALUE);
        System.out.println("Double 最大值 = " + Double.MIN_VALUE);

        System.out.println("Char 最大值 = " + Character.MAX_VALUE);
        System.out.println("Char 最大值 = " + Character.MIN_VALUE);

        System.out.println("boolean 真 = " + Boolean.TRUE);
        System.out.println("boolean 假 = " + Boolean.FALSE);
    }
}

输出结果

Byte 最大值 = 127
Byte 最大值 = -128
Short 最大值 = 32767
Short 最大值 = -32768
Int 最大值 = 2147483647
Int 最大值 = -2147483648
Long 最大值 = 9223372036854775807
Long 最大值 = -9223372036854775808
Float 最大值 = 3.4028235E38
Float 最大值 = 1.4E-45
Double 最大值 = 1.7976931348623157E308
Double 最大值 = 4.9E-324
Char 最大值 = 
Char 最大值 =  
boolean 真 = true
boolean 假 = false

进程已结束,退出代码0

除此之外还可以在 IntelliJ IDEA 按住 Ctrl + 鼠标左键,查看类的源码。

在这里插入图片描述

如果定义了超出取值范围的变量,IntelliJ IDEA 会给与编译提示,也无法通过编译,如下图所示。

在这里插入图片描述


三、课时小结

在本节课时中,首先学习了数据类型、存储单位的基本概念,从而引申出 Java 的八大基本数据类型,讲解这八种数据类型的定义方式和取值范围。在下节课时中将讲解 Java 的基本类型转换,和自动拆箱的知识。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/177795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mine Goose Duck 0.2版本发布

本次我增加了模组的1.16.5和1.18.2的适用版本,新增了一些职业和装扮 1.新职业 1.冒险家 你不会死于摔伤、溺水、火烧、冰冻。 2.工程师 你可以修改888范围内红石设备的状态。 3.模仿者 怪物认为你是他们的一员。 4.加拿大鹅 你会自动报警并召唤警车。 5.…

深度卷积对抗神经网络 基础 第三部分 (WGAN-GP)

深度卷积对抗神经网络 基础 第三部分 (WGAN-GP) Wasserstein GAN with Gradient Penalty (WGAN-GP) 我们在训练对抗神经网络的时候总是出现各种各样的问题。比如说模式奔溃 (mode collapse)和 梯度消失(vanishing gradient)的问题。 比如说…

在linux下安装docker

文章目录 目录 文章目录 前言 一、docker 二、使用步骤 1.环境准备 2.安装 三、配置阿里云镜像加速 四、卸载 总结 前言 一、docker 镜像(image): docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomc…

【攻坚克难】详解k8s持久化存储数据pv、pvc存储问题

问题 如图:pod中的容器,创建一个包含文件的目录,重启pod或系统重启后,此目录及其文件都会丢失,如何保证其不会丢失? 图 1 创建包含文件的目录 方法 分析:用pv、pvc为k8s持久化存储数据是最好的选择,可解决上述问题。流程:pv → pvc → pod把创建的目录挂载到pvc上步…

路由 OSPF 优化(FA地址、路由汇总、路由过滤、区域认证、接口认证)

1.2.0 路由 OSPF 优化(FA地址、路由汇总、路由过滤、区域认证、接口认证) 一、FA地址 该文章介绍的FA地址说辞简单易懂:路由协议系列之六:OSPF FA地址 产生条件 ASBR在其连接外部网络的接口(外部路由的出接口&#xf…

CS61A 2022 fall HW 01: Functions, Control

CS61A 2022 fall HW 01: Functions, Control 文章目录CS61A 2022 fall HW 01: Functions, ControlQ1: A Plus Abs BQ2: Two of ThreeQ3: Largest FactorQ4: HailstoneHW01对应的是Textbook的1.1和1.2 Q1: A Plus Abs B 题目: Fill in the blanks in the following f…

Java | 解决并发修改异常问题【CurrentModificationException】

今日碰到Java中的一个异常,名为CurrentModificationException,从属于RunTimeException运行时异常,故作此记录 异常解析 首先来说明一下什么是【并发修改异常】❓ 因为迭代器依赖集合而存在,因为当你在操作集合中元素的时候&#…

springboot中restful风格请求的使用

springboot中restful风格请求的使用restful风格springboot中的使用1.创建html表单页面2.在yml配置文件中开启rest表单支持3.编写controller层及对应映射处理4.启动服务,逐个访问restful风格 Rest风格支持(使用HTTP请求方式动词来表示对资源的操作&#…

【手写 Vue2.x 源码】第四十二篇 - 组件部分 - 组件挂载流程简述

一,前言 上篇,组件部分-生成组件的真实节点; 本篇,组件部分-组件挂载流程分析; 二,组件挂载流程分析 1,示例 全局组件:my-button,name:‘全局组件’&…

什么是软件架构中的ASRs(架构需求文档)?

作者:非妃是公主 专栏:《软件工程》 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 专栏地址 软件工程专栏地址 专栏系列文章 软件工程复习01:软件工程概述 软件工程复习02&#xf…

十大经典排序算法(动态演示+代码)-快速排序与希尔排序

快速排序 1.什么是快速排序 我们知道排序有很多种,常见的如希尔排序,插入排序,选择排序,堆排序等等,而快速排序也是排序家族中的一员。因为其在大多数情况下有着优秀的综合性能,快速排序的快速也算是实至…

结构型模式-享元模式

1.概述 运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。 2.结构 享元(Flyweight )模式中存在以下两种状态: 内…

信息论复习—信源编码的基本方法

目录 信源编码的目的:提高传输效率 离散信源: 离散信源的分类: 离散无记忆信源 (DMS: Discrete Memoryless Source): 离散无记忆信源的特点: 离散无记忆信源编码与译码: 等长编码的编码速…

Day869.索引(下) -MySQL实战

索引(下) Hi,我是阿昌,今天学习记录的是关于索引(下)的内容。 先来看一下这个问题: 下面这个表 T 中,如果执行 select * from T where k between 3 and 5,需要执行几次…

【Java|golang】1828. 统计一个圆中点的数目

给你一个数组 points ,其中 points[i] [xi, yi] ,表示第 i 个点在二维平面上的坐标。多个点可能会有 相同 的坐标。 同时给你一个数组 queries ,其中 queries[j] [xj, yj, rj] ,表示一个圆心在 (xj, yj) 且半径为 rj 的圆。 对…

git 操作整理

git操作整理 git 配置 git config --global user.name “yuluo” git config --global user.email “1481556636qq.com” git config --global color.ui auto 启用命令行着色输出 git 操作 暂存区 git init . 初始化git仓库 git status 看仓库状态 git add index.html…

【C++】C++11简介 | 列表初始化 | 声明 | 范围for

​🌠 作者:阿亮joy. 🎆专栏:《吃透西嘎嘎》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉C11简介&…

安装配置Ecplise插件PyDev 8.3.0

参考:安装Eclipse:https://baijiahao.baidu.com/s?id1751992697661111503&wfrspider&forpcEclipse安装PyDev:https://baijiahao.baidu.com/s?id1746725485069671146&wfrspider&forpc方法一:失败打开eclipse&…

分享138个ASP源码,总有一款适合您

ASP源码 分享138个ASP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 138个ASP源码下载链接:https://pan.baidu.com/s/1idRmCxILGVt5pBkac-GiiA?pwdjmmu 提取码&#x…

AX7A200教程(4): DDR3的读写fifo仿真

在上篇博客中,我们只是进行突发读写,没有使用读写fifo对ddr3进行读写,因ddr3读写接口都是256位宽,所以ddr3的读写fifo输入和输出都是32位,和ddr3对接的接口都是256位,如下面示意图所示。下面的截图为ddr3的…