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

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

文章目录

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 中的变量作用域包括:

  • 局部变量:在方法或代码块内部定义,只在该方法或代码块内部有效。
  • 成员变量:在类中定义的变量,可以是实例变量或静态变量。
代码示例:
publicclassExample{int x =5;// 成员变量publicvoiddisplay(){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 类型变量的初始值后加 Llong 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 第二个类型:int1 个错误 
  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 =newBigDecimal("1.1"); bd = bd.add(newBigDecimal("2.2"));System.out.println(bd);// 输出 3.3
4.4.2 类型范围与溢出

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

代码示例:

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

五、类型提升

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

5.1 int 与 long 之间的运算

int a =10;long b =20;int c = a + b;// 编译错误,a + b 需要转换成 longlong 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篇】数据类型与变量:窥见程序的天地万象内容啦,各位大佬有什么问题欢迎在评论区指正,或者私信我也是可以的啦,您的支持是我创作的最大动力!❤️

在这里插入图片描述

Read more

揭秘VSCode Copilot无法登录原因:5步快速恢复访问权限

第一章:VSCode Copilot无法登录问题概述 Visual Studio Code(VSCode)中的GitHub Copilot作为一款智能代码补全工具,极大提升了开发者的编码效率。然而,在实际使用过程中,部分用户频繁遭遇Copilot无法正常登录的问题,导致功能受限或完全不可用。该问题可能由多种因素引发,包括网络连接异常、身份验证失效、插件配置错误或系统环境限制等。 常见表现形式 * 点击“Sign in to GitHub”后无响应或弹窗无法加载 * 登录完成后仍提示“GitHub authentication failed” * Copilot状态始终显示为“Not signed in” 基础排查步骤 1. 确认网络可正常访问GitHub服务,必要时配置代理 2. 检查VSCode是否已更新至最新版本 3. 重新安装GitHub Copilot及GitHub Authentication扩展 验证身份认证状态 可通过开发者工具查看认证请求是否成功发出。在VSCode中按 F1,输入 Developer: Open

By Ne0inhk
AIGC赋能插画创作:技术解析与代码实战详解

AIGC赋能插画创作:技术解析与代码实战详解

文章目录 * 一、技术架构深度解析 * 二、代码实战:构建AIGC插画生成器 * 1. 环境配置与依赖安装 * 2. 模型加载与文本提示词构建 * 3. 图像生成与参数调优 * 4. 风格迁移与多模型融合 * 三、进阶技巧:参数调优与效果增强 * 四、应用场景代码示例 * 1. 游戏角色设计 * 2. 广告海报生成 * 五、技术挑战与解决方案 * 六、未来趋势:AIGC插画创作生态 * 七、完整项目代码仓库 * 结语:重新定义插画创作边界 * 《一颗柚子的插画语言》 * 内容简介 * 作者简介 * 目录 * 前言 在数字艺术领域,AIGC(AI-Generated Content)技术正以指数级速度革新插画创作范式。下面将通过技术原理剖析与完整代码实现,展示如何从零构建AIGC插画生成系统,涵盖环境搭建、模型调用、参数调优到风格迁移全流程。 一、技术架构深度解析 AIGC插画生成的核心基于扩散模型(

By Ne0inhk

Llama Factory时间旅行:比较不同版本基座模型的微调效果

Llama Factory时间旅行:比较不同版本基座模型的微调效果 为什么需要比较不同版本的基座模型 在AI模型迭代过程中,研究团队经常面临一个关键问题:新版本的基座模型到底带来了哪些实质性改进?传统做法需要手动下载不同版本模型、配置独立环境、处理版本冲突,过程繁琐且容易引入变量干扰。Llama Factory的"时间旅行"功能正是为解决这一痛点而生。 这类对比实验通常需要GPU环境支持。目前ZEEKLOG算力平台提供了包含Llama Factory的预置镜像,可快速部署验证。通过该镜像,我们可以轻松加载历史版本模型,在相同数据集和参数下进行公平对比。 快速部署Llama Factory微调环境 1. 在GPU算力平台选择预装Llama Factory的镜像(建议选择PyTorch+CUDA基础环境) 2. 启动实例后,通过终端验证环境是否就绪: python -c "import llama_factory; print(llama_factory.__version__)" 1. 准备实验所需的基础模型版本(以LLaMA-3系列为例): mkdir -p

By Ne0inhk
【AIGC前沿】MiniMax海螺AI视频——图片/文本生成高质量视频

【AIGC前沿】MiniMax海螺AI视频——图片/文本生成高质量视频

目录 1.MiniMax海螺AI视频简介 2.使用教程 1.MiniMax海螺AI视频简介 海螺视频,作为 MiniMax 旗下海螺 AI 平台精心打造的 AI 视频生成工具,致力于助力用户产出高品质视频内容。该工具依托 abab-video-1 模型,具备强大的文生视频功能。用户仅需输入关键词或简短语句,海螺视频就能据此创作出情节丰富的完整视频。此外,海螺视频运用 DiT 架构,能够精准模拟现实世界的物理规律,尤其在生成复杂场景与高动作场景时,展现出卓越的性能。 2.使用教程 点击如下链接,进入蓝耘元生代智算云平台主页 https://cloud.lanyun.net/#/registerPage?promoterCode=11f606c51e 点击主页上方栏的“MaaS平台” 然后点击左侧栏的“视觉模型”  可以看到可以免费体验一次I2V-01图片生成视频  点击如下红框处将图片上传  例如输入如下的图片 例如想让小狗动起来,可以在如下红框处输入相应的指令,然后点击立即生成

By Ne0inhk