7、Java基本数据类型的使用细节探讨(超详细版本)
Java基本数据类型的使用细节探讨
- 一、整数类型
- 二、浮点数
- 三、字符型
- 四、布尔型
我觉得基本数据类型大家学计算机的应该都懂,但是韩顺平老师讲的基本类型的使用细节我觉得有必要记录一下,重新学的时候才发现有了新的感悟!
一、整数类型
使用细节:
1、Java各整型类型有固定的范围和字段长度,不受具体OS[操作系统]的影响,以保证Java程序的可移植性。(简单理解就是必须要标准一样,如果不一样的话,不同操作系统下就会产生不一样的结果)<——个人语言🤣不严谨哈
2、Java的整型变量(具体值)默认为int型,声明long型常量须在后面加 ’ l ’ 或 ’ L '。
(这里要注意,不要写成 int a = 5L,我们知道 int 是4字节的,而 long 是8字节的,相当于把8字节的数据硬是放进4字节的空间,肯定放不了滴!相反,把 int 型放进 long 型是放的了的,这是忘记加后缀的情况。)
3、Java程序中变量常声明为 int 型,除非不足以表达大数,才用 long 。(其实就是避免空间浪费啦)
4、bit:计算机中的最小存储单元。
byte:计算机中基本存储单元,1byte = 8bit。(比较基础的计组知识,一定要记住。)
二、浮点数
使用细节:
1、面试可能会问:浮点数 = 符号位 + 指数位 + 尾数位
(想了解更清楚的可以看一下这个文章:一文彻底掌握浮点数)
2、与整数类型类似,Java浮点类型也有固定的范围和字段长度,不受具体OS的影响。[float 4个字节,double 8个字节]
3、Java的浮点型常量(具体值)默认为double型,声明为float型常量,须后加’ f ‘或’ F '。
float num1 = 1.1F; //正确
double num2 = 1.1; //正确
double num3 = 1.1f; //正确!小精度可以放进大精度的类型里面
最后一条代码可以这样理解:一个1米的小孩在2米的床上睡觉,但是不能在5厘米的床上睡觉(那应该是豌豆公主吧🥰)
补充:记得要加’ f ‘和’ F ',不然报错。
4、浮点型常量有两种表达方式:
①十进制数形式:5.12 512.0f .512(前面的0可以省略,但必须有小数点)
②科学计数法形式: 5.12e2【5.12 * 102 】 5.12e-2【5.12 / 102】,里面的e也可以换成E
4、通常情况下,应该用double型,因为它比float型更精确。
通过上面的结果可以看到,float后面有部分丢失了,所以尽量使用double型。
5、浮点数使用陷阱:2.7 和 8.1 / 3 的比较
先来段代码:
/*** @author 颜安青*/
public class Hello{public static void main(String[] args){double num1 = 2.7;double num2 = 8.1 / 3;System.out.println("num1: "+num1);System.out.println("num2: "+num2);if(num1 == num2)System.out.println("num1 == num2");elseSystem.out.println("num1 != num2");}
}
看到这里你是不是觉得 num1 == num2 呢?NoNoNo,错啦,看一下输出结果吧。
按照我们的数学思维,8.1 / 3 应该是等于2.7的,但是从计算机的角度上看,计算机中对浮点数的表示并非百分百精确的,在表示和计算过程中都有可能丢失精度。并且,8.1这个数本身在计算机中用double类型存储,可能存储成8.100000001,这都是可能的,所以浮点数的运算结果比较是不等的。(个人理解哈,如果想了解的更详细记得去看一文彻底掌握浮点数))
那么怎么判断两个浮点数相等呢?其实我们应该判断的是:两个数之间的差值的绝对值在我们规定的某个精度范围内,只要在范围内就可以近似相等。
if(Math.abs(num1-num2) < 0.000001){ //0.000001是可以自己规定的System.out.println("差值非常小,到规定的精度范围内,认为近似相等!");
}
结果:
三、字符型
Java中字符类型是char,占两个字节(可以存放汉字),多个字符用字符串String。
(区分一下:C语言中没有Boolean和String型,并且char类型是占一个字节的,当时我学习的时候也很震惊😄我通过一些资料的查询,就简单理解为:不同语言编译器用的编码集不一样,一些类型的所占字节也会随之变化,总结就是类型大小由编译器决定。 <–所以有可能C语言中char类型也会有两个字节,极少数情况。可以看一下别人的回答:char为什么占两个字节)
使用细节:
1、字符常量是用单引号(‘’)括起来的单个字符。
这些是基础,当各位都是会的,不讲很细。
2、Java中还允许使用转义字符’ \ '来将其后的字符转变为特殊字符型常量。
char c = '\n'; //换行
3、在Java中,char的本质是一个整数。我们要知道一个概念,Java中默认使用的编码是Unicode码,所以输出的是Unicode码对应的字符。
怎么理解呢?我们可以用计算机输入字母、数字、中文、符号等内容,而计算机是用二进制的方式去存储的,所以我们输入的字符每一个都对应着一个独一无二的二进制数,当输入的时候将字符存储为二进制数,当输出的时候将二进制数转换成字符。
‘a’ 对应的十进制是97,这也意味着,我们可以 char c = ‘a’,也可以char c = 97的形式去赋值,也可以进行运算。
想了解字符编码的可以看这几个链接:
⭐⭐超级推荐去看这个:程序员必备:彻底弄懂常见的7种中文字符编码
结合Java详谈字符编码和字符集
这里提示一点,我们的中文其实每一个汉字都有对应的编码,比如大家可以打开一个网站自己去查看汉字对应的编码:Unicode转换
白框框里面的是中文字符,而黑框框对应的就是Unicode码(来自程序员的浪漫啊❤)
敲重点:面试时问字符类型本质,那该怎么回答呢?
个人理解:字符都有相对应的编码值,字符型通过二进制的形式存储到计算机中,而输出时将二进制数转换成字符显示。
比如’ a ‘:
存储:’ a ’ --> 码值97 --> 二进制(1100001) --> 存储
读取:二进制(1100001) --> 97 --> ’ a ’ --> 显示
补充个小点:平时工作中用的最多的是utf-8编码集,它最灵活了
99%的前端写网页时都会加上,99%的后端工程师新建数据库时都会加上DEFAULT CHARSET = utf8
来个链接拓展:mysql编码问题——charset=utf8你真的弄明白了吗?
四、布尔型
boolean类型数据只允许取值true和false,无null,占一个字节,适用于逻辑运算。
使用细节:
不可以0或非0的整数替代true和false,这点和C语言不同。
本人正在B站跟着韩顺平老师学Java(非广告),所以做个笔记仅供学习,文章虽标为原创,但大体思路是韩顺平老师的授课思路,在此基础上加上了自己的理解,不喜勿喷哦。
大家一起学,一起进步!!
各位宝子们如果觉滴还不错的话,可以点个赞 or 收个藏 or 打个赏哦,佛系博主一个。
相关文章:

7、Java基本数据类型的使用细节探讨(超详细版本)
Java基本数据类型的使用细节探讨 一、整数类型二、浮点数三、字符型四、布尔型 我觉得基本数据类型大家学计算机的应该都懂,但是韩顺平老师讲的基本类型的使用细节我觉得有必要记录一下,重新学的时候才发现有了新的感悟! 一、整数类型 使用细…...

MFC实现点击列表头进行排序
MFC实现点击列表头排序 1、添加消息处理函数 在列表窗口右键,类向导。选择 IDC_LIST1(我的列表控件的ID),消息选择LVN_COLUMNCLICK。 2、消息映射如下 然后会在 cpp 文件中生成以下函数 void CFLashSearchDlg::OnLvnColumnclic…...

用龙梦迷你电脑福珑2.0做web服务器
用龙梦迷你电脑福珑2.0上做web服务器是可行的。已将一个网站源码放到该电脑,在局域网里可以访问网站网页。另外通过在同一局域网内的一台windows10电脑上安装花生壳软件,也可以在外网访问该内网服务器网站网页。该电脑的操作系统属于LAMP。在该电脑上安装…...
秋招后端开发面试题 - JVM类加载机制
目录 JVM类加载机制前言面试题能说一下类的生命周期吗?类加载的过程知道吗?类加载器有哪些?什么是双亲委派机制?为什么要用双亲委派机制?如何破坏双亲委派机制?如何判断一个类是无用的类? JVM类…...
OceanBase 分布式数据库【信创/国产化】- OceanBase 配置项和系统变量概述
本心、输入输出、结果 文章目录 OceanBase 分布式数据库【信创/国产化】- OceanBase 配置项和系统变量概述前言OceanBase 数据更新架构OceanBase 配置项和系统变量概述配置项配置项分类配置项查询系统变量系统变量分类系统变量查询配置项与系统变量的区分OceanBase 分布式数据库…...

单单单单单の刁队列
在数据结构的学习中,队列是一种常用的线性数据结构,它遵循先进先出(FIFO)的原则。而单调队列是队列的一种变体,它在特定条件下保证了队列中的元素具有某种单调性质,例如单调递增或单调递减。单调队列在处理…...

电脑windows系统压缩解压软件-Bandizip
一、软件功能 Bandizip是一款功能强大的压缩和解压缩软件,具有快速拖放、高速压缩、多核心支持以及广泛的文件格式支持等特点。 Bandizip软件的功能主要包括: 1. 支持多种文件格式 Bandizip可以处理多种压缩文件格式,包括ZIP, 7Z, RAR, A…...

图片公式识别@文档公式识别@表格识别@在线和离线OCR工具
文章目录 abstract普通文字识别本地软件识别公式扩展插件下载小结 在线识别网站/API👺Quicker整合(推荐)可视化编辑和识别公式其他多模态大模型识别图片中的公式排版 开源模型 abstract 本文介绍免费图片文本识别(OCR)工具,包括普通文字识别,公式识别,甚至是手写公…...

Java高阶私房菜:JVM分代收集算法介绍和各垃圾收集器原理分解
目录 什么是分代收集算法 GC的分类和专业术语 什么是垃圾收集器 垃圾收集器的分类及组合 编辑 应关注的核心指标 Serial和ParNew收集器原理 Serial收集器 ParNew收集器 Parallel和CMS收集器原理 Parallel 收集器 CMS收集器 新一代垃圾收集器G1和ZGC G1垃圾收集器…...
为什么IB损失要在100epochs后再用?
在给定的代码中,参数start_ib_epoch用于控制从第几轮开始使用IB(Instance-Balanced)损失函数进行训练。具体来说,如果start_ib_epoch的值大于等于100,那么在训练的前100轮中将使用普通的交叉熵损失函数(CE&…...

《Video Mamba Suite》论文笔记(4)Mamba在时空建模中的作用
原文翻译 4.4 Mamba for Spatial-Temporal Modeling Tasks and datasets.最后,我们评估了 Mamba 的时空建模能力。与之前的小节类似,我们在 Epic-Kitchens-100 数据集 [13] 上评估模型在zero-shot多实例检索中的性能。 Baseline and competitor.ViViT…...

【备战软考(嵌入式系统设计师)】10 - 软件工程基础
这一部分的内容是概念比较多,不要理解,去感受。 涉及的知识点是嵌入式系统开发和维护的部分,也就是和管理相关的,而不是具体如何进行嵌入式系统开发的细节。 系统开发生命周期 按照顺序有下面几个阶段,我们主要要记…...

随手笔记-GNN(朴素图神经网络)
自己看代码随手写的一点备忘录,自己看的,不喜勿喷 GNN (《------ 代码) 刚开始我还在怀疑为什么没有加weigth bias,已经为什么权重才两个,原来是对node_feats进行的network的传播,而且自己内部直接进行了。 下面是一…...

C 语言指针怎么理解?
在今天的学习中,我注意到有位学员似乎对 C 语言指针的理解有些困惑。为了帮助大家更好地理解,我来举个例子。 C 语言指针就好比 Windows 桌面上常见的快捷方式。快捷方式可以指向某个游戏,这就是普通指针;它也可以指向另一个快捷…...
HTTP协议:通信机制、特点及实践应用
目录 前言 1. 运行机制 2. 通信方式 3. 主要特点 4. 统一资源标识符(URL) 5. HTTP报文 6. HTTP请求 7. HTTP响应 8. 实体 9. 持续连接 结语 前言 HTTP(Hypertext Transfer Protocol)是互联网上应用最广泛的一种协议&a…...

Leetcode—289. 生命游戏【中等】
2024每日刷题(126) Leetcode—289. 生命游戏 算法思想 实现代码 class Solution { public:void gameOfLife(vector<vector<int>>& board) {int rows board.size();int cols board[0].size();int neighbors[3] {0, 1, -1};vector<…...

系统运维(虚拟化)
1.VLAN VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。 每个VLAN是一个广播域,VLAN内的主机间可以直接通信,而VLAN间则不能直接互通。这样,广播报…...

Linux域名解析
1.hosts:windows c盘下面 Linux: /etc/hosts 作用:实现名字解析,主要为本地主机名、集群节点提供快速解析。平面式结构,集中式数据库。 缺点:不便于查询更新 2.DNS:域名系统 作用:实现名字解析(分层性,层次性) FQDN:完全合格域名/全称域…...
树形结构和列表的区别
树形结构和列表在数据组织、表示方式以及应用场景等方面存在明显的区别。 首先,树形结构是一种非线性的数据结构,表现为层次的嵌套结构。每个节点可以有多个子节点,这些子节点又可以有自己的子节点,形成一个层次分明的结构。这种一…...
Go中json的解析和反解析
在解析过程中,反向解析不包含其中的部分参数也不会报错,这是需要注意的一点 31 func main() { // E: main redeclared in this block 32 type A…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...