static 关键字 成员变量和静态变量的区别 静态使用的注意事项 静态代码块 构造代码块
2014-09-26 02:10
627 查看
static 关键字
static的特点:
1,static是一个修饰符,用于修饰成员。
2,static修饰的成员被所有的对象所共享。
3,static优先于对象存在,因为static的成员随着类的加载就已经存在了。
4,static修饰的成员多了一种调用方式,就可以直接被类名所调用 。 类名.静态成员 。
5,static修饰的数据是共享数据,对象中的存储的是特有数据。
String name;//成员变量,实例变量
static String country = "CN";//静态变量。类变量
成员变量和静态变量的区别?
1,两个变量的生命周期不同。
成员变量随着对象的创建而存在,随着对象的被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
2,调用方式不同。
成员变量只能被对象调用。
静态变量可以被对象调用,还可以被类名调用。
对象调用:p.country
类名调用 :Person.country
成员变量也称为实例变量。
静态变量称为类变量。
4,数据存储位置不同。
成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据.
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据.
静态使用的注意事项:
1,静态方法只能访问静态成员。(非静态既可以访问静态,又可以访问非静态)
2,静态方法中不可以使用this或者super关键字。
3,主函数是静态的。
静态什么时候用?
1,静态变量。
当分析对象中所具备的成员变量的值都是相同的 。
这时这个成员就可以被静态修饰。
只要数据在对象中都是不同的,就是对象的特有数据,必须存储在对象中,是非静态的。
如果是相同的数据,对象不需要做修改,只需要使用即可,不需要存储在对象中,定义成静态的。
2,静态函数。
函数是否用静态修饰,就参考一点,就是该函数功能是否有访问到对象中的特有数据。
简单点说,从源代码看,该功能是否需要访问非静态的成员变量,如果需要,该功能就是非静态的。
如果不需要,就可以将该功能定义成静态的。当然,也可以定义成非静态,
但是非静态需要被对象调用,而仅创建对象调用非静态的
没有访问特有数据的方法,该对象的创建是没有意义。
静态代码块
随着类的加载而执行。而且只执行一次。
作用:用于给类进行初始化。
构造代码块
构造代码块:是给所有的对象进行统一初始化,
在函数前用 { } 定义,
class Person { String name; static String country = "CN"; public void show() { System.out.println(country+":"+name); } } class StaticDemo { public static void main (String [] args) { Person p = new Person (); p.name ="xiaoqiang"; p.show(); } }
static的特点:
1,static是一个修饰符,用于修饰成员。
2,static修饰的成员被所有的对象所共享。
3,static优先于对象存在,因为static的成员随着类的加载就已经存在了。
4,static修饰的成员多了一种调用方式,就可以直接被类名所调用 。 类名.静态成员 。
5,static修饰的数据是共享数据,对象中的存储的是特有数据。
String name;//成员变量,实例变量
static String country = "CN";//静态变量。类变量
成员变量和静态变量的区别?
1,两个变量的生命周期不同。
成员变量随着对象的创建而存在,随着对象的被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
2,调用方式不同。
成员变量只能被对象调用。
静态变量可以被对象调用,还可以被类名调用。
对象调用:p.country
类名调用 :Person.country
class StaticDemo { int x= 4; public static void main (String [] args) { new StaticDemo().show(); //构造函数调用法 } public show() { System.out.println(num); } }3,别名不同。
成员变量也称为实例变量。
静态变量称为类变量。
4,数据存储位置不同。
成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据.
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据.
静态使用的注意事项:
1,静态方法只能访问静态成员。(非静态既可以访问静态,又可以访问非静态)
2,静态方法中不可以使用this或者super关键字。
3,主函数是静态的。
静态什么时候用?
1,静态变量。
当分析对象中所具备的成员变量的值都是相同的 。
这时这个成员就可以被静态修饰。
只要数据在对象中都是不同的,就是对象的特有数据,必须存储在对象中,是非静态的。
如果是相同的数据,对象不需要做修改,只需要使用即可,不需要存储在对象中,定义成静态的。
2,静态函数。
函数是否用静态修饰,就参考一点,就是该函数功能是否有访问到对象中的特有数据。
简单点说,从源代码看,该功能是否需要访问非静态的成员变量,如果需要,该功能就是非静态的。
如果不需要,就可以将该功能定义成静态的。当然,也可以定义成非静态,
但是非静态需要被对象调用,而仅创建对象调用非静态的
没有访问特有数据的方法,该对象的创建是没有意义。
静态代码块
随着类的加载而执行。而且只执行一次。
作用:用于给类进行初始化。
class StaticCode { static { System.out.println("Static code"); } void show() { System.out.println("show code"); } } class StaticCodeDemo { public static void main(String [] args) { new StaticCode().show(); new StaticCode().show(); } }
构造代码块
构造代码块:是给所有的对象进行统一初始化,
在函数前用 { } 定义,
class Person { String name; { //构造代码块。可以给所有对象进行初始化的。 System.out.println("wawa"); } Person() //是给对应的对象进行针对性的初始化。 { name="xiao"; } Person(String name) { this.name=name; } public void speak() { System.out.println(name); } } class Test { public static void main (String [] args) { Person a= new Person(); a.speak(); Person b= new Person("haha"); b.speak(); } }
相关文章推荐
- 12-面向对象(static关键字-成员变量和静态变量的区别-数据共享 13-面向对象(static关键字-注意事项) 14-面向对象(static关键字-main函数解析 15-面向对象(stat
- 你不可不知的static(3)-注意事项、区别成员变量、静态main
- 对象创建、static关键字、静态变量和成员变量的区别、文档
- java 成员变量 静态变量代码块 静态代码快加载顺序
- C++代码札记(一)求输入任意整数范围的阶乘、求输入任意整数X的N次幕、静态变量使用注意事项。
- 成员变量和局部变量的区别、方法的形参为类的情况及匿名对象、封装(private关键字)、this关键字、构造方法、static关键字
- 变量.注意内部链接全局变量(也声明使用静态关键字)
- String、StringBuffer、StringBuilder区别,HashMap与HashTable区别,final关键字详解及初始化成员变量位置,static关键字详解,抽象类与接口区别
- 静态(static)变量与非静态变量的区别
- 【java】static--静态变量和成员变量的区别
- static关键字的作用以及静态成员函数与非静态成员函数的区别
- 局部变量 成员变量 和static使用之静态变量
- 关于静态变量,成员变量,静态方法,实例方法的用法及区别
- static(c中定义的关键字1、被其修饰者 外部无法使用(相反的都可以使用extern在外部使用) 2、函数局部变量使用成为静态的放入静态池-生存期改变。c++进行了扩充,使它在类中有了特殊作用)
- C++ 构造函数使用 ":成员变量(形参)" 的形式给类里面成员变量赋值,如果成员变量和形参是指针,那么需要注意的事项
- static关键字:解决的问题,在内存中的特点和使用注意事项
- android 使用static 变量注意事项
- struts使用总结一:慎用actionServlet成员变量,actionServlet生命周期,actionForm生命周期,struts上传注意事项
- 什么是静态代码块?java中如何使用空参构造方法自动生成不同名字的对象,使用非静态的属性和静态属性有什么区别,原因是什么?如何理解static关键字
- Python类变量和成员变量使用中有哪些注意事项?