static 关键字 成员变量和静态变量的区别 静态使用的注意事项 静态代码块 构造代码块
来源:互联网 发布:开源微信商城系统php 编辑:程序博客网 时间:2024/05/21 22:52
static 关键字
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();}}
- static 关键字 成员变量和静态变量的区别 静态使用的注意事项 静态代码块 构造代码块
- 构造函数,this关键字,及静态方法,静态变量成员变量,静态代码块,构造代码块的问题
- 代码块的解释,构造代码块,静态代码块,静态常量和常量以及静态成员变量和对象成员变量的区别
- java 静态代码块、静态变量、成员变量、构造代码块、构造方法的执行顺序
- static 静态变量和静态代码块的执行顺序
- Java的静态变量,成员变量,静态代码块,构造块的加载顺序
- 【JAVA】static 修饰的静态成员变量,静态成员函数及静态代码块
- java的静态变量,静态代码块和静态变量
- 静态成员变量静态代码块和构造方法的执行顺序
- Java静态变量 静态代码块 主函数 成员变量 构造代码块 构造函数的执行顺序
- static静态变量,静态方法和静态代码块
- 类的加载、创建对象、静态变量static、构造函数、静态代码块、构造代码块、构造方法以及总结
- static变量 静态方法 静态代码块
- Java普通代码块,构造代码块,静态代码块,成员变量的执行顺序的代码实例
- 关于静态变量,静态代码块,实例变量,实例代码块,构造函数的执行顺序
- 静态代码块和构造代码块的区别
- 静态代码块、静态变量、构造代码块、构造方法的执行顺序
- 静态变量和静态代码块的执行顺序
- zookeer集群 异常java.net.NoRouteToHostException: No route to host
- ubuntu 开启 ssh 服务
- ue4在关卡之间插入过场动画(播放视频)
- FOJ1504 Play Poker
- FOJ1341 Gopher II
- static 关键字 成员变量和静态变量的区别 静态使用的注意事项 静态代码块 构造代码块
- Oracle 在dos命令下导出导入
- 分布式监控系统ganglia配置文档
- POJ1595_Prime Cuts【素数】【水题】
- Thinkpad x60 Bios设置指南
- ssl双向验证
- 主函数!
- ubuntu jdk 安装与配置
- MATLAB 并行工具箱