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月前
|
安全 Java 编译器
Java类型提升与类型转换详解
本文详解Java中的类型提升与类型转换机制,涵盖类型提升规则、自动类型转换(隐式转换)和强制类型转换(显式转换)的使用场景与注意事项。内容包括类型提升在表达式运算中的作用、自动转换的类型兼容性规则,以及强制转换可能引发的数据丢失和运行时错误。同时提供多个代码示例,帮助理解byte、short、char等类型在运算时的自动提升行为,以及浮点数和整型之间的转换技巧。最后总结了类型转换的最佳实践,如避免不必要的转换、使用显式转换提高可读性、金融计算中使用BigDecimal等,帮助开发者写出更安全、高效的Java代码。
132 0
|
2月前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
296 120
|
2月前
|
Java 测试技术
Java浮点类型详解:使用与区别
Java中的浮点类型主要包括float和double,它们在内存占用、精度范围和使用场景上有显著差异。float占用4字节,提供约6-7位有效数字;double占用8字节,提供约15-16位有效数字。float适合内存敏感或精度要求不高的场景,而double精度更高,是Java默认的浮点类型,推荐在大多数情况下使用。两者都存在精度限制,不能用于需要精确计算的金融领域。比较浮点数时应使用误差范围或BigDecimal类。科学计算和工程计算通常使用double,而金融计算应使用BigDecimal。
834 102
|
11月前
|
存储 Java 开发者
Java 中 Set 类型的使用方法
【10月更文挑战第30天】Java中的`Set`类型提供了丰富的操作方法来处理不重复的元素集合,开发者可以根据具体的需求选择合适的`Set`实现类,并灵活运用各种方法来实现对集合的操作和处理。
624 113
|
7月前
|
存储 传感器 缓存
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
189 15
|
6月前
|
Java
java中一个接口A,以及一个实现它的类B,一个A类型的引用对象作为一个方法的参数,这个参数的类型可以是B的类型吗?
本文探讨了面向对象编程中接口与实现类的关系,以及里氏替换原则(LSP)的应用。通过示例代码展示了如何利用多态性将实现类的对象传递给接口类型的参数,满足LSP的要求。LSP确保子类能无缝替换父类或接口,不改变程序行为。接口定义了行为规范,实现类遵循此规范,从而保证了多态性和代码的可维护性。总结来说,接口与实现类的关系天然符合LSP,体现了多态性的核心思想。
118 0
|
7月前
|
Java
课时11:Java数据类型划分(浮点类型)
课时11介绍了Java中的浮点数据类型。主要内容包括:1. 定义小数,默认使用Double类型;2. 定义Float变量,需在数值后加"F"或"f"进行强制转换;3. 观察不同类型计算结果,如Int型除法会丢失精度,需至少包含一个Double或Float类型以确保准确性。总结指出,在复杂计算中推荐使用Double类型以避免精度损失。
147 5
|
7月前
|
Java
课时10:Java数据类型划分(整型类型)
本文主要围绕Java中整型数据展开,详细讲解整型变量、常量的概念,整型数据运算规则,包括数据溢出问题及解决方法,数据类型转换(自动转换与强制转换)的原理和注意事项,同时介绍了整型数据默认值的相关知识,以及byte数据类型与int数据类型的关系和使用场景,帮助读者全面掌握Java整型数据的相关内容。
183 4
|
7月前
|
存储 Java 编译器
Java泛型类型擦除以及类型擦除带来的问题
本文主要讲解Java中的泛型擦除机制及其引发的问题与解决方法。泛型擦除是指编译期间,Java会将所有泛型信息替换为原始类型,并用限定类型替代类型变量。通过代码示例展示了泛型擦除后原始类型的保留、反射对泛型的破坏以及多态冲突等问题。同时分析了泛型类型不能是基本数据类型、静态方法中无法使用泛型参数等限制,并探讨了解决方案。这些内容对于理解Java泛型的工作原理和避免相关问题具有重要意义。
343 0
|
12月前
|
Java
Java 中锁的主要类型
【10月更文挑战第10天】
270 59