package com.company;
/*
* java 的变量类型
*
* 所有的变量在使用前必须声明
*
* 类型:
* 1.类变量:独立于方法之外的变量,用static修饰
* 2.实例变量:独立于方法之外的变量,不过没有 static 修饰。
* 3.局部变量:类中的方法变量
*
* 局部变量:
* 1.声明在方法、构造方法或者句块中
* 2.创建的开始,结束的时候销毁
* 3.访问修饰不能用户局部变量
* 4.局部变量是在栈上分配的
* 5.局部变量没有默认值,所以局部变量被声明后,必须经过初始化才能被使用
*
* 实列变量:
* 1.实列变量声明在一个类中,但在方法、构造方法和语句块之外
* 2.当一个对象被实例化之后,每个实例变量的值就跟着确定
* 3.实例变量,在对象创建的时候创建,在对象销毁的时候销毁
* 4.实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
* 5.实例变量可以声明在使用前或者使用后;
* 6.访问修饰符可以修饰实例变量
* 7.一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
* 8.实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
*
* 类变量:
* 1.类变量也叫静态变量,在类中以static关键字声明,必须在方法之外
* 2.无论一个类创建类多少对象,类只拥有变量的一份拷份
* 3.静态变量除了被声明为常量外很少使用,静态变量是指声明为 public/private,final 和 static 类型的变量。静态变量初始化后不可改变
* 4.静态变量储存在静态存储区。经常被声明为常量,很少单独使用 static 声明变量
* 5.静态变量在第一次被访问时创建,在程序结束时销毁。
* 6.与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为 public 类型。
* 7.默认值和实例变量相似。数值型变量默认值是 0,布尔型默认值是 false,引用类型默认值是 null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
* 8.静态变量可以通过:ClassName.VariableName的方式访问。
* 9.类变量被声明为 public static final 类型时,类变量名称一般建议使用大写字母。如果静态变量不是 public 和 final 类型,其命名方式与实例变量以及局部变量的命名方式一致。
*
*
* 成员变量、局部变量、静态变量的区别
*
* 成员变量 局部变量 静态变量
*
* 定义位置 在类中,方法外 方法中,或者方法的形式参数 在类中,方法外
*
* 初始化值 有默认初始化值 无,先定义,赋值后才能使用 有默认初始化值
*
* 调用方式 对象调用 对象调用,类名调用
*
* 存储位置 堆中 栈中 方法区
*
* 生命周期 与对象共存亡 与方法共存亡 与类共存亡
*
* 别名 实例变量 类变量
*
*
*
* */
public class variableType {
static int aa = 1;//类变量
String haha = "你好啊";//实例变量
public String name;//实例变量 对子类实可见的
private double salary;//私有变量,仅在该类可见
private static int a;//静态的私有变量
public static final String NNN = "好的";//常量
private static int staticInt = 2;
private int staticInt2 = 2;
private static final int staticInt3 = 2;
public static final int staticInt4 = 2;
public variableType(String empName) {//构造器
name = empName;
staticInt++;
staticInt2++;
System.out.println("staticInt = " + staticInt + " staticInt2 = " + staticInt2);
System.out.println("staticInt3 = " + staticInt3 + " staticInt4 = " + staticInt4);
}
//salary 的值设定
public void setSalary(double empSal) {
salary = empSal;
}
//打印信息
public void printEmp() {
System.out.println("名字 : " + name);
System.out.println("薪水 : " + salary);
}
public static void main(String[] args) {
int a, b, c;
int d = 3, g = 2, f = 4;//局部变量
variableType vv = new variableType("西贝");
vv.setSalary(10000);
vv.printEmp();
variableType vvv = new variableType("小米");
//静态变量是用来声明规则的,一旦固定都是用用来引用的,类似社会中的法律,规定好后你只能拿来说。但是也可以改的,通过重新的声明法律就行。
}
}
网友评论