变量
1 字面量
字面量就是数据/数值,例如:2345,false,“abc”,‘好’。在现实生活中实实在在存在的数据,
在编程语言中每个数据都是有数据类型的,不同的数据类型会分配不同的内存空间去存储它,数据类型通常被分为:整数型、浮点型、字符型、布尔型、字符串型等。
整数型(数字):1、2、2345
浮点型(数字,带小数):1.0、3.14
字符型(文字,单个字符):‘a’、‘好’
布尔型(真假):true、false
字符串型(文字,多个字符):“hello world"、“你好”
Java中字符型必须用英文单引号括起来,字符串型必须使用英文双引号括起来。
public class Test1{
public static void main(String[] args){
System.out.println(1,2,2345); //整数型
System.out.println(1.0,3.14,5.21); //浮点型
System.out.println('a','A','好'); //字符型
System.out.println(true);
System.out.println(false); //布尔型
System.out.println("hello world") //字符串型
}
}
2 变量概述
public class Test2{
String name = "小明";
int age = 18;
char a = '好';
boolean sex = true;
}
上段代码中name、age、a、sex是4个变量的名字,”小明“、18、‘好’、true是4个变量中分别存储的数据(字面量),String、int、char、boolean是4个变量分别对应的数据类型。
变量要求”变量的数据类型“和变量中存储的“数据(字面量)”必须类型一致。例如:int类型就只能存下4个字节大小的整数,再长一点的就放不下了,而long类型的整数有8个字节,这样的数据肯定是无法放到int类型的变量中的。
变量,顾名思义就是可变化的量。变量中存储的数据是可以被改变的。
3 使用变量
public class Demo {
public static void main(String[] args) {
int age; //年龄
System.out.println(age);
}
}
定义一个int类型的变量,运行的时候报错了:

报错信息为:可能尚未初始化变量age,这句话的意思是age变量还没有有赋值,也就是说变量age中还没有数据,空间还没有开辟出来,由此可见,Java语言的变量必须先声明,再赋值才能访问。
赋值语法格式:变量名 = 字面量(就是值)
字面量必须和变量的数据类型一致。
public class Demo {
public static void main(String[] args) {
int age; //年龄
age = 18; //赋值语句
System.out.println(age);
}
}
// 控制台输出为 18
变量在赋值之后还可以重新赋值:
public class Demo {
public static void main(String[] args) {
int age; //年龄
age = 18; //赋值语句
System.out.println(age);
age = 22; //赋值语句
System.out.println(age);
}
} // 此时控制台输出为 22
变量的声明和赋值可以在一行代码上完成:
public class Demo {
public static void main(String[] args) {
int age = 18; //赋值语句
System.out.println(age);
}
} // 输出为 18
4 变量分类
在方法体外,类体内声明的变量称为成员变量,成员变量声明时如果使用static关键字修饰的称为静态成员变量(静态变量),如果没有使用static关键字修饰的称为实例成员变量(成员变量)。
在方法体中声明的变量以及方法的每一个参数变量都是局部变量。
public class Demo {
int a = 20; //实例变量(成员变量)
static int b = 30; //静态变量(成员变量)
//方法;int num,int c,int d都是局部变量
public static void testNum(int c,int d) {
int num = 22; //局部变量
}
局部变量只在方法体当中有效,方法开始执行的时候局部变量的内存才会被分配,当方法执行结束之后,局部变量的内存就释放了。所以局部变量的生命周期非常短暂。
5 变量作用域
-
首先要知道在方法体中代码的执行顺序是自上而下逐行执行。
-
所以说变量要先声明再赋值,再访问。
-
在main方法中声明的变量有效范围是main方法,只能在main方法中使用。
-
在类体中声明的变量作用域是整个类体,在类体中的方法体内可以访问。
public class Demo { int a = 20; //实例变量(成员变量) static int b = 30; //静态变量(成员变量) public static void main(String[] args) { System.out.println(x); //error1 System.out.println(a); //error2 System.out.println(b); //可以访问成员变量b int x = 99; System.out.println(x); //可以访问局部变量x } public static void testNum() { System.out.println(b); //可以访问成员变量b System.out.println(x);//error3 } }
error1:
变量X没有提前声明所以找不到
error2:
变量a不是static修饰的静态变量
error3:
变量x只在main方法中有效