java之静态(static)总结
来源:互联网 发布:手机淘宝降价提醒设置 编辑:程序博客网 时间:2024/06/05 04:20
静态:static
用法:是一个修饰符,用于修饰成员变量或成员函数,当成员被static修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用,调用格式,类名.静态成员。
特点:
1,随着类的加载而加载,也就是说静态会随着类的消失而消失,说明它的生命周期最长
2,被所有对象共享。
3,优先于对象存在*静态先存在,对象后存在
4,可以直接被类名调用
实例变量与类变量的区别:
1,存放位置
类变量随着类的加载而加载存在与方法区中
实例变量随着对象的建立而存在于堆内存中
2,生命周期
类变量生命周期最长,随着类的消失而消失
实例变量随着对象的消失而消失
static使用注意事项:
1,静态方法只能访问静态变量
非静态方法既可以访问静态变量也可以访问非静态变量
2,静态方法中不可以定义this,super关键字
因为静态优先于对象存在,this,super关键字是对对象的调用
static的利害:
利:对对象的共享数据进行单独空间的存储,节省空间,没必要每一个对象都存储一份
害:生命周期过长,访问出现局限性。
什么时候定义静态变量?
当对象中出现共享数据,该数据被静态所修饰,对象中的特有数据要定义成非静态数据存在于堆内存中。
什么时候定义静态方法?
当功能内部没有访问到非静态数据,那么该功能可定义成静态的。
静态代码快
格式:
static
{
执行语句;
}
特点:随着类的加载而加载,只执行一次,并优于主函数执行,用于给类进行初始化。
静态代码快与构造代码快区别
静态代码块用于给类进行初始化,构造代码块用于给对象进行初始化。
示例:
class StaticCode
{
//静态代码块
static
{
System.out.println("a");
}
}
class Half
{
//静态代码块
static
{
System.out.println("b");
}
public static void main(String[] args)
{
new StaticCode();
new StaticCode();
System.out.println("over");
}
//静态代码块
static
{
System.out.println("c");
}
}
//打印结果:b c a over。首先加载类Half 执行语句打印出b c再找到主函数执行主函数中语句
有两句new StaticCode();但只执行一次,打印a,最后打印出over
****执行顺序
静态代码块》构造代码块》构造函数
内存建立讲解:
person p=new person("zhangsan",20)
1,因为new用到person.class会先找到person.class文件并加载到内存中
2,执行该类的静态代码块,如有给person.class进行初始化
3,在堆内存中开辟空间,分配内存地址
4,在堆内存中建立对象特有属性,并进行默认初始化
5,对属性进行显示初始化
6,对对象进行构造代码块初始化
7,对对象进行对应的构造函数初始化
- java之静态(static)总结
- 静态(static)总结
- java基础之static(静态)
- java基础知识之静态:static
- Java基础之静态static
- JAVA之static 总结
- Static(静态)关键字总结
- 【Java总结】static,静态代码块
- Java静态(static)关键字
- java之static关键字总结
- Java之静态内部类(static class)
- java基础之静态导入 static import
- Java 中的 static 使用之静态方法
- Java之静态内部类(static class)
- Java 中的 static 使用之静态方法
- Java之静态内部类(static class)
- Java之静态内部类(static class)
- Java学习之静态修饰符:static
- Log4j.properties配置详解
- redis命令学习
- 线程范围类的共享数据
- 特殊场合
- 保护眼睛的电脑设置
- java之静态(static)总结
- 安卓应用自动化测试工具
- Django groundwork在Django1.4以上的版本的问题解决 .
- m、mm、mmm命令差异
- NFC简介
- ISO C90 forbids mixed declarations and code 警告
- 快速求质数办法
- 转载不女人唯独你不可以平庸
- 网卡驱动:设备挂起恢复-netif_device_attach/netif_device_detach