变量 :
静态变量 : 用static修饰的变量 叫 静态变量, 是每个对象都有的值,
调用 : 类名.变量名;
对象引用.变量名(底层默认转换为类名去调用)
成员变量 : 在类体中声明的变量 叫 成员变量,
调用 : 对象引用.变量名;
局部变量 : 在方法内部 或者是方法的形参列表中 声明的变量 叫局部变量
方法 :
静态方法 : 用static修饰的方法 , 叫静态方法
调用 : 类名.方法名
对象引用.静态方法名(底层默认转换为类名去调用)
成员方法 : 没有static修饰的方法, 叫成员方法
调用 : 对象引用.成员方法名
构造方法 : 每个类都有构造方法,如果不写默认有个无参构造,可以有多个构造方法,默认是公共的(public) 静态的(static) 没有返回值的(void) 方法名和类名相同的
调用 : 实例化的时候会调用构造方法,调用构造方法的时候,默认会调用父类的无参构造
实例化
new : 分四步
1 把相对用的类文件加载到静态代码段
2 调用构造方法,在栈内存开辟空间(方法只要调用,就会在栈内存开辟空间)
3 用加载进来的类,去堆内存开辟空间,并把自身的代码复制到堆内存里面,再运行构造方法,把构造方法里面的值赋值给堆内存
4 把堆内存的内存地址 赋值给前面声明的变量
this 和 super 现在先知道一下有这么回事就行,一会咱们在讲
代码 :
public class Bian_Liang_Fang_Fa{//public修饰的类,类名必须和文件名相同,而且只有有一个
static int i = 100;//这是静态变量
int j = 100;//成员变量
public static void m_1(){//静态方法
System.out.println( "我是静态方法" );
}
public void m_2(){//成员方法
System.out.println( "我是成员方法" );
}
Bian_Liang_Fang_Fa(){//无参构造
super();//这里还会默认有个super();就算不写也会有,这是调用父类的无参构造,也必须写在构造方法的第一行,this也是在第一行;所以这俩不能再一个方法中共存,
System.out.println( "我是无参构造方法" );
}
Bian_Liang_Fang_Fa(int i ){//有参构造 里面的int i 就是局部变量
this();//this();这是调用本类的无参构造,必须写在方法的第一行
System.out.println( "我是有参构造方法" );
}
public static void main(String[] args){//main方法 程序的入口 可以说是所有程序都在main方法中执行的
Bian_Liang_Fang_Fa duixiang = new Bian_Liang_Fang_Fa(1);//这是实例化类对象 上面那四步
System.out.println( "我是静态变量 = " + i );//输出 静态变量
System.out.println( "我是成员变量 = " + duixiang.j );//输出 对象名调用成员变量
Bian_Liang_Fang_Fa.m_1();//用类名去调用静态方法
duixiang.m_1();//用对象名去调用静态方法
m_1();//都在一个作用域 就可以直接用静态方法名去调用
duixiang.m_2();//用对象去调用成员方法
}
}