静态总结
来源:互联网 发布:台军反攻知乎 编辑:程序博客网 时间:2024/06/15 19:06
什么时候用静态呢?
1,什么时候定义静态变量(类变量)?
当对象中出现共享数据时,该数据要被静态修饰。
对象中的特有数据要定义为非静态存在于堆内存中。
什么时候定义静态函数呢?
当功能内部没有访问到非静态数据(对象中特有数据),那么该功能定义为静态函数。
静态:static
用法:是一个修饰符,用于修饰(成员变量,成员函数)。
当成员被静态修饰后,除了对象可以调用外,类名可以直接调用。
特点:static
1,随着类加载而加载。随着类的消失而消失,说明他的生命周期最长。
2,优先于对象存在,静态先存在,对象后存在。
3,被所有对象共享。
4,可以直接被类名调用。
实例变量与类变量的区别:
1,存放的位置:
类变量随着累的加载而于放法区中。
实例变量随着对象建立在堆内存中。
2,生命周期:
类变量生命周期最长,随着类的消失而消失。
实例变量生命周期随着对象的消失而消失。
静态使用的注意事项:
1,静态方法只能访问静态的成员。非静态方法可以访问静态也可以访问非静态。
2,静态方法中不可以定义this,super关键字。因为静态优先于对象存在,所以静态方法中不可以出现this。
3,主函数是静态的。
静态的利弊:
好处:对对象的共享数据进行单独空间的存储,节省空间。没有必要每一个对象都存储一份。类名可以直接调用。
弊端:生命周期长,访问出现局限性(只能访问静态)。
静态代码块加载只执行一次,优先于主函数,用于给类初始化。
静态代码块案例:
class Stud{
static{
System.out.println("a");
}
}
public class StaticDemo {
static {
System.out.println("b");
}
public static void main(String[] args) {
new Stud();
new Stud();
System.out.println("over");
}
static{
System.out.println("c");
}
}
结果:b /c / a / over
--------------------------------------
class Stud{
Stud(){
System.out.println("b");
}
static{ //静态代码块 类的初始化
System.out.println("a");
}
{ //构造代码块给对象初始化
System.out.println("c");
}
Stud(int x){ //构造函数给对应对象初始化
System.out.println("d");
}
}
public class StaticDemo {
public static void main(String[] args) {
new Stud(4);
}
}
// a c d
-----------------------------------------
Person p=new Person("zhangsan",20);
加载到内存的步骤;
1, 因为new到了一个Person.class,所以先找到Person.class文件并加载到内存中。
2,执行类中的静态代码块, 如果有,给Person.class类进行初始化。
3,在对内存中开辟空间,分配内存地址。
4,在堆内存中建立特有的属性,并进行默认初始化。
5,对属性进行显示初试化。
6,对对象进行构造代码块初始化。
7,对对象进行对应的构造函数初始化。
8,将内存地址付给栈内存中的p 变量。
非静态前面省略this. 静态前面省略类名。
class Stud{
private String name;
private int age;
static{
System.out.println("static");
}
{
System.out.println("对象init");
}
Stud(String name,int age){ //构造函数给对象对象初始化
this.name=name;
this.age=age;
System.out.println(this.name+this.age);
}
public static void method(){
System.out.println("static method");
}
}
public class StaticDemo {
public static void main(String[] args) {
Stud s=new Stud("heh",3);
}
}
static 对象init heh3
-----------------------------------------
- 静态总结
- 静态总结
- 静态类,静态成员 总结
- 页面静态化--总结
- 静态(static)总结
- 静态成员函数总结
- 静态连接总结
- static静态总结
- 静态成员函数总结
- 静态注册码追踪-- 总结
- 静态成员总结
- 静态变量总结
- 静态内部类总结
- 合并静态库总结
- 静态代理模式总结
- 静态类内容总结
- 总结领悟-----静态变量
- C++总结 ----- 静态变量和静态函数
- 深入理解模板 模板元编程
- 中国最美女黑客现身网络
- java_多态总结
- Scheduled NSTimer后台运行
- 继承
- 静态总结
- Servlet&JSP —— JSP隐式对象
- Git使用教程(二)-- Git常用命令
- android fragment
- 51单片机定时器/计数器(1)
- 互联网世界的“人工智能”——探秘“深度学习”的前世今生
- Leetcode: Largest Rectangle in Histogram
- 程序员的 59 条搞笑但却真实无比的编程语录
- Qt控件精讲三:单元组件