JAVA-静态方法的讨论

静态方法

概述 :

   1、静态的成员方法,只能访问静态成员变量
   2、非静态的成员方法,既可以访问静态的成员变量,也可以访问非静态成员变量

     3、访问静态成员变量和方法的语法:
       1)类名.静态成员方法名/静态成员变量名
       2)对象名.静态成员方法名/静态成员变量名(因为对象是基于类的)

内存分配:

    1、将TestStatic.class加载到方法区
   2、加载main方法进栈

代码:

public class TestStatic {
String str;//非静态的成员变量
static int num;//静态成员变量,属于对象,在堆内,栈内是引用
//静态成员方法,只能访问静态的成员变量,属于类,在栈内
Person person;

static void show(){
    //System.out.println( str);//访问不到
    System.out.println(num);//可以访问到,公有的
}

void display(){
    System.out.println("display"+num);//公有的,任何对象都可以调用
    // TestStatic ts = new TestStatic();ts.show();
    show();
    display11();
    System.out.println(str);
    System.out.println(num);
   // display11();//静态不能调用非静态
}

void display11(){
    System.out.println("display11");

}
//类类型参数作为参数
public void usePerson(Person p ){

}
class Person{
    int age =18;
}
public static void main(String[] args){
    /*TestStatic.show();
    TestStatic.num=100;
    TestStatic ts = new TestStatic();
    TestStatic ts22 = new TestStatic();*/
    TestStatic ts = new TestStatic();
    new TestStatic().display11();//匿名定义对象再调用方法,下次不能使用(未命名)
    new TestStatic().display11();//与上一个不同,堆中被分配到的内存位置不同

   // Person p = new Person();
//        System.out.println(p2.age);
}
}

猜你喜欢

转载自blog.csdn.net/qq_40825218/article/details/81415644
今日推荐