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

Java 那些诗一般的 数据类型 (下篇)

本篇会加入个人的所谓鱼式疯言

❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言
而是理解过并总结出来通俗易懂的大白话,
小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.
🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 !!!

在这里插入图片描述

前言

在上一篇 Java 那些诗一般的数据结构(上篇)中我们主要讲解了

Java数据类型详解上篇链接

  • 字面常量:介绍了说明是常量,以及字面常量的概念和种类

  • 数据类型 : 说明了数据类型的概念和并举例种类

  • 变量: 分批次的介绍了变量的不同类型并进行初步的理解

而在本篇文章中主要内容还是围绕着数据类型之间的转化再讲解呢

目录

  1. 类型转化

  2. 类型提升

  3. 字符串类型

一. 类型转换

1. 类型转换的简介

Java 作为一个 强类型 编程语言, 当不同类型之间的变量相互 赋值 的时候, 会有教严格的 校验

 class Test10 {public static void main(String[] args) {int a = 10;long b = 100L;b = a; // 可以通过编译a = b; // 编译失败}
}

在这里插入图片描述

在Java中,当参与 运算数据类型不一致 时,就会进行 类型转换 。Java中类型转换主要分为 两类自动类型转换(隐式)强制类型转换(显式)

2.隐式(自动)类型转化

自动类型转换 即:代码 不需要经过任何处理 ,在代码编译时,编译器会 自动进行处理

特点:数据 范围小 的转为数据 范围大 的时会自动进行。

 class Test10 {public static void main(String[] args) {System.out.println(1024); // 整型默认情况下是intSystem.out.println(3.14); // 浮点型默认情况下是doubleint a = 100;long b = 10L;b = a; // a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值
//         a = b; // 编译报错,long的范围比int范围大,会有数据丢失,不安全float f = 3.14F;double d = 5.12;d = f; // 编译器会将f转换为double,然后进行赋值
//         f = d; // double表示数据范围大,直接将float交给double会有数据丢失,不安全byte b1 = 100; // 编译通过,100没有超过byte的范围,编译器隐式将100转换为byte
//         byte b2 = 257; // 编译失败,257超过了byte的数据范围,有数据丢失}
}

在这里插入图片描述

int 类型 是可以转化为 long 类型

long 类型是不允许转化为 int 类型的

鱼式疯言

一句话总结

能转 的不能转

3.显式 (强制) 类型转换

class Test10 {public static void main(String[] args) {int a = 10;long b = 100L;b = a; // int-->long,数据范围由小到大,隐式转换System.out.println("b="+b);a = (int)b; // long-->int, 数据范围由大到小,需要强转,否则编译失败System.out.println("a="+a);float f = 3.14F;double d = 5.12;d = f; // float-->double,数据范围由小到大,隐式转换System.out.println("d="+d);f = (float)d; // double-->float, 数据范围由大到小,需要强转,否则编译失败System.out.println("f="+f);//         a =  d; // 报错,类型不兼容a = (int)d; // int没有double表示的数据范围大,需要强转,小数点之后全部丢弃System.out.println("a="+a);byte b1 = 100; // 100默认为int,没有超过byte范围,隐式转换System.out.println("b1="+b1);byte b2 = (byte)257; // 257默认为int,超过byte范围,需要显示转换,否则报错System.out.println("b2"+b2);boolean flag = true;
//         a = flag; // 编译失败:类型不兼容
//         flag = a; // 编译失败:类型不兼容}
}

在这里插入图片描述
是的,当我们需要把 大的类型 转化为 小的类型 时,就需要 赋值

我们就牵扯到了 强制类型转化

鱼式疯言

  1. 不同数字类型的变量之间 赋值 , 表示 范围更小的类型能隐式转换成 范围较大 的类型
  1. 如果需要把 范围大 的类型赋值给 范围小 的, 需要强制类型转换, 但是 可能精度丢失
  1. 将一个 字面值常量 进行赋值的时候, Java 会自动针对数字范围进行 检查
  1. 强制类型转换不一定能成功,不相干的类型 不能 互相转换

最后小编还想说

小的数据类型 是可以自动放在的数据类型的,但当我们强制 大的数据类型 时,是很有可能造成 一部分数据存储不下 ,造成 数据的丢失

二. 类型提升

不同类型的数据之间相互 运算 时,数据 类型小 的会被提升到数据 类型大 的。

1. intlong 之间

int 会被提升为 long

 class  Test5 {public static void main(String[] args) {int a = 10;long b = 20;
//        int c = a + b; // 编译出错: a + b==》int + long--> long + long 赋值给int时会丢失数据long d = a + b; // 编译成功:a + b==>int + long--->long + long 赋值给longSystem.out.println(d);}
}

在这里插入图片描述

2. byte与byte的运算

class  Test5 {public static void main(String[] args) {byte a = 10;byte b = 20;byte c = a  + b;System.out.println(c);}
}

在这里插入图片描述

结论: bytebyte 都是 相同类型 , 但是出现 编译报错 . 原因是,

虽然 ab 都是 byte , 但是计算 a + b 会先将 a 和 b 都提升成 int, 再进行计算, 得到的结果也是 int 这是赋给 c, 就会出现上述错误.

由于计算机的 CPU 通常是按照 4 个字节为单位从内存中 读写数据 . 为了硬件上实现方便,

诸如 byteshort 这种低于 4个字节的类型, 会先提升成 int , 再参与计算. 💥 💥 💥

鱼式疯言

  1. 不同类型 的数据混合运算, 范围小 的会提升成 范围大
  2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算.

三. 字符串类型

小伙伴们应该熟悉

在我们的C语言 中,是不存在 字符串 类型这个概念的

但在我们的 Java 中是存在 字符串 类型的变量的

1. 字符串类型的简介

Java 中使用 String类 定义 字符串 类型,比如:


class  Test5 {public static void main(String[] args) {String s1 = "hello";String s2 = " world";System.out.println(s1);System.out.println(s2);System.out.println(s1 + s2); // s1+s2表示:将s1和s2进行拼接}}

在这里插入图片描述

对于 Java 自身来说,是有字符串类型的,

并且 字符串 是可以进行用 加号 拼接

2. int 转 String

class  Test5 {public static void main(String[] args) {int num = 10;System.out.println("未转化之前 num+1="+(num+1));// 方法1String str1 = num + "";// 方法2String str2 = String.valueOf(num);System.out.println("转化之后 num+1="+(str2+1));System.out.println("转化之后 num+1="+(str1+1));}
}

在这里插入图片描述

是的,我们可以通过 两种方法 转为 字符串

鱼式疯言

  1. 直接带 双引号向上转化 为字符串
 String str1 = num + "";
  1. 使用 String.valueOf() 方法讲任意类型转化为 字符串
 String str2 = String.valueOf(num);

3. String 转化为 int

class  Test5 {public static void main(String[] args) {String str = "100";System.out.println("转化前 str+1:"+(str+1));int num = Integer.parseInt(str);System.out.println("转化后 num+1:"+(num+1));}
}

在这里插入图片描述

对于 字符串 转数字,我们只需要用 Integer.parseInt(str)

本节对只是对 字符串 进行简单的介绍,大家能够正常使用即可

后序会详细给小伙伴们介绍哦 💥 💥 💥

总结

  1. 类型转化: 我们认识了赋值时的类型转化并熟悉了两种不同的类型的转化方式

  2. 类型提升: 在运算时,注意也会发生的类型提升的理解

  3. 字符串类型: 理解的一种新的类型并明白字符串和其他类型的转化方式

可谓收获颇丰啊 💖 💖 💖 💖

如果觉得小编写的还不错的咱可支持 三连 下 ==(定有回访哦) == , 不妥当的咱请评论区 指正

希望我的文章能给各位宝子们带来哪怕一点点的收获就是 小编 创作 的最大 动力 💖 💖 💖

在这里插入图片描述

相关文章:

Java 那些诗一般的 数据类型 (下篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接…...

WEB3.0:互联网的下一阶段

随着互联网的发展,WEB3.0时代正在逐步到来。本文将深入探讨WEB3.0的定义、特点、技术应用以及未来展望,为读者带来全新的思考。 一、什么是WEB3.0? WEB3.0可以被理解为互联网发展的下一阶段,是当前WEB2.0的升级版。相较于2.0时代…...

Fastgpt配合chatglm+m3e或ollama+m3e搭建个人知识库

概述: 人工智能大语言模型是近年来人工智能领域的一项重要技术,它的出现标志着自然语言处理领域的重大突破。这些模型利用深度学习和大规模数据训练,能够理解和生成人类语言,为各种应用场景提供了强大的文本处理能力。AI大语言模…...

如何使用选择器精确地控制网页中每一个元素的样式?

1. 基础知识 什么是 CSS 元素选择器 CSS 元素选择器是一种在网页中通过元素类型来应用样式的方法。 简单来说,它就像是一个指挥棒,告诉浏览器哪些 HTML 元素需要应用我们定义的 CSS 样式规则。 为何要使用 CSS 元素选择器 使用元素选择器可以让我们…...

各个微前端框架的优劣浅谈

各个微前端框架都有其独特的优势和劣势,下面我将针对几个主流的微前端框架进行简要的优劣分析: single-spa 优势: 轻量级:single-spa是一个非常轻量级的微前端框架,它主要提供了一个加载和管理微应用的机制&#xff0c…...

自动化运维(二十二)Ansible实战 之Jenkins模块

Ansible提供了一些模块,可以用来与Jenkins进行交互,执行各种操作,如创建任务、触发构建、获取构建结果等。通过使用这些模块,我们可以将Jenkins的配置和管理集成到Ansible的自动化流程中。 以下是一些常用的Ansible Jenkins模块: 1、jenkins_job模块 jenkins_job模块用于创建…...

Python数据分析与应用 |第4章 使用pandas进行数据预处理 (实训)

表1-1healthcare-dataset-stroke.xlsx 部分中风患者的基础信息和体检数据 编号性别高血压是否结婚工作类型居住类型体重指数吸烟史中风9046男否是私人城市36.6以前吸烟是51676女否是私营企业农村N/A从不吸烟是31112男否是私人农村32.5从不吸烟...

基于双向长短期神经网络BILSTM的线损率预测,基于gru的线损率预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 BILSTM神经网络 基于双向长短期神经网络BILSTM的线损率预测,基于gru的线损率预测 完整代码:基于双向长短期神经网络BILSTM的线损率预测,基于gru的线损率预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/d…...

智能售货机:引领便捷生活

智能售货机:引领便捷生活 在这个科技迅速进步的时代,便捷已成为生活的必需。智能售货机作为技术与便利完美结合的产物,正逐渐改变我们的购物方式,为都市生活增添新的活力。 智能售货机的主要优势是它的极致便利性。不论是在地铁…...

正向代理和反向代理

正向代理和反向代理是网络中常见的两种代理方式,它们在网络通信中扮演着不同的角色。 正向代理: 正向代理是代理服务器位于客户端和目标服务器之间的一种代理方式。 客户端向代理服务器发送请求,然后代理服务器将请求转发给目标服务器&…...

kimichat使用技巧:用语音对话聊天

kimichat之前是只能用文字聊天的,不过最近推出了语音新功能,也可以用语音畅快的对话聊天了。 这个功能目前支持手机app版本,所以首先要在手机上下载安装kimi智能助手。已经安装的,要点击检查更新,更新到最新的版本。 …...

机器学习-09-图像处理02-PIL+numpy+OpenCV实践

总结 本系列是机器学习课程的系列课程,主要介绍机器学习中图像处理技术。 参考 【人工智能】PythonOpenCV图像处理(一篇全) 一文讲解方向梯度直方图(hog) 【杂谈】计算机视觉在人脸图像领域的十几个大的应用方向&…...

应急响应-战前反制主机HIDSElkeid蜜罐系统HFish

知识点 战前-反制-平台部署其他更多项目: https://github.com/birdhan/SecurityProduct HIDS:主机入侵检测系统,通常会有一个服务器承担服务端角色,其他主机就是客户端角色,客户端加入到服务端的检测范围里&#xff…...

C#:24小时制和12小时制之间的转换

任务描述 本关任务:编写一个程序,利用求余运算完成24小时制和12小时制之间的转换。 注意:要求输入的数字是0到24之间的整数。 测试说明 平台会对你编写的代码进行测试: 测试输入:4 预期输出: 现在是上午4…...

说说TCP为什么需要三次握手和四次挥手?

文章目录 一、三次握手为什么不是两次握手? 二、四次挥手四次挥手原因 三、总结参考文献 一、三次握手 三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包 主要作用就是为了确认双方的接收能力和…...

STM32 串口接收定长,不定长数据

本文为大家介绍如何使用 串口 接收定长 和 不定长 的数据。 文章目录 前言一、串口接收定长数据1. 函数介绍2.代码实现 二、串口接收不定长数据1.函数介绍2. 代码实现 三,两者回调函数的区别比较四,空闲中断的介绍总结 前言 一、串口接收定长数据 1. 函…...

C++设计模式|0.前言

1.什么是设计模式? 简答来说,设计模式就是一套好用的代码经验总结,也就是怎么写好代码的方法论。使用设计模式是为了可重用代码、让代码更容易被他人理解、提高代码的可靠性。 2.设计模式的分类 设计模式可以分为三类:创建型、…...

[蓝桥杯] 岛屿个数(C语言)

提示: 橙色字体为需要注意部分,红色字体为难点部分,会在文章“重难点解答”部分精讲。 题目链接 蓝桥杯2023年第十四届省赛真题-岛屿个数 - C语言网 题目理解 这道题让我们求岛屿个数,那么我们就应该先弄懂,对于一…...

Apache Storm的详细配置

Apache Storm的详细配置主要涉及以下几个方面: Zookeeper配置:Apache Storm使用Zookeeper来进行协调和配置管理。你需要配置Zookeeper集群的连接信息,包括Zookeeper服务器的主机和端口。 Storm Nimbus配置:Nimbus是Storm的主节点,负责分配任务给各个工作节点。你需要配置N…...

kylin v10 php源码安装后配置nginx

银河麒麟V10 源码编译安装php7.4 下载地址 https://www.php.net/distributions/php-7.4.33.tar.xz 安装依赖包,准备编译 dnf install libxml2-devel sqlite-devel bzip2-devel libcurl-devel libjpeg-turbo-devel freetype-devel openldap-devel libtool-devel p…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

Kafka主题运维全指南:从基础配置到故障处理

#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...

​​企业大模型服务合规指南:深度解析备案与登记制度​​

伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...