java常量 变量

目录

一.常量

1.含义

2.声明方法

3.举例

二.变量

1.类的成员变量

1.1静态变量

1.2实例变量

2.局部变量


一.常量

1.含义

在程序运行过程中,一直不会改变的量叫常量(constant),通常也被称为“final变量”,常量在整个程序中只能被赋值一次。

Java中声明一个常量,除了指定的类型,还必须通过“final”关键字进行限定。

2.声明方法

final 数据类型 常量名称 = 值

3.举例

final double PI = 3.1415926;
final boolean BOOL = true;
final int number;  //对常量number
number = 1233;     //赋值
number = 2311;    //错误代码! 因为常量只能赋值一次

二.变量

根据变量的有效范围,将变量划分成“成员变量”和“局部变量”。

1.成员变量

类体中所定义的变量称为成员变量,成员变量在整个类中有效,成员变量分为静态变量和实例变量。

1.1静态变量(也称类变量)

当在成员变量类型前加上关键字static,这样的成员变量称为静态变量,静态变量的有效范围可以跨越类,甚至可达到整个应用程序之内。静态变量在其他类中使用时,可采用“类名.静态变量”的方式在其他类中使用。静态变量一旦有一个引用并修改他,那么其他引用时,也是改后的状态,说明static修饰的变量其值被类中所有的实例变量所共享,不会在每个对象下的内存中重新存储,而是会在系统的内存中存储一份静态变量的数据。

1.2实例变量

int a = 1;          //实例变量
static int b = 1;   //静态变量

2.局部变量

类方法体{}之间定义的变量,只在当前代码块中有效。

在类方法中声明的变量,包括方法的参数等,都属于局部变量,只在当前定义的方法内有效,不能用于其他类的其他方法中。

局部变量可与成员变量名字相同,当使用时,成员变量将被隐藏,即这个成员变量在此方法中暂时失效。

<think>嗯,用户让我介绍一下Java中的常量变量。首先,我需要回忆一下Java的基础知识,确保自己理解正确。常量Java中通常指的是不可改变的值,而变量则是可以变化的。我记得Java里有几种方式可以定义常量,比如使用final关键字,或者用枚举类型,还有静态常量变量的话,基本数据类型和引用类型变量,作用域也有不同,比如局部变量、实例变量、类变量等等。 首先,我应该分清楚常量变量定义和区别。常量一旦赋值就不能再修改,而变量可以。然后,要详细说明常量的不同类型,比如基本类型常量引用类型常量,以及它们的声明方式。例如,使用final来声明一个常量,并且需要初始化,否则会报错。静态常量的话,可能会用static final组合,这样属于类的常量,所有实例共享。 对于变量,需要解释不同的作用域。局部变量在方法内部声明,必须初始化后才能使用;实例变量属于对象,每个实例有独立的副本;类变量是静态的,属于类本身。此外,还要提到变量的命名规则,比如驼峰命名法,不能使用保留字等等。 可能用户还希望了解常量变量在内存中的存储位置。比如,局部变量在栈内存,实例变量在堆内存,而静态常量可能在方法区。这部分如果用户没有特别提到,可能需要简单带过,避免过于深入。 另外,要举一些例子来说明,比如如何声明一个final常量,或者静态常量的例子。变量的话,可以举局部变量和实例变量的例子。代码示例可以帮助用户更好地理解。 还要注意可能的常见错误,比如尝试修改final常量会导致编译错误,或者局部变量未初始化就使用的问题。这些常见问题需要提出来,帮助用户避免犯错。 最后,根据用户的要求,生成相关的问题。问题应该围绕常量变量展开,比如常量定义方式、变量的作用域、final关键字的作用、静态常量的特点等等。确保问题覆盖回答中的关键点,帮助用户巩固知识。 现在整理一下结构,先回答常量变量定义,然后分别详细介绍它们的类型、声明方式、作用域、示例代码,以及常见错误和注意事项。最后列出相关问题。</think><< **Java 常量变量详解** ### 一、常量(Constants) **定义**:常量是程序运行期间不可修改的值,通过`final`关键字定义。 #### 1. **基本类型常量** ```java final int MAX_VALUE = 100; final double PI = 3.14159; ``` **特点**: - 必须初始化,且不能重新赋值。 - 命名规范:全大写字母,单词间用下划线分隔。 #### 2. **引用类型常量** ```java final String DEFAULT_NAME = "Unknown"; final List<String> IMMUTABLE_LIST = Collections.unmodifiableList(new ArrayList<>()); ``` **注意**:引用类型常量指向的对象内容可能可变(除非对象本身不可变)。 #### 3. **静态常量** ```java public static final String APP_VERSION = "1.0.0"; ``` **特点**: - 属于类而非对象,通过`static final`定义。 - 常用于全局配置(如枚举、接口常量)。 --- ### 二、变量(Variables) **定义**:变量是存储数据的内存单元,值可修改。 #### 1. **变量分类** - **局部变量**: ```java void method() { int count = 0; // 必须显式初始化 count = 10; // 允许修改 } ``` **作用域**:仅在声明的方法或代码块内有效。 - **实例变量(成员变量)**: ```java class Person { String name; // 默认初始化为null int age; // 默认初始化为0 } ``` **特点**: - 属于对象,生命周期与对象一致。 - 默认有初始值(如`int`为0,`boolean`为`false`)。 - **类变量(静态变量)**: ```java class Counter { static int totalCount = 0; // 类加载时初始化 } ``` **特点**: - 通过`static`声明,所有对象共享。 #### 2. **变量命名规则** - 驼峰命名法(如`userName`)。 - 不能以数字开头,不能使用关键字(如`class`)。 --- ### 三、常量变量对比 | 特性 | 常量 | 变量 | |--------------|--------------------------|--------------------------| | 可修改性 | 不可修改 | 可修改 | | 关键字 | `final` | 无 | | 内存分配 | 编译期可能优化(如内联) | 运行时动态分配 | --- ### 常见问题与错误 1. **未初始化的常量**: ```java final int x; // 编译错误:未初始化 ``` 2. **尝试修改常量**: ```java final int x = 10; x = 20; // 编译错误:无法赋值 ``` 3. **局部变量未初始化**: ```java int y; System.out.println(y); // 编译错误:可能未初始化 ``` ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值