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. 字符串类型: 理解的一种新的类型并明白字符串和其他类型的转化方式

可谓收获颇丰啊 💖 💖 💖 💖

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

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过 Spark SQL 和 DataFrame 操作表和多种内部数据源总结

文章目录 前言在Spark应用中使用Spark SQLSQL 表和视图内部表和外部表创建库和表创建视图查看元数据表缓存读取表数据 表和 DataFrame 的数据来源DataFrameReaderDataFrameWriterParquetJSONCSVAvroORCImagesBinary Files 总结 前言 本文将探讨 Spark 中 Spark SQL 接口是如何…

StockTrading AI小模型股票自动交易系统 转载

Stock-Trading StockTrading AI小模型股票自动交易系统 项目文档 Stock-Trading 语雀 项目展示 功能介绍 对接证券平台,实现股票自动化交易使用QuartZ定时任务调度,每日自动更新数据使用DL4J框架实现LSTM模型指导股票买入,采用T1短线交易策…

C/C++如何快速学习?少走3年弯路

于我而言,最开始学习就是 C,除了计算机专业,其他专业可能学习的第一门编程语言为 C 语言,还是谭浩强爷爷那本,当时想着有点 C 基础,无外乎就是 C 语言的升级版,于是开启了 C 的路程。 语言这个…

鸿蒙、如何使用@ohos.contact 接口,实现对联系人的增删查改功能

介绍 本示例使用ohos.contact 接口,实现了对联系人的增删查改功能。 效果预览 使用说明 1.点击 按钮,跳转添加联系人界面,输入联系人信息,点击 √,确认添加联系人,并返回首页; 2.点击联系人…

学习记录14-运算放大器2

目录 前言 一、理想放大器 二、虚断 二、虚短 虚短的两个使用条件 1.虚短概念 2.如果我们将运放的同相端和反相端颠倒会怎样呢? 总结 前言 主要讲述运算放大器的虚短虚断 一、理想放大器 如果没有基础或只是想简单了解,可以看我前一篇文章&am…

Jackson 2.x 系列【15】序列化器 JsonSerializer

有道无术,术尚可求,有术无道,止于术。 本系列Jackson 版本 2.17.0 源码地址:https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 概述2. 方法2.1 构造2.2 序列化2.3 其他 3. 实现类3.1 StdSerializer3.1.1 源…

vue3学习笔记(pinia)

defineModel:快速实现组件的双向绑定 pinia:在仓库中提供数据和使用数据 创建store文件夹,在里面创建counter.js,以提供数据,注意需要return 和 export,export的是一个函数。 import { defineStore } from…

智慧驿站式的“智慧公厕”,给城市新基建带来新变化

随着智慧城市建设的推进,智慧驿站作为一种多功能城市部件,正逐渐在城市中崭露头角。这些智慧驿站集合了智慧公厕的管理功能,为城市的新基建带来了全新的变革。本文以智慧驿站智慧公厕源头实力厂家广州中期科技有限公司,大量精品案…

蓝桥杯第十三届省赛C++B组(未完)

目录 刷题统计 修剪灌木 X进制减法 【前缀和双指针】统计子矩阵 【DP】积木画 【图DFS】扫雷 李白打酒加强版 DFS (通过64%,ACwing 3/11); DFS(AC) DP(AC) 砍竹子(X) 刷题统计 题目描述 小明决定从下周一开始努力刷题准…

基于JAVA的汽车售票网站论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对汽车售票信息管理混乱,出错率高,信息安全性差…

ChatGPT与生成式AI:教育领域内新的浪潮与挑战

随着ChatGPT和其他生成式AI技术,如GPT-3.5、GPT-4的出现,我们正见证教育领域一场前所未有的变革浪潮。这些技术不仅推动了教育方式的进步,也为学习者带来了全新的机遇和挑战。 NO.1教育变革的新浪潮 生成式AI技术,特别是ChatGPT&…

使用SquareLine Studio创建LVGL项目到IMX6uLL平台

文章目录 前言一、SquareLine Studio是什么?二、下载安装三、工程配置四、交叉编译 前言 遇到的问题:#error LV_COLOR_DEPTH should be 16bit to match SquareLine Studios settings,解决方法见# 四、交叉编译 一、SquareLine Studio是什么…

04 Python进阶:MySQL-PyMySQL

什么是 PyMySQL? PyMySQL 是一个用于 Python 的纯 Python MySQL 客户端库,提供了与 MySQL 数据库进行交互的功能。PyMySQL 允许 Python 开发人员连接到 MySQL 数据库服务器,并执行诸如查询、插入、更新和删除等数据库操作。 以下是 PyMySQL …

超图SuperMap-Cesium,地形图层,可以渲染一个或多个地形(地形可缓存DEM,TIN方式),webGL代码开发(2024-04-08)

1、缓存文件类型TIN格式,TIN的地形sct只能加一个 const viewer new Cesium.Viewer(cesiumContainer); viewer.terrainProvider new Cesium.CesiumTerrainProvider({isSct: true, // 是否为iServer发布的TIN地形服务,stk地形设置为falserequestWaterMask : true,…

【前沿模型解析】潜在扩散模型 2-2 | 手撕感知图像压缩基础块上下sample块

文章目录 1 DownSample下采样部分1.1 两种实现方式1.2 代码实现 2 UpSample上采样部分2.1 代码实现 1 DownSample下采样部分 1.1 两种实现方式 下采样,即改变特征图的尺寸 下采样的话源码实现了两种方式 方式一:是通过卷积实现下采样,我们…

谈谈什么是 Redis

🔥博客主页:fly in the sky - CSDN博客 🚀欢迎各位:点赞👍收藏⭐️留言✍️🚀 🎆慢品人间烟火色,闲观万事岁月长🎆 📖希望我写的博客对你有所帮助,如有不足,请指正&#…

Linux(05) Debian 系统修改主机名

查看主机名 方法1:hostname hostname 方法2:cat etc/hostname cat /etc/hostname 如果在创建Linux系统的时候忘记修改主机名,可以采用以下的方式来修改主机名称。 修改主机名 注意,在linux中下划线“_”可能是无效的字符&…

软件测试学习之MySQL学习笔记(完结)

目录 1. 数据库**** 1.1. 概念**** 1.2. 分类**** 1.2.1. 关系型数据库**** 1.2.1.1. SQL**** 1.2.2. 安装**** 1.2.2.1. Navicat**** 2. SQL语句**** 2.1. 常用数据类型**** 2.2. 数据库**** 2.3. 表**** 2.3.1. 字段约束**** 2.4. 数据**** 2.4.1. 增 insert**…

JavaSE:图书管理系统

目录 一、前言 二、内容需求 三、类的设计 (一)图书类 1.Book 类 2.BookList 类 (二)操作类 1.添加图书AddOperation类 2.借阅图书BorrowOperation类 3.删除图书DelOperation类 4.显示图书ShowOperation类 5.退出系统Ex…

ChromeOS 中自启动 Fcitx5 和托盘 stalonetray

ChromeOS 更新的飞快,旧文章的方法也老是不好用,找遍了也没找到很好的可以开机自启动 Linux VM 和输入法、托盘的方法。 研究了一下(不,是很久),终于找到个丑陋的实现。 方法基于 ChromeOS 123.0.6312.94…