变量

Java变量与方法 - 图1

变量分类

  在程序中,根据变量的有效范围,将其分为成员变量和局部变量。

成员变量

  在类体中定义的变量被称为成员变量,在整个类中都是有效的。类的成员变量又可以分为静态变量和实例变量(非静态变量)。

静态变量

  使用static修饰的成员变量。例如:

  1. static int a = 1;

  注1:静态变量一定是成员变量,局部变量中没有静态变量,也就是说静态变量不能再方法中声明。

  注2:在其他语言中的全局变量相当于成员变量类变量就是静态变量

实例变量(非静态变量)

  没有使用static修饰的成员变量。

局部变量

  在类的方法体中定义的变量被称为局部变量,只在当前的代码块中有效。包括循环变量,参数变量。

  注:参数变量还包括形式参数和实际参数。

变量的生命周期

  • 静态变量:在初次访问类的时候创建,在程序结束时销毁。
  • 实例变量:在初始化对象的时候创建,在销毁对象时销毁。
  • 局部变量:方法执行时创建,方法执行结束时销毁。

重点:变量的默认值

  静态变量:类使用时具有默认值;
  实例变量:类实例化对象时具有默认值;
  局部变量:没有默认值,所以局部变量必须先声明后初始化,然后才能使用

  定义了一个静态变量a,实例变量b,局部变量c。直接用System.out.println()方法输出,变量a、b没有问题,而变量c的输出语句会报错,这就是因为c是局部变量,没有默认值,必须初始化之后才能使用。
Java变量与方法 - 图2

常量

  常量在程序中只能赋值一次。在定义常量时需要使用的关键字是final。
  当常量属于“成员变量”时,必须在声明的时候设定它的值,否则会编译错误。
  当常量属于“局部变量”时,可以在声明的时候直接赋值,也可以不直接赋值,但之后赋值只能赋值一次。

  为什么对于成员变量必须在声明的时候赋值,而局部变量可以先声明,然后在赋值?
  因为成员变量是可以有默认值的,而局部变量是没有默认值,而常量是只能被赋值一次,为了避免final成员变量被固定为默认值,所以Java设计为成员变量被final修饰时必须被赋值。

方法

方法分类

  和变量不同,类中只有成员方法,没有局部方法。
成员方法可分为静态方法和实例方法(非静态方法)

成员方法

  static修饰的方法,最常用的main方法就是静态方法。

实例方法(非静态方法)

  没有用static修饰的方法。

常用的特殊方法

  构造方法和main方法。

构造方法

特点:

  1. 构造方法名和类名一致,无返回类型。
  2. 如果类中没有自己定义的构造方法,那么使用默认的构造方法,即无参数的构造方法;但是只要你定义了构造方法,那么只能使用自己定义的构造方法。

作用:用于实例化产生类的对象。

main方法

作用:程序启动运行的入口方法。

main方法是静态方法。

输入main方法的方式:
1、建立类的时候勾选main方法的复选框。
2、输入main,按下alt + ?的快捷键生成。
3、直接输入

  1. public static void main(String[] args) {
  2. }

方法重载

  在一个类中的方法名相同,但是参数(个数/类型)不同。下面都是方法重载。

  1. void fun1(int a){
  2. }
  3. void fun1(String a){
  4. //和上面方法变量类型不同
  5. }
  6. void fun1(int a, String b){
  7. //和上面方法变量数目不同
  8. }
  9. void fun1(String a, int b){
  10. //和上面方法变量数目和类型都相同,但顺序不同。
  11. }

变量使用和方法调用

标准格式:

  • 静态变量:类名.静态变量
  • 静态方法:类名.静态方法()
  • 实例变量:对象.实例变量
  • 实例方法:对象.实例方法()

  注:对于静态变量或者方法来说,对象.静态变量或者方法()也是可以正常执行的,编辑器只会给出警告,但是并不推荐这么写。对于实例变量或者方法来说,类名.实例变量或者方法()是错误的。

简化格式:前提条件是在同一个类中

  • 实例方法中使用同一个类的成员变量或者成员方法都可以省略“.”左边的,直接使用变量名或者方法名()。
  • 静态方法中使用静态变量或者静态方法,可以省略“.”左边的,直接使用变量名。

这里涉及了两个功能修饰符——final和static,这两个关键字会在类中详细讲。