丶Ruby 2017-04-17 13:44 采纳率: 0%
浏览 922

java 中 static问题,并讲解静态块

class Loo{
int a;
static int b;
Loo(){
a++;
b++;
}
void show(){
System.out.println("a="+a);
System.out.println("b="+b);
}
}

public static void main(String[] args) {
    Loo o1=new Loo();
    o1.show();
    Loo o2=new Loo();
    o2.show();
    }
    为什么  两次的b值不一样,两次的a值是一样的?
    求讲解static{}方法。
  • 写回答

4条回答 默认 最新

  • 无言·道道道 2017-04-17 14:20
    关注

    static修饰变量为静态变量,内存中只有一份所有实例对象共享此变量,类加载时进行初始化。所以第一次创建o1时调用b++,b=1;创建o2时更新此变量b=1,
    再次调用构造方法b++,b=2.而a作为成员变量,是属于具体的某个实例的,每次创建都会进行初始化。
    static{},为静态代码块。类加载时执行,先于构造方法。执行顺序按照静态代码块顺序

    评论

报告相同问题?

悬赏问题

  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?