/*
* 静态函数的生命周期:静态的成员变量数据是优先于对象存在的。
* static什么时候修饰一个函数?
* 如果一个函数没有直接的访问到非静态的成员时,那么就可以使用static修饰。一般用于工具类型的方法。
*
* 没有使用static修饰的成员变量和方法都必须使用对象来调用。Java编程时不要使用对象去调用static修饰
* 的成员变量和方法,而是应该使用类去调用static修饰的成员变量和方法。
*
* 静态函数要注意的事项:
* 1.静态函数是可以用类名或对象进行调用。而非静态的函数只能通过对象进行调用。
* 2.静态函数可以直接访问静态的成员,但是不能直接访问非静态的成员。
* 原因:静态函数是可以通过类名进行调用的,这时候还没有存在对象,而非静态的成员数据是随着对象的存在而存在的。
* 3.非静态的函数是可以直接访问静态与非静态的成员。
* 原因:非静态的函数只能由对象调用,当对象存在时,静态数据早就已经存在了,而非静态的数据也睡着对象的创建而存在。
* 4.静态函数不能出现this或者super关键字。
* 原因:因为静态函数是可以使用类名进行调用的,一旦使用类名调用这时候不存在对象,而this关键字总是指向调用该方法的对象。
*静态成员变量和非静态成员变量的区别:
* 1.作用上的区别:
* 1.静态的成员变量作用是共享一个数据给所有对象使用。
* 2.非静态的成员变量作用是描述一类事物的公共属性。
* 2.数量与存储位置上的区别:
* 1.静态的成员变量是存储在方法区的内存中,而且只会存在一份数据。
* 2.非静态的成员变量是存储在堆内存中,有n个对象就会有n份数据。
* 3.生命周期的区别:
* 1.静态的成员变量数据是随着类的加载而存在,随着类文件的消失而消失。
* 2.非静态的成员数据是随着对象的创建而存在,随着对象被垃圾回收器回收而消失。
* 静态函数的生命周期:静态的成员变量数据是优先于对象存在的。
* static什么时候修饰一个函数?
* 如果一个函数没有直接的访问到非静态的成员时,那么就可以使用static修饰。一般用于工具类型的方法。
*
* 没有使用static修饰的成员变量和方法都必须使用对象来调用。Java编程时不要使用对象去调用static修饰
* 的成员变量和方法,而是应该使用类去调用static修饰的成员变量和方法。
*
* 静态函数要注意的事项:
* 1.静态函数是可以用类名或对象进行调用。而非静态的函数只能通过对象进行调用。
* 2.静态函数可以直接访问静态的成员,但是不能直接访问非静态的成员。
* 原因:静态函数是可以通过类名进行调用的,这时候还没有存在对象,而非静态的成员数据是随着对象的存在而存在的。
* 3.非静态的函数是可以直接访问静态与非静态的成员。
* 原因:非静态的函数只能由对象调用,当对象存在时,静态数据早就已经存在了,而非静态的数据也睡着对象的创建而存在。
* 4.静态函数不能出现this或者super关键字。
* 原因:因为静态函数是可以使用类名进行调用的,一旦使用类名调用这时候不存在对象,而this关键字总是指向调用该方法的对象。
*静态成员变量和非静态成员变量的区别:
* 1.作用上的区别:
* 1.静态的成员变量作用是共享一个数据给所有对象使用。
* 2.非静态的成员变量作用是描述一类事物的公共属性。
* 2.数量与存储位置上的区别:
* 1.静态的成员变量是存储在方法区的内存中,而且只会存在一份数据。
* 2.非静态的成员变量是存储在堆内存中,有n个对象就会有n份数据。
* 3.生命周期的区别:
* 1.静态的成员变量数据是随着类的加载而存在,随着类文件的消失而消失。
* 2.非静态的成员数据是随着对象的创建而存在,随着对象被垃圾回收器回收而消失。
* */
public class Demo{
public static void main(String[] args){
Student.study();
System.out.println(Student.country);
}
}
class Student{
String name;
static String country="中国";
public Student(String name){
this.name=name;
System.out.println(this.name);
}
public static void study(){
System.out.println("好好学习");
}
}
运行结果:
好好学习
中国