Java 那些诗一般的 数据类型 (下篇)
本篇会加入个人的所谓鱼式疯言
❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言
而是理解过并总结出来通俗易懂的大白话,
小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.
🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 !!!

前言
在上一篇 Java 那些诗一般的数据结构(上篇)中我们主要讲解了
Java数据类型详解上篇链接
-
字面常量:介绍了说明是常量,以及字面常量的概念和种类
-
数据类型 : 说明了数据类型的概念和并举例种类
-
变量: 分批次的介绍了变量的不同类型并进行初步的理解
而在本篇文章中主要内容还是围绕着数据类型之间的转化再讲解呢
目录
-
类型转化
-
类型提升
-
字符串类型
一. 类型转换
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; // 编译失败:类型不兼容}
}

是的,当我们需要把 大的类型 转化为 小的类型 时,就需要 赋值
我们就牵扯到了 强制类型转化
鱼式疯言
- 不同数字类型的变量之间 赋值 , 表示 范围更小的类型能隐式转换成 范围较大 的类型
- 如果需要把
范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失
- 将一个 字面值常量 进行赋值的时候,
Java会自动针对数字范围进行 检查
- 强制类型转换不一定能成功,不相干的类型 不能 互相转换
最后小编还想说
小的数据类型 是可以自动放在大的数据类型的,但当我们强制
大的数据类型时,是很有可能造成 一部分数据存储不下 ,造成数据的丢失的
二. 类型提升
不同类型的数据之间相互 运算 时,数据 类型小 的会被提升到数据 类型大 的。
1. int 与 long 之间
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);}
}

结论:
byte和byte都是 相同类型 , 但是出现编译报错. 原因是,
虽然
a和b都是byte, 但是计算 a + b 会先将a 和 b都提升成int, 再进行计算, 得到的结果也是 int 这是赋给 c, 就会出现上述错误.
由于计算机的
CPU通常是按照4个字节为单位从内存中 读写数据 . 为了硬件上实现方便,
诸如
byte和short这种低于4个字节的类型, 会先提升成int, 再参与计算. 💥 💥 💥
鱼式疯言
- 不同类型 的数据混合运算,
范围小的会提升成范围大的 - 对于 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));}
}

是的,我们可以通过 两种方法 转为 字符串
鱼式疯言
- 直接带
双引号会向上转化为字符串
String str1 = num + "";
- 使用
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)
本节对只是对 字符串 进行简单的介绍,大家能够正常使用即可
后序会详细给小伙伴们介绍哦 💥 💥 💥
总结
-
类型转化: 我们认识了赋值时的类型转化并熟悉了两种不同的类型的转化方式
-
类型提升: 在运算时,注意也会发生的类型提升的理解
-
字符串类型: 理解的一种新的类型并明白字符串和其他类型的转化方式
可谓收获颇丰啊 💖 💖 💖 💖
如果觉得小编写的还不错的咱可支持 三连 下 ==(定有回访哦) == , 不妥当的咱请评论区 指正
希望我的文章能给各位宝子们带来哪怕一点点的
收获就是 小编 创作 的最大 动力 💖 💖 💖

相关文章:
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是一个非常轻量级的微前端框架,它主要提供了一个加载和管理微应用的机制,…...
自动化运维(二十二)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:主机入侵检测系统,通常会有一个服务器承担服务端角色,其他主机就是客户端角色,客户端加入到服务端的检测范围里ÿ…...
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…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
