【JAVA】Java中的类型转换

news2025/2/21 19:57:18

目录

1.自动类型转换(隐式转换,小类型转换为大类型)

2.强制类型转换(显示转换,大类型转换为小类型)

3.小于4字节的类型转换问题

3.1 byte<->int

3.2 char<->int

3.3 String<->int


Java作为一个强类型的编程语言,当不同类型之间的变量相互赋值的时候,会有较严格的校验。在Java中,当参与运算不一致时,就会进行类型转换。Java中类型转换主要分为两类:自动类型转换(隐式)强制类型转换(显示)

Java数据类型的数据范围:

补充:计算机存储数据都是二进制的01整型,float和double不是按照二进制计算的,而是按照科学计数法来模拟存储数据的。

  • float转换为二进制,大概是2^128数量级的数字
  • double转换为二进制,大概是2^300数量级的数字

注意:只有有关系的类型之间才能转换,毫无关系的类型不能转换

boolean<->int毫无关系,不能发送互相转换

1.自动类型转换(隐式转换,小类型转换为大类型)

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

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

两种情况:

a.不参与运算时,直接赋值

        int a=3;
        long b=a;//int->long

b.小类型与大类型共同参与运算时,小类型先提升为大类型然后参与运算

int a=10;
double b=2.0;
double result=a/b;//int->double然后再double/double

2.强制类型转换(显示转换,大类型转换为小类型)

强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。

特点:数据范围大->数据范围小(可能出现精度丢失,丢掉小数点或者数据溢出)

//示例1
long a=10;
int b=(int)a;//long->int需要强制转换

//示例2
long a=100;
float b=a;//这个属于小类型转换为大类型的隐式提升

3.小于4字节的类型转换问题

3.1 byte<->int

1.直接赋值

若整型字面量在byte数值的保存范围内,可以直接赋值给byte不需要转换

byte a=120;//可以直接赋值,不需要强转

若整型字面量在byte数值的保存范围之外,需要强制类型转换

byte b=(byte)130;//130超出了byte的保存范围,需要强制类型转换

若拿整型变量给byte赋值,无论这个变量保存的数值在不在byte的范围之内,都需要强转

int a=10;
byte c=(byte)a;//a是int变量,编译器编译时无法确定数值,因此都需要强转

2.byte变量的运算

CPU在内存进行读写时,都是按照4字节来进行读写,因此小于4字节的数据类型byte,char,short参与数学运算时,统一提升为int之后再参与运算。

byte a=10;
byte b=20;
byte c=a+b;//byte+byte=>int+int=int

final:声明常量。final修饰的变量成为常量,常量一旦赋值后,值不能改。

被final修饰的变量,除了值定义后不能改,存储在计算机内部时,类型也不能转换

此时a和b参与运算时,被final修饰,因此CPU读写时就是按照原来的byte类型进行读写。

final byte a=10;
final byte b=20;
byte c=a+b;//不再报错了

3.2 char<->int

计算机存储任何数据最终都是01二进制整数串,字符在存储时,就需要有规则将每个字符唯一的映射成一个整型数字。

这里介绍一个ASCII码编码规则:

ASCII 码规定使用一个字节来存储英文字符,最前面的一位统一规定为0,不同的字符由后面的7位确定, 所以ASCII码一共规定了128个字符的编码,其中包括:

  • 96个可打印字符
    • 大写英文字符和小写英文字符
    • 阿拉伯数字
    • 标点符号
    • 特殊符号
  • 32个不可打印的控制符号

 1.char->int按照编码规则自动转换

char a='a';
char b='A';
char c='铭';
int num1=a;
int num2=b;
int num3=c;

2. int->char 强制类型转换

int数值必须在char的范围内[2^15]的数字才能有对应的字符对应。

123456已经超过了char的范围,所以没有对应的字符。

 思考:编程实现小写字符转为大写字符

char a='a';
char b=(char)(a-32);//结果为A

3.3 String<->int

1.int->String

a.直接拼接

Java中任意类型只要和字符出对象+,统统都转为字符串拼接操作

 加上括号,先进行int+int=int操作,再进行拼接

 2.任意类型->String

使用String提供的方法valueOf方法

 3.String->int

调用Integer.parseInt(str);//将字符转str转为int

前提:这个str字符串变量必须由纯数字组成的,不能包含其它数据,字母都不行,否则会转换出错

不由纯数字组成时,会报错

 

 

 

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

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

相关文章

深入理解Java虚拟机:JVM高级特性与最佳实践-总结-4

深入理解Java虚拟机&#xff1a;JVM高级特性与最佳实践-总结-4 垃圾收集器与内存分配策略经典垃圾收集器Serial Old收集器CMS收集器Garbage First收集器 垃圾收集器与内存分配策略 经典垃圾收集器 Serial Old收集器 Serial Old是Serial收集器的老年代版本&#xff0c;它同样…

Liunx基础命令 - find命令

find命令 – 根据路径和条件搜索指定文件 find命令的功能是用于根据给定的路径和条件查找相关文件或目录&#xff0c;参数灵活方便&#xff0c;且支持正则表达式&#xff0c;结合管道符后能够实现更加复杂的功能&#xff0c;是Linux系统运维人员日常工作必须掌握的命令之一。 …

跟小枫社长学建站

该文章为看视频时的一些笔记&#xff0c;完整版可以看小枫社长的视频 小枫社长视频原址 一、租云服务器 腾讯云阿里云 阿里云对控制台进行了全面升级&#xff0c;在首页使用了新的设计方案&#xff0c;云服务器ECS位置如下&#xff0c;点击左上角目录即可。 二、创建实例 云…

牛客网面试必刷:BM22 比较版本号

牛客网面试必刷&#xff1a;BM22 比较版本号 前言一、解法1&#xff1a;分割截取 前言 牛客项目发布项目版本时会有版本号&#xff0c;比如1.02.11&#xff0c;2.14.4等等 现在给你2个版本号version1和version2&#xff0c;请你比较他们的大小 版本号是由修订号组成&#xf…

三十三、微服务,SpringCloud架构

1、微服务架构 1.1 单体应用架构 将项目所有模块(功能)打成jar或者war&#xff0c;然后部署一个进程 优点: 1:部署简单:由于是完整的结构体&#xff0c;可以直接部署在一个服务器上即可。 2:技术单一:项目不需要复杂的技术栈&#xff0c;往往一套熟悉的技术栈就可以完成开发。…

JAVA8的新特性——Stream

JAVA8的新特性——Stream 在这个深夜写下这篇笔记&#xff0c;窗外很安静&#xff0c;耳机里是《季节更替》&#xff0c;我感触还不是很多&#xff0c;当我选择封面图片的时候才发现我们已经渐渐远去&#xff0c;我们都已经奔赴生活&#xff0c;都在拼命想着去换一个活法&#…

Kubernetes 二进制部署高可用集群

概述 在私有局域网内完成Kubernetes二进制高可用集群的部署 ETCD Openssl > ca 证书 Haproxy Keepalived Kubernetes 主机规划 序号名字功能VMNET 1备注 1备注 2备注 3 备注 4备注 50orgin界面192.168.164.10haproxykeepalived1reporsitory仓库192.168.164.16yum 仓库re…

哈工大C语言大作业-学生成绩管理系统

哈工大C语言大作业-学生成绩管理系统 完整项目地址&#xff1a;https://github.com/944613709/Student-Performance-Management-System-ByC 说明 l 设计了学生成绩管理系统&#xff0c;来实现对于学生数据的录入统计等各个功能l 进入主菜单之前执行音效播放l menu主菜单中显…

C语言基础知识:C语言中的控制语句

目录 1. 条件判断语句 if(…) {…} if(…) {…} else {…} if(…) {…} else if(…) {…} … else if(…) {…} else {…} switch() {case …: …; case …: …; … default: …;} 2、循环语句 while语句 do while语句 for语句 3、循环体中的跳转语句 break语句。 c…

consul集群部署-linux

一.前言 1. Consul架构 consul是分布式、高可用的系统&#xff0c;下图是单数据中心的部署架构 2. Consul特性 服务发现&#xff1a;解决在分布式环境中&#xff0c;如何找到可用的服务地址的问题&#xff0c;支持通过DNS和HTTP查询服务地址。健康检查&#xff1a;定时监控服务…

如何正确学习网络安全(黑客)?看到就是赚到!

一、前言 本人10 年工作经验&#xff0c; 擅长 Web 安全攻防、渗透领域&#xff0c; 在金融领域的安全有丰富的实战经验。从事在线教育 3 年多培养学员过万&#xff0c;讲解清晰透彻&#xff0c;课程干货内容多&#xff0c;辅导学员耐心细致 那我们该如何正确学习网络安全&am…

[学习笔记] [机器学习] 5. 逻辑回归(逻辑回归、混淆矩阵、分类评估指标、ROC曲线、AUC指标、类别不均衡问题)

视频链接数据集下载地址&#xff1a;无需下载 本文学习目标&#xff1a; 知道逻辑回归的损失函数、优化方法知道逻辑回归的应用场景应用LogisticRegression实现逻辑回归预测知道精确率、召回率等指标的区别知道如何解决样本不均衡情况下的评估会绘制ROC曲线图形 1. 逻辑回归…

Linux——Linux的基本指令

作者&#xff1a;几冬雪来 时间&#xff1a;2023年5月15日 内容&#xff1a;Linux基本指令讲解 目录 前言&#xff1a; 1. 什么是操作系统&#xff1a; 2.Linux操作系统&#xff1a; 3.Linux程序&#xff1a; 4.Linux基本指令&#xff1a; 1.ls&#xff1a; 作用&a…

Java基础 关键字与标识符

关键字(keyword) 定义:被 Java 语言赋予了特殊含义&#xff0c;用做专门用途的字符串(或单词) 这些单词已经被 Java 定义好 了。 特点:全部关键字都是小写字母。 关键字比较多&#xff0c;不需要死记硬背&#xff0c;学到哪里记到哪里即可。官方地址 1. 关键字一共 50 个&…

linux bonding 技术

文章目录 背景简介目录1. Bonding驱动简介1.1 配置并编译支持bonding的内核1.2 安装ifenslave控制工具 2. Bonding驱动选项3. 配置Bonding设备3.1 使用Sysconfig配置3.1.1 利用Sysconfig使用DHCP3.1.2 利用Sysconfig配置多个Bonds 3.2 使用Initscripts配置3.2.1 利用Initscript…

Linux篇3

Shell常用命令 0. Shell介绍1. 帮助命令1.0 help&#xff1a;获取内置命令帮助信息1.1 man&#xff1a;获取帮助信息 2. 文件目录相关2.1 pwd&#xff1a;打印当前工作目录的绝对路径2.2 cd&#xff1a;切换工作目录2.3 ls&#xff1a;列出目录内容2.4 mkdir&#xff1a;创建空…

Java小游戏之贪吃蛇

文章目录 一&#xff1a;窗口的绘制1.1 定义窗口类——SnakeGame1.2 设置窗口的参数1.3 启动main方法 二&#xff1a;窗口网格的绘制2.1 重写paint方法2.1.1 为什么要重写paint方法2.1.2 实现方式 2.2 Graphics2.3 设置网格线的参数 三&#xff1a;游戏物体父类的创建——Snake…

Swagger之集成与用法

简介 Swagger 是一个规范且完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务&#xff1b; 作用 1.接口的文档在线生成 2.功能测试 SpringBoot集成Swagger 1.创建一个普通的SpringBoot项目&#xff0c;支持web应用 2.pom中加入Maven依赖 <depe…

K8S的的就绪探针readinessProbe 和存活探针livenessProbe

就绪探针&#xff1a;readinessProbe 什么是readinessProbe readinessProbe&#xff1a; 当Pod需要开始接收流量时&#xff0c;“kubelet” 将定期检查 readinessProbe&#xff0c;如果该probe处于成功状态&#xff0c;则容器视为就绪&#xff0c;并将 Pod 标记为已就绪状态。…

栈的基本操作详细介绍 看了就会!!!

文章目录 栈的介绍栈的概念栈的结构 栈的实现&#xff08;动态数组实现&#xff09;初始化栈入栈出栈获取栈顶元素判断栈是否为空获取栈中有效元素的个数销毁栈 栈的介绍 栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进…