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

「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.xdnf.cn/news/12950.html

相关文章:

  • redis--黑马点评--Redisson快速入门
  • 自动化过程中,如何定位一闪而过的toast?
  • 【11408学习记录】考研数学攻坚:行列式本质、性质与计算全突破
  • Xen Server服务器释放磁盘空间
  • 什么是CRM客户管理系统?怎样的企业需要用CRM客户管理系统?
  • SQL 注入:JDO与Hibernate
  • @Lazy原理与实战
  • 商品中心—1.B端建品和C端缓存的技术文档二
  • 【动态规划】B4336 [中山市赛 2023] 永别|普及+
  • 【阅读笔记】MemOS: 大语言模型内存增强生成操作系统
  • 总结___
  • CppCon 2015 学习:Reactive Stream Processing in Industrial IoT using DDS and Rx
  • python基础day06
  • 【大模型:知识库管理】--开源工具Ragflow构建知识库
  • 多核处理器系统中内存一致性问题举例
  • 记录一次opengl显示不出物体的错误原因
  • Vite中定义@软链接
  • 【笔记】AI Agent 项目 SUNA 部署 之 Docker 构建记录
  • 期货与期权市场基本原理是什么?
  • CSS设置元素的宽度根据其内容自动调整
  • 基于django+vue的健身房管理系统-vue
  • 等待组(waitgroup)
  • 【JVM】- 内存结构
  • 【python异步多线程】异步多线程爬虫代码示例
  • 电子电路中隔离的隔离技术​
  • 力扣-35.搜索插入位置
  • 数据挖掘是什么?数据挖掘技术有哪些?
  • 技术栈RabbitMq的介绍和使用
  • React事件处理:如何给按钮绑定onClick点击事件?
  • 【技巧】dify前端源代码修改第一弹-增加tab页