静态成员方法与静态成员变量【Java版】
2011-10-20 22:28
267 查看
一、类的定义
二、静态成员函数
a)只可访问静态成员变量
运行结果:
b)无法访问非静态成员变量
如果修改静态成员函数,使其访问非静态成员变量
运行结果:
说明:1)由于在调用静态成员方法时,并不会将对象的引用传递过去,因此不能访问对象的非静态成员变量
静态成员方法访问方式:“类名.静态方法”
2)而且由于静态成员方法通常以“类名.静态方法”的形式访问,如果可以访问“非静态成员变量”,那么
编译器也就无法确定:访问的“非静态成员变量”是属于哪个对象,在内存中的位置,甚至根本就还没有对象,
为避免这种情况的出现,编译器一定不会允许“静态成员方法”访问“非静态成员变量”
三、静态成员变量
静态成员变量: 位于“数据区”,无论多少个对象该变量在内存中都只有一份
非静态成员变量:位于“堆空间”,每new一个对象创建一份,因此有多少个对象该变量在内存就有多少份
a)静态成员方法访问
显然可以访问,同【二(a)】,略
b)非静态成员函数访问
运行结果:
package com.StaticKeyword; public class Staff { private static String country="China"; private int id; private String name; static void setCountryAndPrint(String _country) { country=_country;// 由于country不是专属某个特定的类,因此不能以this.country=country;的形式访问 System.out.println("The new country is : "+country); } Staff(int id,String name) { this.id=id; this.name=name; } void printCountry() { System.out.println("My country is : "+country); } }
二、静态成员函数
a)只可访问静态成员变量
public static void main(String[] args) { /*虽然也可以用staff_A.setCountryAndPrint("Japan")的形式访问,但是为了 * 体现静态方法的运行与任何具体对象都无关,故提倡用“类名.静态方法”的形式访问 */ Staff.setCountryAndPrint("Japan"); }
运行结果:
b)无法访问非静态成员变量
如果修改静态成员函数,使其访问非静态成员变量
static void setCountryAndPrint(String _country) { name="testName";// 实际上并不能访问非静态成员变量 country=_country;// 由于country不是专属某个特定的类,因此不能以this.country=country;的形式访问 System.out.println("The new country is : "+country); }
运行结果:
说明:1)由于在调用静态成员方法时,并不会将对象的引用传递过去,因此不能访问对象的非静态成员变量
静态成员方法访问方式:“类名.静态方法”
2)而且由于静态成员方法通常以“类名.静态方法”的形式访问,如果可以访问“非静态成员变量”,那么
编译器也就无法确定:访问的“非静态成员变量”是属于哪个对象,在内存中的位置,甚至根本就还没有对象,
为避免这种情况的出现,编译器一定不会允许“静态成员方法”访问“非静态成员变量”
三、静态成员变量
静态成员变量: 位于“数据区”,无论多少个对象该变量在内存中都只有一份
非静态成员变量:位于“堆空间”,每new一个对象创建一份,因此有多少个对象该变量在内存就有多少份
a)静态成员方法访问
显然可以访问,同【二(a)】,略
b)非静态成员函数访问
public static void main(String[] args) { // TODO Auto-generated method stub Staff staff_A=new Staff(1,"Evens"); staff_A.printCountry(); }
运行结果:
相关文章推荐
- java类的成员变量、静态成员变量、一般方法、静态方法
- 静态成员方法与静态成员变量【Java版】
- 静态成员方法、静态成员变量、静态块、非静态成员方法、非静态成员变量—Java
- java中类的静态代码块、构造代码块、构造方法、静态成员的初始化顺序详解
- 类的静态成员变量和静态成员函数的使用方法四
- 再探私有/公有静态成员变量与私有静态成员方法
- Java 中,为什么在静态方法中可以调用的方法、可以使用的成员变量必须是静态的?
- java的静态成员、静态方法的注意事项!
- 黑马程序员--03.Java面向对象--02.【static关键字】【main方法】【静态成员】
- Java中静态块,静态成员变量,构造块,普通成员变量,构造方法的执行顺序
- java 的main()方法为啥必须要public static void类型的??java中的静态成员
- 普通成员变量与静态成员变量的区别、普通成员方法与静态成员方法的区别
- Java 静态方法中如何操作成员变量。
- main()方法为啥必须要public static void类型的??java中的静态成员
- Java中的静态方法调用静态成员变量
- 【Java编程思想第4版错误记录】Collections.addAll()静态方法与Collection.addAll()成员方法
- java成员变量,静态成员变量,静态代码块,代码块和构造函数等加载顺序
- Android JNI反射调用Java构造方法、成员方法和静态方法
- Java类的各种成员初始化顺序如:父子类继承时的静态代码块,普通代码块,静态方法,构造方法,等先后顺序
- static的用法(一):静态成员变量和静态成员方法