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

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

相关文章:

  • Hilt -> Android 专属依赖注入(DI)框架
  • VESA DSC 基于FPGA DSC_Encoder IP仿真
  • ABP vNext + HBase:打造超高吞吐分布式列式数据库
  • [C#]基于winform部署PP-OCRv5的推理模型paddleocrv5模型部署
  • web端rtmp推拉流测试、抽帧识别计数,一键式生成巡检报告
  • 曲面的存在性定理
  • ServerTrust 并非唯一
  • Spring AI中使用ChatMemory实现会话记忆功能
  • Java【基础篇0】
  • 【时序预测】-Transformer系列
  • 【差分】详解二维前缀和和差分问题
  • F(x, y, z) = 0 隐函数微分 确定自变量
  • 【异常】极端事件的概率衰减方式(指数幂律衰减)
  • 【CUDA 】第5章 共享内存和常量内存——5.3减少全局内存访问(2)展开+动态共享内存
  • AI智能体|扣子(Coze)搭建【公众号对标文章采集拆解】工作流
  • 【量化】策略交易类型
  • 互联网协议IPv6
  • 解决Vscode JDK插件源码缺失问题
  • Opnelayers:封装Popup
  • HNSW - 分层可导航小世界
  • 做一个购物网站价格/什么是优化设计
  • 广州市酒店网站设计/智能建站
  • 小制作小发明手工初中/谷歌seo关键词优化
  • 海外全网推广/万秀服务不错的seo推广
  • 甘肃省城乡和建设厅网站首页/软文投放平台有哪些
  • 接效果图做网站/二十条优化措施