「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”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/news/908824.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud学习笔记-2

说明:来源于网络,如有侵权请联系我删除 1.提问:如果注册中心宕机,远程调用还能成功吗 答:当微服务发起请求时,会向注册中心请求所有的微服务地址,然后在向指定的微服务地址发起请求。在设计实…

Hac - NBh标准JSON协议使用说明文档

Hac - NBh 标准 JSON 协议使用说明文档 一、协议概述 Hac - NBh 标准 JSON 协议是专为物联网设备与服务器数据交互设计的通信协议。以 JSON 格式为基础,采用键值对(KV 值)组织数据,支持灵活选取数据项,通过 CBOR 格式实现高效传输,并利用 AES 128 加密保障数据安全。 …

k8s从入门到放弃之Service负载均衡

k8s从入门到放弃之Service负载均衡 在 Kubernetes (K8s) 中,Service 是一种抽象,它定义了一组逻辑上的 Pod 和访问它们的策略。Service 的主要目的是提供一种可靠的方式来访问一组具有相同标签(Label)的 Pod,即使这些…

【题解-洛谷】P10480 可达性统计

题目:P10480 可达性统计 题目描述 给定一张 N N N 个点 M M M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数 N , M N,M N,M,接下来 M M M 行每行两个整数 x , y x,y x,y,表示从 …

SpringCloud2025+SpringBoot3.5.0+gateway+webflux子服务路由报503

文章目录 前言一、问题二、原因1.分析2.配置静态路由再试3.定位 总结 前言 本来昨天就应该也记录下,免得忘记的,但是有点晚了,酒没写,真的是被坑惨了。 当然这也是追求最新的代价,也是对新技术、老知识点的重温…

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…

RAG 文档解析难点1:多栏布局的 PDF 如何解析

写在前面 在构建检索增强生成 (Retrieval-Augmented Generation, RAG) 应用时,高质量的数据源是成功的基石。PDF 作为一种广泛使用的文档格式,承载着海量的知识。然而,许多 PDF 文档,特别是学术论文、期刊、杂志和一些报告,都采用了多栏布局 (multi-column layout)。 直…

全面掌握Pandas时间序列处理:从基础到实战

时间序列数据在金融分析、物联网、商业智能等领域无处不在。作为Python数据分析的核心库,Pandas提供了强大而全面的时间序列处理功能。本文将系统介绍Pandas时间序列处理的各个方面,从基础概念到高级应用,帮助您在实际工作中高效处理时间序列…

vscode 离线安装第三方库跳转库

我安装的是C/C的函数跳转 下载的离线库: 项目首页 - vscode代码自动补全跳转插件离线安装包:cpptools-win32.vsix是一款专为VSCode设计的离线安装插件,特别适合无法连接网络的电脑环境。通过安装此插件,您的VSCode将获得强大的代码自动跳转…

GitHub 趋势日报 (2025年06月05日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 1472 onlook 991 HowToCook 752 ChinaTextbook 649 quarkdown 451 scrapy 324 age…

关于如何使用VScode编译下载keil工程的步骤演示

1、vscode的插件市场下载keil Assistant 2 、点设置 3、复制keil的地址 4、粘贴到第…

OD 算法题 B卷【最大岛屿体积】

文章目录 最大岛屿体积 最大岛屿体积 大于0的数表示陆地,0表示水,请计算由陆地、水组成的网格中最大岛屿的体积;陆地的数字之和表示所在岛屿的体积,岛屿总是被水包围,并且每座岛屿只能由水平或者垂直方向上相邻的陆地…

一文读懂 Docker Compose(白话版)

一、Docker Compose 是个啥? 想象你开餐厅: 单容器 一个厨师 👨🍳Docker Compose 整个后厨团队 👨🍳👩🍳🧑🍳 菜单 工作流程 用个菜单文件(…

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息&#xff0…

单例模式与锁(死锁)

目录 线程安全的单例模式 什么是单例模式 单例模式的特点 饿汉实现方式和懒汉实现方式 饿汉⽅式实现单例模式 懒汉⽅式实现单例模式 懒汉⽅式实现单例模式(线程安全版本) 单例式线程池 ThreadPool.hpp threadpool.cc 运行结果 线程安全和重⼊问题 常⻅锁概念 死…

CSS标题下划线动态进入和移开

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>CSS动态效果</title><style>div .title…

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…

鸿蒙 Stege模型 多模块应用

模块 一个鸿蒙应用可能包含一个或者多个功能模块&#xff0c;在 DevEcoStudio 工程中可以创建对应的一个或多个 Module。Module 又分为 “Ability” 和 “Library”两种类型&#xff0c;“Ability”类型的 Module 对应于编译后的 HAP&#xff08;Harmony Ability Package&…

领域LLM九讲——第4讲 构建可测评、可优化的端到端商业AI Agent 系统

领域LLM九讲——第4讲 构建可测评、可优化的端到端商业AI Agent 系统 以 OpenAI Cookbook 的《receipt_inspection》示例为基础&#xff0c;探讨如何设计一个可测试、可优化的端到端 AI Agent 系统。整体流程分为三个阶段&#xff1a; (1) 端到端 Agent 构建&#xff08;基线测…

MySQL体系架构解析(三):MySQL目录与启动配置全解析

MySQL中的目录和文件 bin目录 在 MySQL 的安装目录下有一个特别重要的 bin 目录&#xff0c;这个目录下存放着许多可执行文件。与其他系统的可执行文件类似&#xff0c;这些可执行文件都是与服务器和客户端程序相关的。 启动MySQL服务器程序 在 UNIX 系统中&#xff0c;用…