1. 局部变量与成员变量
案例一:
public class Demo02 {
int age=5;//无用代码
public static void main(String[] args) {
Demo02 d =new Demo02();
d.pupAge(17);//Puppy age is: 24
}
public void pupAge(int age){
age+=7;
System.out.println("Puppy ageis: "+age);
}
}
案例二:
public class Demo01{
static String s1;//定义静态变量s1;
String s2;//定义成员变量s2;
public static void main (String[] ary){ //main方法为静态方法
Demo01d =new Demo01(); //创建对象
String s3; // 定义局部变量s3;
System.out.println("s1="+s1);
System.out.println("s2="+s2); //编译错误。不能让一个静态方法引用非静态变量s2,因为静态方法中没有默认this指针(this.);
System.out.println("s2="+d.s2); //如果需要访问,需要定义一个对象(DEMO01 d =new DEMO01();)通过对象访问静态变量和方法
System.out.println("s3="+s3); //编译错误。局部变量s3没有被初始化
//变量必须在初始化后才能使用,类变量会自动初始化成默认值,但是局部变量则不会,不初始化,无法使用.
}
}
2. 成员变量与静态变量
案例三:
package weekend02;
public class Demo05 {
static Cat catQueen; //定义一个静态变量//在类中,方法外
public static void main(String[] args) {
System.out.println(Cat.num); //0//静类变量用类名直接访问,默认初始化为“零”值(0,false,null);
Cat tom = new Cat(3); //成员变量的调用必须先创建对象
System.out.println(tom.age); //通过对象引用成员变量
Cat.num++;
System.out.println(Cat.num); //1//静类变量并不是初始化后不可改变//
tom.catFather(); //通过对象调用实例方法
tom.catColor(); //通过对象调用静态方法
catQueen.catColor(); //静态变量直接调用静态方法
catQueen.catFather(); //静态变量直接调用实例方法时,会出现空指针异常
}
}
class Cat{
static int num; //定义静态变量
int age; //定义成员变量
public Cat(int age){ //构造器(与类名相同,没有返回值,没有void)
this.age=age; //this为隐含参数,前一个age表示对象属性,后一个age表示局部变量
}
public static void catKing(){ //定义静态方法
/*
* 静态方法的定义规则及语法
*static+返回值类型/void+方法名称(参数列表) {
*方法体………
* }
*/
String name ="Boots";//定义局部变量
num=3; //静态变量赋值为3;
//age=2; //静态方法中没有隐含变量“this”,不能直接调用成员变量
//this.catFather(); //编译错误,静态方法中没有隐含参数this。
catColor(); //类中可直接调用静态方法,(Cat.catColor())_类中类名可省略
//catFather(); //不可直接调用实例方法,需先创建对象
}
static void catColor(){
System.out.println("这是一个关于猫颜色的静态方法");
}
void catFather(){
System.out.println("这是一个关于猫爸的实例方法");
}
}