当前位置: 首页 > article >正文

「Java基本语法」变量的使用

变量定义

变量是程序中存储数据的容器,用于保存可变的数据值。在Java中,变量必须先声明后使用,声明时需指定变量的数据类型和变量名。

语法

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

示例:声明与初始化

public class VariableDemo {public static void main(String[] args) {int age;          // 声明变量age = 25;          // 赋值System.out.println("Age: " + age); // 输出:Age: 25}
}

运行结果

Age: 25

代码解析

  1. Java源文件保存为“VariableDemo.java”。
  2. int age声明了一个整型变量age。
  3. age = 25将值25赋给age变量。

示例:未初始化错误

public class UninitializedError {public static void main(String[] args) {int number;System.out.println(number); // 编译错误:未初始化}
}

错误原因:局部变量必须初始化后才能使用。

变量的数据类型

Java是强类型语言,变量声明时必须明确变量的数据类型。常见数据类型分为两类:

1.基本数据类型

整数:byte(1字节)、short(2字节)、int(4字节)、long(8字节)

浮点数:float(4字节)、double(8字节)

字符:char(2字节,Unicode)

布尔:boolean(1位,true/false)

2.引用数据类型

类(如String)、接口、数组等。

示例:基本类型使用

public class PrimitiveTypes {public static void main(String[] args) {byte b = 127;          // -128~127short s = 32767;       // -32768~32767int i = 2147483647;    // -2^31~2^31-1long l = 9223372036854775807L; // 添加L后缀float f = 3.14f;       // 添加f后缀double d = 3.1415926535;char c = 'A';          // Unicode字符boolean bool = true;System.out.println("byte: " + b);System.out.println("short: " + s);System.out.println("int: " + i);System.out.println("long: " + l);System.out.println("float: " + f);System.out.println("double: " + d);System.out.println("char: " + c);System.out.println("boolean: " + bool);}
}

运行结果

byte: 127
short: 32767
int: 2147483647
long: 9223372036854775807
float: 3.14
double: 3.1415926535
char: A
boolean: true

说明:Java源文件保存为“PrimitiveTypes.java”。

示例:引用类型(String)

public class StringDemo {public static void main(String[] args) {String greeting = "Hello, Java!";System.out.println(greeting); // 输出:Hello, Java!}
}

运行结果

Hello, Java!

说明:Java源文件保存为“StringDemo.java”。

变量的类型转换

类型转换分为自动类型转换和强制类型转换。

1.自动类型转换(隐式)

小范围类型 → 大范围类型。

int → long → float → double

char → int

2.强制类型转换(显式)

大范围类型 → 小范围类型(如 double → int),可能丢失精度。

示例:自动转换

public class AutoConversion {public static void main(String[] args) {int numInt = 100;double numDouble = numInt; // int → doubleSystem.out.println("numDouble: " + numDouble); // 输出:100.0}
}

运行结果

numDouble: 100.0

说明:Java源文件保存为“AutoConversion.java”。

示例:强制转换

public class ForceConversion {public static void main(String[] args) {double pi = 3.14159;int piInt = (int) pi; // double → intSystem.out.println("piInt: " + piInt); // 输出:3long bigNum = 123456789L;int smallNum = (int) bigNum; // 可能溢出System.out.println("smallNum: " + smallNum); // 输出:123456789(若未溢出)}
}

运行结果

piInt: 3
smallNum: 123456789

说明:Java源文件保存为“ForceConversion.java”。

示例:字符串转换

public class StringConversion {public static void main(String[] args) {String numStr = "123";int numInt = Integer.parseInt(numStr); // 字符串 → intSystem.out.println("numInt: " + numInt); // 输出:123String piStr = "3.14";double piDouble = Double.parseDouble(piStr); // 字符串 → doubleSystem.out.println("piDouble: " + piDouble); // 输出:3.14}
}

运行结果

numInt: 123
piDouble: 3.14

说明:Java源文件保存为“StringConversion.java”。

3.常见错误与解决方法

  1. 类型不匹配int x = "123";(编译错误)。→使用Integer.parseInt()Double.parseDouble()转换字符串。
  2. 强制转换溢出int y = (int) 1e20;(结果不可预测)。→检查数值范围避免溢出。

变量的作用域

变量的作用域决定了其可访问的范围。Java中常见作用域包括:

  1. 类变量(静态变量):用static修饰,类加载时初始化。
  2. 实例变量:属于对象,无static修饰。
  3. 局部变量:在方法或代码块中声明,仅在该范围内有效。

示例

public class ScopeDemo {static String classVar = "Class Variable"; // 类变量String instanceVar = "Instance Variable"; // 实例变量public void printVariables() {String localVar = "Local Variable"; // 局部变量System.out.println(classVar);System.out.println(instanceVar);System.out.println(localVar);}public static void main(String[] args) {ScopeDemo demo = new ScopeDemo();demo.printVariables();// System.out.println(localVar); // 错误:局部变量不可访问}
}

运行结果

Class Variable
Instance Variable
Local Variable

代码解析

  1. Java源文件保存为“ScopeDemo.java”。
  2. classVarinstanceVar可在整个类中访问。
  3. localVar仅在printVariables方法内有效。

示例:代码块作用域

public class BlockScope {public static void main(String[] args) {int x = 10;{int y = 20; // y仅在此代码块内有效System.out.println("x + y: " + (x + y)); // 输出:30}// System.out.println(y); // 错误:y不可访问}
}

运行结果

x + y: 30

说明:Java源文件保存为“BlockScope.java”。

常见错误及解决方法

1.未初始化变量

错误:int x; System.out.println(x);(编译错误)。

解决方案:声明时初始化或赋值后使用。

2.作用域错误

错误:在方法外访问局部变量。

解决方案:确保变量在正确的作用域内访问。

3.类型不匹配

错误:String s = 123;(编译错误)。

解决方案:使用String.valueOf(123)"" + 123

知识总结

  1. 变量要先声明后使用,并且要指定数据类型和名称。
  2. 基本数据类型包括int、double、char等,引用类型如String。
  3. 类型转换分自动类型转换和强制类型转换,强制转换可能丢失精度。
  4. 变量作用域决定其可访问范围,包括类变量、实例变量和局部变量。

理论练习

选择题:以下哪项是合法的变量名?

A.123name    B._age    C.class    D.int

答案:B

解析:变量名不能以数字开头,且不能是关键字。

填空题:String 类型属于____类型。

答案:引用

填空题:int 类型占____字节。

答案:4

代码分析:以下代码的输出是什么?

double d = 10.5;
int i = (int) d;
System.out.println(i);

答案:10

解析:强制转换会丢弃小数部分。

实操练习

练习:编写程序,声明并初始化一个String类型变量、一个int类型变量、一个double类型变量和一个 boolean 类型变量,输出它们的值。

答案:

public class Practice {public static void main(String[] args) {String name = "Bob";int age = 30;double price = 9.99;boolean isAvailable = true;System.out.println("Name: " + name + ", Age: " + age+ "Price: " + price + ", Available: " + isAvailable);}
}

运行结果

Name: Bob, Age: 30Price: 9.99, Available: true

说明:Java源文件保存为“Practice.java”。

练习:编写程序,将double类型变量3.14强制转换为int,并输出结果。

答案:

public class Practice {public static void main(String[] args) {double pi = 3.14;int piInt = (int) pi;System.out.println("piInt: " + piInt); // 输出:3}
}

运行结果

piInt: 3

说明:Java源文件保存为“Practice.java”。

练习:编写程序,将String类型"123.45"转换为double类型,并输出结果。

答案:

public class Practice {public static void main(String[] args) {String numStr = "123.45";double numDouble = Double.parseDouble(numStr);System.out.println("numDouble: " + numDouble); // 输出:123.45}
}

运行结果

numDouble: 123.45

说明:Java源文件保存为“Practice.java”。

练习:编写程序,演示局部变量和实例变量的作用域差异。

答案:

public class Practice {String instanceVar = "Instance"; // 实例变量public void printVars() {String localVar = "Local"; // 局部变量System.out.println(instanceVar);System.out.println(localVar);}public static void main(String[] args) {Practice p = new Practice();p.printVars();// System.out.println(localVar); // 错误:局部变量不可访问}
}

运行结果

Instance
Local

说明:Java源文件保存为“Practice.java”。

相关文章:

「Java基本语法」变量的使用

变量定义 变量是程序中存储数据的容器,用于保存可变的数据值。在Java中,变量必须先声明后使用,声明时需指定变量的数据类型和变量名。 语法 数据类型 变量名 [ 初始值]; 示例:声明与初始化 public class VariableDemo {publi…...

CMS内容管理系统的设计与实现:多站点模式的实现

在一套内容管理系统中,其实有很多站点,比如企业门户网站,产品手册,知识帮助手册等,因此会需要多个站点,甚至PC、mobile、ipad各有一个站点。 每个站点关联的有站点所在目录及所属的域名。 一、站点表设计…...

用鸿蒙HarmonyOS5实现国际象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的国际象棋小游戏的完整实现代码,使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├── …...

ZYNQ学习记录FPGA(二)Verilog语言

一、Verilog简介 1.1 HDL(Hardware Description language) 在解释HDL之前,先来了解一下数字系统设计的流程:逻辑设计 -> 电路实现 -> 系统验证。 逻辑设计又称前端,在这个过程中就需要用到HDL,正文…...

k8s从入门到放弃之Pod的容器探针检测

k8s从入门到放弃之Pod的容器探针检测 在Kubernetes(简称K8s)中,容器探测是指kubelet对容器执行定期诊断的过程,以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...

精益数据分析(98/126):电商转化率优化与网站性能的底层逻辑

精益数据分析(98/126):电商转化率优化与网站性能的底层逻辑 在电子商务领域,转化率与网站性能是决定商业成败的核心指标。今天,我们将深入解析不同类型电商平台的转化率基准,探讨页面加载速度对用户行为的…...

Java中HashMap底层原理深度解析:从数据结构到红黑树优化

一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一,是基于哈希表的Map接口非同步实现。它允许使用null键和null值(但只能有一个null键),并且不保证映射顺序的恒久不变。与Hashtable相比,Hash…...

【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space

问题:IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案:将编译的堆内存增加一点 位置:设置setting-》构建菜单build-》编译器Complier...

【阅读笔记】MemOS: 大语言模型内存增强生成操作系统

核心速览 研究背景 ​​研究问题​​:这篇文章要解决的问题是当前大型语言模型(LLMs)在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色,但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成(RA…...

Java中栈的多种实现类详解

Java中栈的多种实现类详解:Stack、LinkedList与ArrayDeque全方位对比 前言一、Stack类——Java最早的栈实现1.1 Stack类简介1.2 常用方法1.3 优缺点分析 二、LinkedList类——灵活的双端链表2.1 LinkedList类简介2.2 常用方法2.3 优缺点分析 三、ArrayDeque类——高…...

6.计算机网络核心知识点精要手册

计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法:数据与控制信息的结构或格式,如同语言中的语法规则语义:控制信息的具体含义和响应方式,规定通信双方"说什么"同步:事件执行的顺序与时序…...

基于Uniapp的HarmonyOS 5.0体育应用开发攻略

一、技术架构设计 1.混合开发框架选型 (1)使用Uniapp 3.8版本支持ArkTS编译 (2)通过uni-harmony插件调用原生能力 (3)分层架构设计: graph TDA[UI层] -->|Vue语法| B(Uniapp框架)B --&g…...

【笔记】AI Agent 项目 SUNA 部署 之 Docker 构建记录

#工作记录 构建过程记录 Microsoft Windows [Version 10.0.27871.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗ ██╗███╗ ██╗ █████╗ ██╔════╝…...

五、jmeter脚本参数化

目录 1、脚本参数化 1.1 用户定义的变量 1.1.1 添加及引用方式 1.1.2 测试得出用户定义变量的特点 1.2 用户参数 1.2.1 概念 1.2.2 位置不同效果不同 1.2.3、用户参数的勾选框 - 每次迭代更新一次 总结用户定义的变量、用户参数 1.3 csv数据文件参数化 1、脚本参数化 …...

python基础语法Ⅰ

python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器,来进行一些算术…...

C++11 constexpr和字面类型:从入门到精通

文章目录 引言一、constexpr的基本概念与使用1.1 constexpr的定义与作用1.2 constexpr变量1.3 constexpr函数1.4 constexpr在类构造函数中的应用1.5 constexpr的优势 二、字面类型的基本概念与使用2.1 字面类型的定义与作用2.2 字面类型的应用场景2.2.1 常量定义2.2.2 模板参数…...

EEG-fNIRS联合成像在跨频率耦合研究中的创新应用

摘要 神经影像技术对医学科学产生了深远的影响,推动了许多神经系统疾病研究的进展并改善了其诊断方法。在此背景下,基于神经血管耦合现象的多模态神经影像方法,通过融合各自优势来提供有关大脑皮层神经活动的互补信息。在这里,本研…...

python打卡day49@浙大疏锦行

知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...

Qt Quick Controls模块功能及架构

Qt Quick Controls是Qt Quick的一个附加模块,提供了一套用于构建完整用户界面的UI控件。在Qt 6.0中,这个模块经历了重大重构和改进。 一、主要功能和特点 1. 架构重构 完全重写了底层架构,与Qt Quick更紧密集成 移除了对Qt Widgets的依赖&…...

手动给中文分词和 直接用神经网络RNN做有什么区别

手动分词和基于神经网络(如 RNN)的自动分词在原理、实现方式和效果上有显著差异,以下是核心对比: 1. 实现原理对比 对比维度手动分词(规则 / 词典驱动)神经网络 RNN 分词(数据驱动&#xff09…...

C++中vector类型的介绍和使用

文章目录 一、vector 类型的简介1.1 基本介绍1.2 常见用法示例1.3 常见成员函数简表 二、vector 数据的插入2.1 push_back() —— 在尾部插入一个元素2.2 emplace_back() —— 在尾部“就地”构造对象2.3 insert() —— 在任意位置插入一个或多个元素2.4 emplace() —— 在任意…...

计算机系统结构复习-名词解释2

1.定向:在某条指令产生计算结果之前,其他指令并不真正立即需要该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令中需要它的地方,那么就可以避免停顿。 2.多级存储层次:由若干个采用不同实现技术的存储…...

HTML中各种标签的作用

一、HTML文件主要标签结构及说明 1. <&#xff01;DOCTYPE html> 作用&#xff1a;声明文档类型&#xff0c;告知浏览器这是 HTML5 文档。 必须&#xff1a;是。 2. <html lang“zh”>. </html> 作用&#xff1a;包裹整个网页内容&#xff0c;lang"z…...

CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)

漏洞概述 漏洞名称&#xff1a;Apache Kafka Connect JNDI注入导致的远程代码执行漏洞 CVE编号&#xff1a;CVE-2023-25194 CVSS评分&#xff1a;8.8 影响版本&#xff1a;Apache Kafka 2.3.0 - 3.3.2 修复版本&#xff1a;≥ 3.4.0 漏洞类型&#xff1a;反序列化导致的远程代…...

统计学(第8版)——统计抽样学习笔记(考试用)

一、统计抽样的核心内容与问题 研究内容 从总体中科学抽取样本的方法利用样本数据推断总体特征&#xff08;均值、比率、总量&#xff09;控制抽样误差与非抽样误差 解决的核心问题 在成本约束下&#xff0c;用少量样本准确推断总体特征量化估计结果的可靠性&#xff08;置…...

Copilot for Xcode (iOS的 AI辅助编程)

Copilot for Xcode 简介Copilot下载与安装 体验环境要求下载最新的安装包安装登录系统权限设置 AI辅助编程生成注释代码补全简单需求代码生成辅助编程行间代码生成注释联想 代码生成 总结 简介 尝试使用了Copilot&#xff0c;它能根据上下文补全代码&#xff0c;快速生成常用…...

Axure零基础跟我学:展开与收回

亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习Axure交互设计课程! Axure产品经理精品视频课https://edu.csdn.net/course/detail/40420 课程主题:Axure菜单展开与收回 课程视频:...

Docker、Wsl 打包迁移环境

电脑需要开启wsl2 可以使用wsl -v 查看当前的版本 wsl -v WSL 版本&#xff1a; 2.2.4.0 内核版本&#xff1a; 5.15.153.1-2 WSLg 版本&#xff1a; 1.0.61 MSRDC 版本&#xff1a; 1.2.5326 Direct3D 版本&#xff1a; 1.611.1-81528511 DXCore 版本&#xff1a; 10.0.2609…...

RabbitMQ 各类交换机

为什么要用交换机&#xff1f; 交换机用来路由消息。如果直发队列&#xff0c;这个消息就被处理消失了&#xff0c;那别的队列也需要这个消息怎么办&#xff1f;那就要用到交换机 交换机类型 1&#xff0c;fanout&#xff1a;广播 特点 广播所有消息​​&#xff1a;将消息…...

高保真组件库:开关

一:制作关状态 拖入一个矩形作为关闭的底色:44 x 22,填充灰色CCCCCC,圆角23,边框宽度0,文本为”关“,右对齐,边距2,2,6,2,文本颜色白色FFFFFF。 拖拽一个椭圆,尺寸18 x 18,边框为0。3. 全选转为动态面板状态1命名为”关“。 二:制作开状态 复制关状态并命名为”开…...