变量
变量怎么使用?
先声明后使用。我们通过变量的名字(变量名)来使用变量。
//int a,b,c;
//int a = 1, b = 2, c = 3;
//为保证程序可读性,应采用固定格式
int a1 = 1;
int b1 = 2;
int c1 = 3;
String ame = "jiangaywen";
char x='x';
double pl=3.14;
变量和变量名的区别(变量的定义)
变量包括变量名,变量类型和作用域。
变量名和标识符的区别
标识符:java所有的组成部分都需要名字。
包名、类名、变量名、常量名、方法名或其他用户定义项所定义的名称都被叫做标识符。
标识符可以有一个或多个字符。
变量和对象的区别
解释1. 这里有两个概念:变量和对象
变量在线程堆栈上分配,并且随时消亡,对象在托管堆上分配,受垃圾收集器管理。所谓引用,是指变量引用对象,追究起来,其实是个指针。
变量消失不等于对象消失,因为可能有多个变量引用同一对象。当一个变量引用一个对象时,这个变量成为这个对象的根。
当对象没有根时,它就成为垃圾收集器销毁的目标。
解释2:首先变量的类型,分基本类型和引用类型。即基本变量和引用变量。
(个人理解:我们通过变量名来使用变量,再通过变量里存的地址找到指向的对象。变量当中存的是对象的地址,对象属于引用类型变量引用的对象。)
变量作用域和存放位置
本人的理解是所定义的变量,在哪些范围能够使用,能使用的这个范围称为这个变量的作用域。
- 全局变量(或称成员变量)可分两种:一种是
类
变
量
\color{red}{类变量}
类变量(静态变量),另一种是
实
例
变
量
\color{red}{实例变量}
实例变量,即在类体中定义的变量。
在类中声明的变量是成员变量,也叫全局变量,全局变量不会随着某个方法执行结束而销毁。在类中声明的变量即可是基本类型的变量 也可是引用类型的变量。
-
类变量是基本类型时,变量存在方法区,值放在常量池。常量池在方法区中,方法区是堆的一个逻辑部分。
-
类变量是引用类型时,变量存在方法区,所引用的对象放在堆。
-
实例变量是基本类型时,变量存在堆,值放在常量池。常量池在方法区中,方法区是堆的一个逻辑部分。
-
实例变量是引用类型时,变量存在堆,所引用的对象放在堆。
区别:静态变量存储于方法区,而实例变量存储于堆区。
- 局部变量
在方法中声明的变量,即该变量是 局 部 变 量 \color{red}{局部变量} 局部变量,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就放在方法栈中,当方法结束系统会释放方法栈,其对应在该方法中声明的变量随着栈的销毁而结束,这就局部变量只能在方法中有效的原因。在方法中声明的变量可以是基本类型的变量,也可以是引用类型的变量。
-
局部变量是基本类型时,变量放在方法栈,值放在JAVA虚拟机栈中。
-
局部变量是引用类型时,变量(该变量实际上是在方法中存储的是内存地址值)放在JAVA虚拟机的栈中,该变量所指向的对象是放在堆中。
类变量与实例变量的区别:
- 存储位置不同。静态变量存储于方法区,而实例变量存储于堆区。
- 生命周期不同。静态变量在加载类过程中优先加载,其生命周期取决于类的生命周期;实例变量在创建实例时才创建,它的生命周期取决于实例的生命周期。
- 引用对象不同。静态变量属于类,被类的所有实例共享,可以直接使用类名来引用也可以通过类的实例引用;而实例变量则属于某个对象,它必须在创建对象后才可以通过这个对象来使用。
- 使用方法不同。一个类只能有一个同名静态变量,无论是通过类或者任何一个实例对静态变量重新赋值,结果都是一样;而一个类创建多少个实例就会有多少个同名实例变量,各实例变量存储空间不同,对其中一个实例变量重新赋值不影响其它实例的同名变量。
//类变量 static
static double salary=2500;//static随着类存在和消失
//属性:变量
//实例变量:从属于对象;
//如果不自行初始化,值为这个类型的默认值 0 0.0
//布尔值:默认是false
//除了基本类型,其余默认都是null
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i = 10;
System.out.println(i);
//变量类型 变量名字=new Demo08();
Demo08 demo08=new Demo08();
System.out.println(demo08.age);
System.out.println(demo08.name);
//类变量
System.out.println(salary);
}
//其他方法
public void add() {
System.out.println(salary);
}
常量
注意:
- 常量用final关键字来修饰。
- 常量一般用大写字母来定义。
//修饰符,不存在先后顺序
static final double PI=3.14;
final static double PI2=3.14;
public static void main(String[] args) {
System.out.println(PI);
System.out.println(PI2);
}
变量和常量的命名规范
类名:首字母大写+驼峰命名法。
类成员变量,方法名,局部变量:首字母小写+驼峰命名法。
常量:大写字母和下划线。