package com.lean3;
/**
* 有方法出现,必然有对象
* static 静态方法:
* 1 在静态方法里只能直接调用同类中其他的静态成员,包括静态变量和方法,而不能直接访问
* 同类中的非静态成员,这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才
* 可以使用,而静态方法在使用前不用创建任何对象。
* 2 静态方法不能以任何形式引用this和super关键字,因为静态方法在使用前不用创建任何实例
* 对象,当静态方法被调用时,this所引用的对象根本就没有产生
* 3 main方法是静态的,因此JVM在执行main方法时不创建main所在类的实例对象,因而在main方法中
* 我们不能直接访问该类中的非静态成员,必须创建该类中的一个实例对象后,才能通过
* 这个对象去访问类中的非静态成员
* 静态代码块:
* 一个类中可以使用不包含在任何方法体中的静态代码块,当类被载入时,静态代码快被执行,
* 且被执行一次,静态块经常用来进行类属性的初始化
* 类中的静态代码快被自动执行,尽管我们产生了类的多个实例对象,但其中的静态代码块只被
* 执行了一次,当一个程序中用到了其他的类,当程序中用到了其他的的类,类是在第一次被使用
* 的时候才能被装载,而不是在程序启动时就装载程序中所有可能要用到的类。
*
* 静态的成员变量放置到方法区,或者叫共享区,数据区
* 静态方法中不能new内部类的实例对象
* static的特点
* 静态变量和方法属于全局的,大家共享
* 1,随着类的加载而加载
* 也就是说:静态会随着类的消失而消失。说明它的生命周期最长。
* 2,优先于对象存在
*
* 实例变量和类变量的区别:
* 1 , 存放位置:
* 类变量随着类的加载而存在于方法区中。
* 实例变量随着对象的建立而存在于堆内存中。
* 2 ,生命周期:
* 类变量生命周期最长,随着类的消失而消失。
* 实例变量生命周期随着对象的消失而消失
*
* 静态有利有弊
* 利处:对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象中都存储一份
* 可以直接被类名调用。
* 弊端: 生命周期过长
* 访问局限性,静态虽好,只能访问静态
* @author Administrator
*
*/
public class Person1 {
String name;//成员变量,实例变量
static String country = "CN";//静态成员变量,类变量
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}