变量
1.1 字面量
- 软件执行过程中最主要就是对数据的处理,软件在处理数据之前需要能够表示数据,在Java代码中,用字面量表示数据
- 字面量就是数据,数据就是字面量
整型:10 100 123
浮点型:1.34 3.14 2.0
布尔型:true,false
字符型:‘a’ ‘国’
字符串型:“a” “abc” “国” “中国” - 字符型与字符串型都是描述了现实世界中的文字,所有的字符型只能使用单引号括起来,所有的字符串型只能使用双引号括起来。字符型一定是单个字符,字符串型可以是多个字符,也可以是一个字符
10:整数,是一个数字
“10”:它不是数字,是一个字符串,或者说,它属于“文字类” - 性质完全不同,在计算机中对应的二进制码也是完全不同的
1.2 变量
- 变量名属于标识符
1.2.1 变量的理解
- 只有字面量是不够的,内存无法重复使用,使用变量后,内存空间得到复用
- 什么是变量?
变量就是内存中最基本的存储单元,而且这个数据是可变的,所以叫做变量(内存空间大小由数据类型决定)
1.2.2 变量的使用
- 语法格式:
数据类型 变量名 - 变量的三要素:
数据类型(决定内存空间大小)、变量名(方便访问)、值 (变量保存的数据,就是字面量)
int i = 2 在内存中的表示:00000000 00000000 00000000 00000010 - Java中的局部变量必须先声明,再赋值才能访问(必须手动赋值)。赋值运算符:"=","="右边(字面量)先执行,执行完成后赋值给左边的变量
Java中的成员变量如果没有赋值,会有默认值,规则和数组一样
- 可以在一行上声明多个变量:
int a, b, c = 100; //a、b没有赋值,c赋值
- 可以这样每个都赋值:
int a = 10, b = 20, c = 100;
- 声明和赋值可以分开,也可以一起:
int i;
i = 100; // 先声明再赋值
int k = 200; // 声明的同时赋值
- 在“同一个域”当中,变量名不能重名,但可以重新赋值(不规范简记:一个大括号代表一个域)
{
int i = 100;
//double i = 2.0; // 重名了编译器会报错,不允许
i = 300; // 可以重新赋值
}
- 方法体当中的代码遵循自上而下的顺序依次逐行执行
1.2.3 变量的分类
链接: Java 变量严格分类及汇总
- 根据声明的位置不同可以分为:
在方法体当中声明的变量叫做局部变量
public static void main(String[] args){
//局部变量,方法执行结束之后内存释放
int k = 100;
int i = 200;
}
在方法体外类体内声明的变量叫做成员变量
public class T{
public static void main(String[] args){
}
// 成员变量
int i = 200;
}
- 成员变量声明时如果使用 static 关键字修饰的为静态成员变量(简称静态变量),如果没有 static 关键字修饰则称为实例成员变量(简称实例变量)
public class Test {
int x = 1; // 实例变量
static int y = 2; // 静态变量
public static void sum(int a, int b) { // 局部变量 a 和 b
int z = 100; // 局部变量
}
}
- 成员变量与局部变量的区别
- 内存位置不一样
局部变量:位于栈内存
成员变量:位于堆内存 - 定义的位置不一样
局部变量:在方法的内部
成员变量:在方法的外部,直接写在类当中 - 作用范围不一样
局部变量:只有方法当中才可以使用,出了方法就不能再用了
成员变量:整个类都可以通用 - 默认值不一样
局部变量:没有默认值,如果要想使用,必须手动进行赋值
成员变量:如果没有赋值,会有默认值,规则和数组一样 - 生命周期不一样
局部变量:随着方法进栈而诞生,随着方法出栈而消失
成员变量:随着对象的创建而诞生,随着对象被垃圾回收而消失
1.2.4 变量的作用域
- 什么是作用域?
变量的有效范围 - 变量的作用域:
简记:大括号之内 - Java就近原则:
离谁进访问哪个