欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 【Java篇】数据类型与变量:窥见程序的天地万象

【Java篇】数据类型与变量:窥见程序的天地万象

2025/3/10 11:01:15 来源:https://blog.csdn.net/2301_79849925/article/details/145926931  浏览:    关键词:【Java篇】数据类型与变量:窥见程序的天地万象

文章目录

    • Java 数据类型与变量基础:从零开始,轻松掌握
    • 前言
    • 一、字面常量
      • 1.1 什么是字面常量?
      • 1.2 字面常量的分类
        • 1.2.1 字符串常量
        • 1.2.2 整形常量
        • 1.2.3 浮点数常量
        • 1.2.4 字符常量
        • 1.2.5 布尔常量
        • 1.2.6 空常量
      • 1.3 字面常量与数据类型
    • 二、Java 中的基本数据类型
      • 2.1 数据类型的分类
        • 2.1.1 整型数据类型
        • 2.1.2 浮点型数据类型
        • 2.1.3 字符型数据类型
        • 2.1.4 布尔型数据类型
    • 三、Java 中的变量
      • 3.1 变量定义
        • 3.1.1 变量的定义与初始化
        • 3.1.2 变量的作用域
        • 代码示例
      • 3.2 整型变量
      • 3.3 长整型变量
      • 3.4 短整型变量
      • 3.5 字节型变量
      • 3.6 浮点型变量
        • 3.6.1 双精度浮点型
        • 3.6.2 单精度浮点型
      • 3.7 字符型变量
      • 3.8 布尔型变量
    • 四、数据类型转换
      • 4.1 自动类型转换
      • 4.2 强制类型转换
      • 4.3 其他类型转换
      • 4.4 数值类型的精度问题
        • 4.4.1 浮点数的精度
        • 4.4.2 类型范围与溢出
    • 五、类型提升
      • 5.1 int 与 long 之间的运算
      • 5.2 byte 与 byte 的运算
    • 五、总结与展望

Java 数据类型与变量基础:从零开始,轻松掌握

💬 欢迎讨论:如果你在阅读过程中有任何疑问或想要进一步探讨的内容,欢迎在评论区留言!我们一起学习、一起成长。

👍 点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏并分享给更多想了解 Java 编程的朋友!

🚀 继续学习之旅:今天,我们将从 Java 编程语言的核心基础开始,介绍数据类型变量,这些是每个学习 Java 的人都需要掌握的基本概念,后续我们将继续深入其他更高级的内容。


前言

在本篇文章中,我们将详细介绍 Java 中的数据类型变量。这些是 Java 编程的基石,掌握它们对于编写正确、高效的 Java 程序至关重要。

Java 是一种强类型语言,这意味着每个变量都必须指定类型,而数据类型决定了数据的存储方式、计算方法以及可能的值范围。通过本篇文章的学习,你将能够理解并掌握如何在 Java 中使用不同的数据类型,以及如何定义和操作变量。


一、字面常量

1.1 什么是字面常量?

字面常量是指程序中固定不变的值,通常是在程序中直接写入的。比如 "Hello World"1003.14'A'true 都是字面常量。字面常量的值在程序运行期间是不可改变的,它们在 Java 中是最常用的数据类型。

例如,在如下代码中:

System.out.println("Hello World");

"Hello World" 就是一个字符串字面常量,直接在程序中写明。

1.2 字面常量的分类

字面常量根据其数据类型的不同,可以分为以下几种:

1.2.1 字符串常量

字符串常量是由双引号括起来的字符序列,例如:

"12345", "hello", "你好"

这些常量可以是数字、字母或者特殊字符的组合,用于表示文本。

1.2.2 整形常量

整形常量指的是程序中直接写的整数值,它们没有小数点。例如:

100, 1000, -50
1.2.3 浮点数常量

浮点数常量表示带有小数的数值。例如:

3.14, 0.49, -1.23
1.2.4 字符常量

字符常量由单引号括起来,用于表示单个字符。例如:

'A', '1', '#'
1.2.5 布尔常量

布尔常量只有两个值:truefalse,它们用于表示逻辑判断中的真假值。例如:

true, false
1.2.6 空常量

空常量表示为空值的引用类型,Java 使用 null 来表示。例如:

null

1.3 字面常量与数据类型

Java 中的字面常量代表了不同的数据类型,它们属于基本数据类型。在 Java 中,常见的数据类型有整型、浮点型、字符型和布尔型等,而字面常量正是这些数据类型的具体实例。

在 Java 中,常见的基本数据类型有:

  • 整型:包括 byteshortintlong
  • 浮点型:包括 floatdouble
  • 字符型:char
  • 布尔型:boolean

二、Java 中的基本数据类型

Java 的基本数据类型分为四类八种,每种类型都有其特定的存储方式和取值范围。理解这些数据类型对于 Java 编程至关重要。

2.1 数据类型的分类

Java 中的数据类型主要分为两类:基本数据类型引用数据类型(后期讲解)。

Java 数据类型

数据类型关键字内存占用范围
字符型byte1 字节-128 ~ 127
短整型short2 字节-32768 ~ 32767
整型int4 字节-2^31 ~ 2^31 - 1
长整型long8 字节-2^63 ~ 2^63 - 1
单精度浮点数float4 字节有范围,一般不关注
双精度浮点数double8 字节有范围,一般不关注
字符型char2 字节0 ~ 65535
布尔型boolean没有明确规定true 和 false

注意:

  • 不是在16位系统还是32位系统int 在32位系统占用4个字节,long 都占8个字节。
  • 整型和浮点型都是带有符号的。
  • 整型默认是 int 类型,浮点型默认是 double
  • 字符串属于引用类型,后续会介绍。

什么是字节?

字节是计算机中表示空间大小的基本单位。

计算机使用二进制表示数据。我们认为 8 个二进制位(bit)为一个字节(Byte)。

我们平时的计算机为 8GB 内存,意思是 8G 个字节。

其中:

  • 1KB = 1024 Byte
  • 1MB = 1024 KB
  • 1GB = 1024 MB

所以 8GB 相当于 80 多亿个字节。

2.1.1 整型数据类型

整型数据类型用于表示没有小数的数字,Java 提供了以下四种整型数据类型:

  • byte:1 字节,范围从 -128 到 127。
  • short:2 字节,范围从 -32768 到 32767。
  • int:4 字节,范围从 -2^31 到 2^31 - 1。
  • long:8 字节,范围从 -2^63 到 2^63 - 1。
byte b = 100;       // byte 类型
short s = 32000;    // short 类型
int i = 1000000;    // int 类型
long l = 10000000000L;  // long 类型,L 后缀表示 long
2.1.2 浮点型数据类型

浮点型数据类型用于表示带有小数的数字。Java 提供了以下两种浮点型数据类型:

  • float:4 字节,精度较低。
  • double:8 字节,精度较高,通常用于表示科学计算中的浮点数。
float f = 3.14f;    // float 类型
double d = 3.14159; // double 类型
2.1.3 字符型数据类型

字符型数据类型用于表示单个字符,char 类型在 Java 中占用 2 字节,表示 Unicode 编码的字符,可以表示全球几乎所有语言的字符,包括中文。

char c = 'A';    // 字符类型
char ch = '1';   // 字符类型
2.1.4 布尔型数据类型

布尔型用于表示逻辑值 truefalse,它在条件判断中广泛应用。布尔类型在 Java 中的占用大小未明确规定,但通常为 1 字节。

boolean isTrue = true;   // 布尔类型
boolean isFalse = false; // 布尔类型

三、Java 中的变量

3.1 变量定义

3.1.1 变量的定义与初始化

变量是在程序运行时用于存储数据的容器。在 Java 中,定义变量时需要指定数据类型以及变量的名称,可以在定义时进行初始化。Java 中的变量通常遵循以下格式进行定义:

数据类型 变量名 = 初始值;

例如:

int a = 10;  // 定义整型变量 a 并初始化为 10
// 注意:在一行可以定义多个相同类型的变量int a1 = 10, a2 = 20, a3 = 30;
System.Out.println(a1);
System.Out.println(a2);
System.Out.println(a3);

注意:Java 是强类型语言,因此在定义变量时,必须指定其数据类型,且变量只能存储与其数据类型兼容的数据。

3.1.2 变量的作用域

变量的作用域决定了它在程序中可以访问的范围。Java 中的变量作用域包括:

  • 局部变量:在方法或代码块内部定义,只在该方法或代码块内部有效。
  • 成员变量:在类中定义的变量,可以是实例变量或静态变量。
代码示例
public class Example {int x = 5; // 成员变量public void display() {int y = 10; // 局部变量System.out.println(x); // 成员变量System.out.println(y); // 局部变量}
}

在上面的例子中,x 是成员变量,作用域是整个类。而 y 是局部变量,作用域仅限于 display 方法。


3.2 整型变量

// 方法一:在定义时给出初始值
int a = 10;
System.out.println(a);// 方法二:在定义时没有初始化值,但使用时必须设置初值
int b;
b = 10;
System.out.println(b);// 使用方法三:在一定之后,在使用前如果没有赋值,则编译期间会报错
int c;
System.out.println(c);  // 编译报错,必须初始化
c = 100;

int类型变量所能表示的范围

System.out.println(Integer.MIN_VALUE);
System.out.println(Integer.MAX_VALUE);

注意事项:

  • int 在任何系统下都只有 4 个字节。
  • 推荐使用方法一定义,如果没有合适的初始值,可以设置为 0。
  • 在写代码时留意编译器的提示,确保在使用前给变量赋初值
  • int 类型也可以使用 Integer 类来表示。

3.3 长整型变量

int a = 10;
long b = 10L;  // long 定义的长整型变量long c = 10L;  // 为了区分 int 和 long 类型,一般建议:long 类型变量的初始值后加 L
long d = 10;   // 一般可以加上 L 与与 int 不好区分

long 类型变量所能表示的范围

System.out.println(Long.MIN_VALUE);
System.out.println(Long.MAX_VALUE);

注意事项

  1. 长整型变量的初始值后加 L,推荐加 L。
  2. 长整型不在所有系统下都占用 8 个字节。
  3. 长整型的表示范围:-2^632^63 - 1
  4. long 的包装类型为 Long

3.4 短整型变量

short a = 10;
System.out.println(a);

short 类型变量所能表示的范围

System.out.println(Short.MIN_VALUE);
System.out.println(Short.MAX_VALUE);

注意事项:

  1. short 在任何系统下都占 2 个字节。
  2. short 的表示范围:-3276832767
  3. short 用途较少,通常不常使用。

3.5 字节型变量

byte b = 10;
System.out.println(b);

byte 类型变量所能表示的范围:

System.out.println(Byte.MIN_VALUE);
System.out.println(Byte.MAX_VALUE);

注意事项:

  1. byte 在任何系统下都占 1 个字节。
  2. byte 的表示范围是:-128127
  3. byte 的包装类型为 Byte

3.6 浮点型变量

3.6.1 双精度浮点型
double d = 3.14;
System.out.println(d);  // 输出 3.14

神奇的代码1

int a = 1;
int b = 2;
System.out.println(a / b); // 输出 0.5 吗?

在 Java 中,int 除以 int 的值仍是 int(会直接舍弃小数部分)。如果想得到 0.5,需使用 double 类型计算。

double a = 1.0;
double b = 2.0;
System.out.println(a / b);  // 输出 0.5

神奇的代码2

double num = 1.1;
System.out.println(num * num); // 输出 1.21 吗?

执行结果:

1.2100000000000002

注意事项:

  1. double 在任何系统下都占 8 个字节。
  2. 浮点数与整数的存储方式不同,不能单纯使用 int 类型来进行计算。
  3. double 的包装类型为 Double
  4. double 类型的内存遵循 IEEE 754 标准,具有一定的精度问题。

3.6.2 单精度浮点型
float num = 1.0f;
System.out.println(num);  // 输出 1.0F 也可以

注意事项:

  • float 类型占 4 个字节。
  • 推荐使用 double 类型,因为 double 的精度范围更大。

3.7 字符型变量

char c1 = 'a';  // 小写字母
char c2 = 'A';  // 大写字母System.out.println(c1);
System.out.println(c2);

字符输出

char c3 = ' ';  // 空格
System.out.println(c3);

注意事项:

  1. Java 中使用单引号 ' 表示单个字符的形式表示字符面值。

  2. 在计算机中,字符本质上是一个数字。在 C 语言中使用 ASCII 字符,而 Java 中使用 Unicode 字符集,一个字符占用两个字节,Unicode 可以表示更多的字符类型,包括中文。

  3. 字符的包装类型为 Character


3.8 布尔型变量

boolean b = true;
System.out.println(b);b = false;
System.out.println(b);

注意事项:

  1. boolean 类型的变量只有两种取值,true 表示真,false 表示假。
  2. Java 的 boolean 类型和 int 不能相互转换,不存在 1 表示 true0 表示 false 这样的用法。
boolean value = true;
System.out.println(value + 1);  // 代码编译会出现错误

错误示例

Test.java:4: 错误: 二元运算符 '+' 的操作数类型错误
System.out.println(value + 1);^
第一个类型:boolean
第二个类型:int
1 个错误
  1. Java 虚拟机规范中,并没有明确规定 boolean 占几个字节,也没有专门用来处理 boolean 的字节码指令,在 Oracle 公司的虚拟机实现中,boolean 占 1 个字节。

  2. boolean 的包装类型为 Boolean


四、数据类型转换

Java 中支持两种类型转换方式:自动类型转换和强制类型转换。

4.1 自动类型转换

自动类型转换是指 Java 会自动将较小范围的类型转换为较大范围的类型。例如,int 可以自动转换为 longfloat 可以自动转换为 double

代码示例

int a = 10;
long b = a;  // 自动类型转换,int 转为 long

4.2 强制类型转换

强制类型转换是将较大范围的类型强制转换为较小范围的类型。这种转换需要显式地进行,并且可能会丢失数据。

代码示例:

double d = 3.14;
int i = (int) d;  // 强制类型转换,丢失小数部分

注意:强制类型转换时,如果目标类型的范围无法表示源类型的值,可能会发生数据丢失或溢出。

4.3 其他类型转换

除了常见的整数与浮点数之间的转换,Java 还提供了字符串与数字类型的转换

代码示例:

1. int 转 String

int num = 10;
String str1 = num + ""; // 方法1:直接使用字符串拼接
String str2 = String.valueOf(num);  // 方法2:使用 String.valueOf()

2. String 转 int

String str = "100";
int num = Integer.parseInt(str);  // 将 String 转换为 int

说明:
这里字符串转换进行了简要介绍,大家可以根据需要正常使用,后续章节会详细介绍。


4.4 数值类型的精度问题

4.4.1 浮点数的精度

由于浮点数采用二进制近似存储,有时会出现精度问题。特别是在进行数学运算时,浮点数结果可能会有微小的误差。

double num = 1.1 + 2.2;
System.out.println(num);  // 输出 3.3000000000000003

解决方法:在计算结果时,可以使用 BigDecimal 来保证精确的浮点数运算。

BigDecimal bd = new BigDecimal("1.1");
bd = bd.add(new BigDecimal("2.2"));
System.out.println(bd);  // 输出 3.3
4.4.2 类型范围与溢出

Java 中每种数据类型都有其最大值和最小值。如果一个变量超出了它所能表示的范围,就会发生溢出。对于整数类型,溢出会导致数值循环回到最小值或最大值。

代码示例:

int maxInt = Integer.MAX_VALUE; // 2147483647
System.out.println(maxInt + 1);  // 结果会溢出,输出为 -2147483648

五、类型提升

不同类型的数字之间相互运算时,数据类型小的会被提升到数据类型大的。

5.1 int 与 long 之间的运算

int a = 10;
long b = 20;
int c = a + b;  // 编译错误,a + b 需要转换成 long
long d = a + b; // 正确的操作

说明:
intlong 进行运算时,int 会被提升为 long 类型,因为 long 类型的范围比 int 更大,所以结果会变为 long 类型。

5.2 byte 与 byte 的运算

byte a = 10;
byte b = 20;
byte c = a + b;  // 编译错误,a + b 会提升为 int 类型
System.out.println(c);  // 错误,编译不通过

结论:
bytebyte 是相同类型,但会在运算时提升为 int 类型,因为 CPU 通常按 4 字节来处理。为了避免类型转换错误,可以先将结果转回 byte 类型。

byte a = 10;
byte b = 20;
byte c = (byte) (a + b);  // 强制转换为 byte 类型
System.out.println(c);  // 正确

结论说明:
bytebyte 运算会被提升为 int 类型,然后再转换回 byte才能赋值给c


五、总结与展望

本文详细介绍了 Java 中的字面常量基本数据类型变量的定义与使用方法,并探讨了类型转换和类型提升等机制,可以发现相较于C语言Java在这些细节的处理更加周到,更为安全,并规范化变量的内存占用大小,这些对于Java语言的可移植性有很大的提升。掌握这些基础知识后,你将能够轻松地在 Java 中定义和操作数据类型,为后续深入学习其他 Java 相关知识奠定坚实的基础。

在接下来的文章中,我们将继续深入探讨控制结构面向对象编程等更高级的内容,帮助你更好地掌握 Java 编程。如果你对本篇文章有任何疑问,欢迎在评论区留言,我们一起讨论、一起进步!


以上就是关于【Java篇】数据类型与变量:窥见程序的天地万象内容啦,各位大佬有什么问题欢迎在评论区指正,或者私信我也是可以的啦,您的支持是我创作的最大动力!❤️
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词