Static关键字

static 来修饰方法 : 有点类似OC中的类方法 :

1.只能用类名来调用

2.类中是不允许访问属性。

 

1. 访问方式:

1.可以通过对象来访问

对象.方法名();

2.可以通过类名来访问

       .方法名();

  推荐使用类名调用。

2. 作用:

             1.用来修饰成员变量

             2.用来修饰方法

 

3. Static修饰方法的使用注意点:

1.静态方法可以用对象和类名调用。非静态方法只能用对象来调用。

2.静态方法是可以访问静态的成员变量,不能够访问非静态的成员变 量。非静态方法中可以访问任何成员变量。

原因:有可能静态方法被调用了,但是对象还没有被创建出来。

3.静态方法可以直接访问静态方法,但是不能访问非静态方法.非静态方法是可以访问静态方 法。

原因:有可能静态方法被调用了,但是对象还没有被创建出来 ,非静态方法只能由对象调用。

         如果对象被创建出来,静态方法早就存在内存中了。

4.静态方法中是不允许出现this关键字和super关键字

this : 表示一个方法调用者对象。

可能对象没有被创建出来。

 

//特点 :

静态的数据早于非静态的数据存在内存中。

 

4. 什么情况下使用static来修饰方法:

当一个方法不需要直接放味非静态数据,这个时候就可以用static修饰 (定义工具类)

代码实例一:

class Student{

 

 

String name; // 非静态的成员变量

static String country; // 静态的成员变量

 

public Student(String name){

this.name = name;

}  

 

//公有的方法

public void study(){

eat(); //非静态是可以调用静态的方法。

 

System.out.println(name+"正在学生");

}

 

//用static 来修饰吃饭的方法

//结构上就是在public后面多了一个static

//静态方法

public static void eat (){

 

//study(); 不允许调用非静态方法。

sleep();

 

System.out.println(country+"正在吃饭");

}

 

//静态方法

public static void sleep (){

 

System.out.println("学生在睡觉");

}

}

 

class Demo4 {

 

//静态方法

public static void main(String[] args){

 

 

Student s = new Student("张三");

s.study();

s.country = "中国";

//调用吃饭的方法

//Student.eat();

s.eat();

 

}

 

 

代码实例二:

class Student{

 

 

String name; // 非静态的成员变量

static String country; // 静态的成员变量

 

public Student(String name){

this.name = name;

}  

 

//静态代码块

//编译的java.class文件被使用的时候就执行了.

static{

System.out.println("我是静态代码块");

}

 

//公有的方法

public void study(){

 

eat(); //非静态是可以调用静态的方法。

 

System.out.println(name+"正在学生");

}

 

//用static 来修饰吃饭的方法

//结构上就是在public后面多了一个static

//静态方法

public static void eat (){

 

//study(); 不允许调用非静态方法。

sleep();

 

System.out.println(country+"正在吃饭");

}

 

//静态方法

public static void sleep (){

 

System.out.println("学生在睡觉");

}

}
 

class Demo5 {

 
//静态方法

public static void main(String[] args){

 

Student.eat();

 

/*

Student s = new Student("张三");

s.study();

s.country = "中国";

//调用吃饭的方法

//Student.eat();

s.eat();

*/

 

}

}

 

posted @ 2016-11-26 11:04  彬之华666  阅读(174)  评论(0编辑  收藏  举报