(前言:此为笔者初学Java的知识点总结笔记,如有错误、遗漏或其他不足欢迎指正~)
目录
1 变量
变量是指在程序运行中,其内容可以改变的量。变量包括变量名和变量值,变量的声明格式为: 数据类型 变量名 [=初始值];
变量名要遵守标识符的命名规则,且相同作用域下不能有重复的变量名。
变量的作用域是变量的使用范围,在此范围内变量可以使用,超过作用域,变量内容则被释放。变量根据作用域的不同可分为:成员变量 和 局部变量。
1.1 成员变量
成员变量特点如下:
(1)位置及作用域:成员变量定义在类体中、方法体和语句块之外,作用域是整个类(相当于C中的全局变量)。
(2)生命周期:成员变量随着对象的创建而存在,随着对象的消失而消失。(其中静态成员变量随着类的加载而加载,随着类的消失而消失)
(3)初始化值:成员变量有默认的初始化值(整型默认值0,浮点型默认值0.0f/0.0d,字符型默认值u0000,布尔型默认值false,引用类型默认值null)
★静态成员变量:
静态成员变量,指用关键字static修饰的特殊成员变量(以下简称为 静态变量)。静态变量属于类,也称为类变量;普通成员变量属于类的对象,也称为实例变量。
普通成员变量只能被对象所调用(对象名.成员变量名) ;而静态变量既可以被对象调用(对象名.静态变量名) ,也可以被类名调用(类名.静态变量名)。
1.2 局部变量
局部变量特点如下:
(1)位置及作用域:局部变量定义在方法体或if/for/while等语句块之中,作用域是整个方法。
(2)生命周期: 局部变量随着方法的调用而存在,随着方法的调用完毕而消失。
(3)初始化值:局部变量没有默认的初始化值,必须先定义并赋值,然后才能使用。
代码演示:成员变量(静态变量)和局部变量的主要区别
public class Variable {
int m; //声明成员变量m (无须初始化)
static int n; //声明静态成员变量n
public static void main(String[] args) {
int x; // x = 10; //声明main方法中的局部变量x
float f = 3.14f; //声明main方法中的局部变量f
System.out.println("变量x="+x); //编译错误,因为局部变量x未初始化
System.out.println("变量f="+f);
if(f<5) {
int y = 8; //声明if中的局部变量y
}
System.out.println(y); //编译错误,因为超出局部变量y的作用域
/* *************** *************** */
//main方法可直接调用类中的静态变量n,也可通过类名调用
System.out.println(n);
Variable.n = 100;
//main通过类的对象调用(非静态)成员变量m,也可用对象调用n
Variable variable = new Variable();
variable.m = 50;
variable.n = 50;
variable.func();
}
//类中其他(非静态)方法可直接调用m,n
public void func() {
System.out.println("成员变量m="+m);
System.out.println("静态变量n="+n);
}
}
2 常量
常量是那些内容不能被修改的变量,常量需要初始化,且常量一旦初始化就不可以被修改。常量的声明格式为: final 数据类型 变量名 = 初始值;
(final 关键字表示最终的,它可以修饰很多元素,修饰变量就变成了常量)
常量可分为三种:成员常量,局部常量和静态常量。
(1)成员常量:定义位置、作用域和生命周期都类似于成员变量,但其值不可被修改。
(2)局部常量:定义位置、作用域和生命周期都类似于局部变量,但其值不可被修改。
(3)静态常量:类似于静态变量,用static修饰,可通过类或类的对象调用它。
代码演示:三种常量的代码示例
public class Constant {
final int n = 10; //声明Constant类的成员常量n
static final double PI = 3.14159; //声明Constant类的静态常量PI
public static void main(String[] args) {
final float x = 3.33f; //声明main方法中的局部常量x
//main方法通过类名调用静态常量PI
System.out.println("静态常量PI="+Constant.PI); //也可直接调用PI
//main方法通过对象名调用成员常量n和静态常量PI
Constant const = new Constant();
System.out.println("成员常量n="+const.n);
System.out.println("静态常量PI="+const.PI);
//main方法通过类名调用其他类中的静态常量
System.out.println("静态常量e="+Test.e);
}
}
class Test{
public static final double e = 2.71828; //Test类中声明(公共)静态常量e
}
/* 输出:
静态常量PI=3.14159
成员常量n=10
静态常量PI=3.14159
静态常量e=2.71828
*/