Java 数据类型划分(整型类型)|学习笔记

简介: 快速学习 Java 数据类型划分(整型类型)

开发者学堂课程【【名师课堂】Java 零基础入门Java 数据类型划分(整型类型)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/370/detail/4405


Java 数据类型划分(整型类型)


内容简介:

一、整型类型

二、byte 类型

 

一、整型类型

1、在 Java 程序里面任何一个整数的常量类型都是 int 型

范例:   

public class Test Demo {

public static void main (String args [ ])  {

int num = 10 ;

}

}

10 是一个整数,不会改变的数据都是常量;

程序之中任何一个整数对应的类型都是 int

System .out.println(num * 2);

声明一个 int 型变量

num 是 int 型的变量 *2是 int 型的常量=结果是 int 型

 

2、观察数据溢出操作

在进行整型数据操作过程中,也会出现数据溢出问题—指的是当已经达到整型的最大或最小值,如果继续进行数学计算而可能产生的错误数据。

(1)关于变量的命名要求:第一个单词的字母小写,而后每个单词的首字母大写(例如 maxValue)

(2)范例:(观察数据溢出操作)

public class Test Demo {

public static void main (String args [ ])  {

int  maxValue = Integer.MAX_VALUE ;    取得最大值

int minValue = Integer.MIN_VALUE ;      取得最小值

System.out.println(maxValue) ;  2147483647

System.out.println(minValue) ;  -2147483648

maxValue 属于 int 型变量 + int 型常量 = int 型

System.out.println(maxValue + 1) ;数据溢出(最小值):-2147483648

System.out.println(minValue - 1) ;数据溢出(最大值):2147483647

System.out.println(minValue - 2) ;2147483646

}

}


3、使用 long 来解决 int 的数据溢出问题

发现已经超过数据类型的局限,数据的计算就会出现偏差,所以一定要在操作前预估数据大小。

但是问题是,既然已经知道 int 会存在溢出问题,就要解决溢出问题。解决方案只有一个:更换更大的数据类型,比 int 更大的数据类型就是 long 类型。

范例(使用 long 来解决 int 的数据溢出问题):

在使用此类方式处理之前请注意一个问题,所有程序的执行顺序都是由等号的右边到左边,如果继续使用 int 进行计算结果依然会有溢出,所以最简化的做法是将其中的一个变量首先做类型的扩充,而扩充有两种实现方式:

(1)实现方式一:直接将 int 变量的内容复制给 long 变量

public class Test Demo {

public static void main (String args [ ])  {

int  maxValue = Integer.MAX_VALUE ;    取得最大值

int minValue = Integer.MIN_VALUE ;      取得最小值

long result = maxValue  ;     将 int 的数据变量赋值给 long

result 是 long 类型  + 1是 int 类型 = long 类型

(当数据分为小的类型和数据范围大的类型一起进行计算时,数据范围小的要首先变为数据范围大的类型,统一后进行计算)

System.out.println(result) ;      2147483648

}

}

(2)实现方式二:直接将某一个 int 型变量变为 long 型

public class Test Demo {

public static void main (String args [ ])  {

int  maxValue = Integer.MAX_VALUE ;    取得最大值

int minValue = Integer.MIN_VALUE ;      取得最小值

先将 int 型变为 long 型 + 1是 int 型常量 = long 类型

long result = (long) maxValue + 1  ;    

System.out.println(result) ;      2147483648

}

}


4、数据类型强制转换

数据类型除了可以由小变大之外也可以由大变小。但问题是会丢失内容

范围小的数据类型可以自动变为范围大的数据类型

数据范围大的数据类型只有强制转换才可以变为数据范围小的数据类型(但是一般不需要应用,99% 情况下提供的数据类型是恰好的)

范例(数据类型强制转换):

public class Test Demo {

public static void main (String args [])  {

任何的整数默认类型都是 int ,但是该数据已经超过了 int 可以保存的数据范围,就需要将此数据明确表示为 long 型常量。

long num = 2147483648L ;      L 或 l都可以

在强制的时候设置其目标类型,但这种操作有可能会丢失精度

int result = (int)num ;  大的类型变为小的类型,必须强制

数据类型除了可以由小变大之外也可以由大变小。但问题是会丢失内容

范围小的数据类型可以自动变为范围大的数据类型

数据范围大的数据类型只有强制转换才可以变为数据范围小的数据类型(但是一般不需要应用,99%情况下提供的数据类型是恰好的)

范例(数据类型强制转换):

之间讲过所有数据类型都有其默认值,但是这个默认值在方法的说明(主方法)中无效

范例(观察一个错误程序):

任何的整数默认类型都是 int ,但是该数据已经超过了 int 可以保存的数据范围,就需要将此数据明确表示为 long 型常量。

long num = 2147483648L ;      L 或 l都可以

在强制的时候设置其目标类型,但这种操作有可能会丢失精度

int result = (int)num ;  大的类型变为小的类型,必须强制

System.out.println(result) ;      -2147483648

}

}

此时有两种解决方案,一种是在使用前进行赋值,另外一种是在定义变量时进行赋值


5、重要说明(关于数据类型默认值问题):

之间讲过所有数据类型都有其默认值,但是这个默认值在方法的说明(主方法)中无效

范例(观察一个错误程序):

public class Test Demo {

public static void main (String args [])  {

int num ;      定义一个num变量

System.out.println(num) ;   错误:可能尚未初始化变量num

}

}

此时有两种解决方案,一种是在使用前进行赋值,另外一种是在定义变量时进行赋值

范例(在使用前为变量赋值):

public class Test Demo {

public static void main (String args [])  {

int num ;      定义一个num变量

num = 10 ;  在num输出之前为变量设置内容

System.out.println(num) ;  

}

}

但是这种形式在老版本的 JDK 之中也会出现错误所以最保险的做法就是在变量声明的时候设置其默认值

public class Test Demo {

public static void main (String args [ ])  {

int num =10 ;      在num输出之前为变量设置内容

System.out.println(num) ;  

}

}

而对于各个数据类型默认值的使用,需要结合到类的情况下才可以观察到。标准做法为,所有程序在编写变量时都赋上默认值

 

二、byte 数据类型

byte 类型可以保存的范围:-128~127

范例(声明 byte 变量):

public class Test Demo {

public static void main (String args [ ])  {

10是 int,int 范围大于  byte 范围,理论上需要进行强制转换。

但是在这里没有转换,因为其数据量符合 byte 要求

byte data = 10 ;     10是int类型在byte范围内

System.out.println(data) ;

}

}    

如果为 byte 赋值内容大于 byte 范围时才需要强制转换。

同时需要注意的是,如果要将 int 常量直接赋值给 byte 变量,就只能是常量而不能是 int 变量。

public class Test Demo {

public static void main (String args [ ])  ;

byte data = (byte)num ;    

System.out.println(data) ;

}

}

在以后的开发中,byte 和 int 经常会一起出现,需要手动进行转换

相关文章
|
2月前
|
XML 数据采集 存储
使用Java和XPath在XML文档中精准定位数据
在数据驱动的时代,从复杂结构中精确提取信息至关重要。XML被广泛用于数据存储与传输,而XPath则能高效地在这些文档中导航和提取数据。本文深入探讨如何使用Java和XPath精准定位XML文档中的数据,并通过小红书的实际案例进行分析。首先介绍了XML及其挑战,接着阐述了XPath的优势。然后,提出从大型XML文档中自动提取特定产品信息的需求,并通过代理IP技术、设置Cookie和User-Agent以及多线程技术来解决实际网络环境下的数据抓取问题。最后,提供了一个Java示例代码,演示如何集成这些技术以高效地从XML源中抓取数据。
使用Java和XPath在XML文档中精准定位数据
|
6天前
|
安全 Java 开发者
Java修饰符与封装:理解访问权限、行为控制与数据隐藏的重要性
Java中的修饰符和封装概念是构建健壯、易维护和扩展的Java应用程序的基石。通过合理利用访问权限修饰符和非访问修饰符,开发者能够设计出更加安全、灵活且高效的代码结构。封装不仅是面向对象编程的核心原则之一,也是提高软件项目质量和可维护性的关键策略。
10 1
|
2月前
|
Java
【Java基础面试五】、 int类型的数据范围是多少?
这篇文章回答了Java中`int`类型数据的范围是-2^31到2^31-1,并提供了其他基本数据类型的内存占用和数值范围信息。
【Java基础面试五】、 int类型的数据范围是多少?
|
1月前
|
Java API 开发者
代码小妙招:用Java轻松获取List交集数据
在Java中获取两个 `List`的交集可以通过 `retainAll`方法和Java 8引入的流操作来实现。使用 `retainAll`方法更为直接,但会修改原始 `List`的内容。而使用流则提供了不修改原始 `List`、更为灵活的处理方式。开发者可以根据具体的需求和场景,选择最适合的方法来实现。了解和掌握这些方法,能够帮助开发者在实际开发中更高效地处理集合相关的问题。
29 1
|
2月前
|
监控 Java 开发工具
【事件中心 Azure Event Hub】Event Hub Java SDK的消费端出现不消费某一个分区中数据的情况,出现IdleTimerExpired错误消息记录
【事件中心 Azure Event Hub】Event Hub Java SDK的消费端出现不消费某一个分区中数据的情况,出现IdleTimerExpired错误消息记录
|
2月前
|
存储 Java Apache
|
2月前
|
存储 安全 Java
"Java编码魔法:揭秘图片与文件的Base64神秘转换术,让数据在指尖跳跃!"
【8月更文挑战第16天】Base64编码在Java开发中常用于将二进制数据如图片转换为ASCII字符串以便传输。编码使用64个字符及等号填充,每3字节数据编码为4个字符。Java利用`java.util.Base64`类实现此功能:读取图片或文件为字节数组后进行编码。解码时将Base64字符串还原为字节数组并写入文件。需注意编码效率降低、不提供安全性及特殊字符兼容性等问题。掌握这些技巧有助于解决Web开发中的数据传输需求。
62 4
|
2月前
|
监控 Java
Java文件夹复制解决方案:优化大文件与大量数据的处理
Java中复制文件夹及其内容,尤其是当处理大文件或文件夹(如几个GB)时,需要特别注意内存使用和性能优化。以下是一个详细的指导,包括如何避免内存溢出异常,并确保复制过程的高效性。
|
2月前
|
消息中间件 负载均衡 Java
"Kafka核心机制揭秘:深入探索Producer的高效数据发布策略与Java实战应用"
【8月更文挑战第10天】Apache Kafka作为顶级分布式流处理平台,其Producer组件是数据高效发布的引擎。Producer遵循高吞吐、低延迟等设计原则,采用分批发送、异步处理及数据压缩等技术提升性能。它支持按消息键值分区,确保数据有序并实现负载均衡;提供多种确认机制保证可靠性;具备失败重试功能确保消息最终送达。Java示例展示了基本配置与消息发送流程,体现了Producer的强大与灵活性。
59 3
|
2月前
|
存储 安全 Java
揭秘Java序列化神器Serializable:一键解锁对象穿越时空的超能力,你的数据旅行不再受限,震撼登场!
【8月更文挑战第4天】Serializable是Java中的魔术钥匙,开启对象穿越时空的能力。作为序列化的核心,它让复杂对象的复制与传输变得简单。通过实现此接口,对象能被序列化成字节流,实现本地存储或网络传输,再通过反序列化恢复原状。尽管使用方便,但序列化过程耗时且存在安全风险,需谨慎使用。
38 7
下一篇
无影云桌面