课时12:整型数据类型

简介: Java 中的整型数据分为四种:Byte、Short、Int 和 Long,范围依次增大。默认情况下,整型常量为 Int 类型。

课时12:整型数据类型

整型数据一共有4种,按照保存的范围由小到大:Byte、Short、Int、Lone,那么在Java里面任何的一个整型常量,其默认的类型都是Int型(只要是整数就是Int类型的数据)。


范例:定义Int型变量

public class JavaDemo {
public static void main(String args[]) {
//it 变量名称=常量(10是一个常量,整数类型为int);
intx=10;// 定义了一个整型变量x
//int型变量*int型变量=int型数据
System.out.println(x*x)
}
}

因此,这就是int类型的基本操作。通过这段代码,大家应该能够发现一些规律。首先,从整体来看,“10”是一个整型常量,它的值永远不会改变。但是为什么它被称为变量呢?10永远不会改变,但是X是一个变量,X的内容是可以发生改变的。

image.png


范例:修改X的内容

public class JavaDemo {
public static void main(String args[]) {
//it 变量名称=常量(10是一个常量,整数类型为int);
intx=10;// 定义了一个整型变量x
x=20;//改变了x的已有内容
//int型变量*int型变量=int型数据
System.out.println(x*x);
}
}

任何的数据类型都是有其可以保存的数据范围的。(正常使用下你很少会出现超过此范围的数据),如果真的超过了会如何呢?下面通过一个具体代码来进行观察。


范例:观察超过了int处理范围

public class JavaDemo {
public static void main(String args[]) {
 int max=integer.MAX_VALUE;//获取int的最大值
 int min=integer.MIN_VALUE;//获取int的最小值
 System.out.println(max);//2147483647
 System.out.println(min);//-2147483648
 System.out.println(“--------无以言表的分割线--------”);
 //int型变量+int型常量=int型计算结果
System.out.println(max+1);//-2147483648,最大值+1=最小值
System.out.println(max+2);//-2147483647,最大值+2=次最小值
//int型变量-int型常量=int型计算结果
System.out.println(min-1);//2147483647,最小值-1=最大值
}
}

通过此时的执行结果可以发现这些数字在进行处理的时候如果超过了其最大的保存范围,那么将出现有循环的问题,而这样的问题在Java中被称为数据溢出,如果要想解决这种溢出,数据溢出的本质在于操作的数据范围太小了,可以继续扩大使用范围,比Int范围更大的是Long。

image.png


范例:解决数据溢出

在操作的时候预估数据范围,如果发现范围不够,就使用更大范围:

public class JavaDemo {
public static void main(String args[]) {
 //long long变量=int的数值
   long max=integer.MAX_VALUE;//获取int的最大值
   long min=integer.MIN_VALUE;//获取int的最小值System.out.println(max);//2147483647
   System.out.println(min);//-2147483648
   System.out.println(“--------无以言表的分割线--------”);
 //long型变量+int型常量=long型计算结果
System.out.println(max+1);//2147483648,最大值+1=最小值
System.out.println(max+2);//2147483649,最大值+2=次最小值
//long型变量-int型常量=long型计算结果
System.out.println(min-1);//-2147483649,最小值-1=最大值
}
}

除了可以定义Long型的变量之外,也可以直接在常量上进行处理,

默认的整数常量都是Int的形,那么可以为它追加字母“L”或直接使用“(Long)”转换。

public class JavaDemo {
public static void main(String args[]) {
   int max=integer.MAX_VALUE;//获取int的最大值
 int min=integer.MIN_VALUE;//获取int的最小值
   System.out.println(max);//2147483647
   System.out.println(min);//-2147483648
   System.out.println(“--------无以言表的分割线--------”);
   //int型变量+long型常量=longt型计算结果
System.out.println(max+1L);//-2147483648,最大值+1=最小值
System.out.println(max+2l);//92147483649,最大值+2=次最小值
//long型变量-int型常量=long型计算结果
System.out.println((long)min-1);//-2147483649,最小值-1=最大值
}
}

现在发现数据类型之间是可以转换的,即范围小的数据类型可以自动转为范围大的数据类型,但是如果反过来,范围大的数据类型要转为范围小的数据类型,那么就必须采用强制性的处理模式,同时还需要考虑可能带来的数据溢出。


范例:强制类型转换

public class JavaDemo {
public static void main(String args[]) {
 long num=2147483649;//此数据已经超过了int范围
 int temp=(int)num;//long范围比int范围大,不能够直接转换
 System.out.println(temp);
}
}

很明显,如果数值范围比 Int 范围大,就不能直接转换,对吗?那么,如果编译时提示“过大的整数”,这是什么意思呢?你的值是否超出了Int的范围?我之前说过, Int 的默认输入类型就是Int。如果超出范围,不能直接赋值,需要加上L来表示长整型

image.png

同学们,我们继续编译。它提示说“不兼容”,类型转换到Int会有损失,明白吗?注意,这里与数值大小无关,即使当前值没有超过Int的范围,它仍然会提示有损失。因为类型转换是基于数据类型划分的。如果真的需要强制转换,就在这里加上( Int )。这意味着强制转换,即使这里的值超出了Int的范围。一旦执行,数据就会溢出。

因此,对于数据的处理操作,我强烈建议大家记住一点: 程序支持有数据转换处理,但是如果不是必须的情况下不建议这种转换。

在进行整型处理的时候,还有一个 Byte 类型特别需要注意,首先这个类型的范围是-128~127之间,也就是说它保存的数据量很小。


范例:定义 Byte 变量

publicclass UavaDemo {
public static void main(string args[]){
byte num=20;
System.out.println(num);
}
}

正常来讲在 Java 程序里面20这个数字应该是 Int 型,但是在为Byte 赋值的时候并没有因为是Int型而发生强制类型转换,这是因为 Java 对 Byte 做了特殊处理,即:如果没超过 Byte 范围的常量可以自动由Int变成Byte,如果超过了就必须进行强制转换。

image.png


范例:Int的强制转换为Byte

publicclass UavaDemo {
public static void main(string args[]){
byte num=(byte)200;
System.out.println(num);
}
}

由于现在200已经超过了 Byte 的范围,所以产生了数据溢出的问题。需要提醒的是,对于常量可以自动适配转换,但是如果对于变量则还是必须使用强制转换处理。

先记住 Byte 的范围,我们通常不会像现在这样直接使用它,但可能会有其他使用方式。因此,这就是我们对整型的处理方式,得出的结论是:优先使用 Int ,在处理大量数据(如时间、文件或内存)时,再考虑使用 Long ,参考我之前提到的原则。

相关文章
|
3天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
2天前
|
云安全 人工智能 自然语言处理
阿里云x硅基流动:AI安全护栏助力构建可信模型生态
阿里云AI安全护栏:大模型的“智能过滤系统”。
|
2天前
|
人工智能 自然语言处理 自动驾驶
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
|
5天前
|
存储 机器学习/深度学习 人工智能
大模型微调技术:LoRA原理与实践
本文深入解析大语言模型微调中的关键技术——低秩自适应(LoRA)。通过分析全参数微调的计算瓶颈,详细阐述LoRA的数学原理、实现机制和优势特点。文章包含完整的PyTorch实现代码、性能对比实验以及实际应用场景,为开发者提供高效微调大模型的实践指南。
564 2
|
3天前
|
Linux 虚拟化 iOS开发
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
839 4
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
kde
|
5天前
|
人工智能 关系型数据库 PostgreSQL
n8n Docker 部署手册
n8n是一款开源工作流自动化平台,支持低代码与可编程模式,集成400+服务节点,原生支持AI与API连接,可自托管部署,助力团队构建安全高效的自动化流程。
kde
385 3
|
5天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段四:学术分析 AI 项目 RAG 落地指南:基于 Spring AI 的本地与阿里云知识库实践
本文介绍RAG(检索增强生成)技术,结合Spring AI与本地及云知识库实现学术分析AI应用,利用阿里云Qwen-Plus模型提升回答准确性与可信度。
273 91
AI 超级智能体全栈项目阶段四:学术分析 AI 项目 RAG 落地指南:基于 Spring AI 的本地与阿里云知识库实践