当前位置: 首页 > news >正文

网站建设 新闻南京app网站开发公司

网站建设 新闻,南京app网站开发公司,咸阳做网站优化,网上自学平台文章目录类的加载特性与时机类加载的特性类加载的时机static的三个常用地方什么是静态块?特点写法静态块 static怎么用?类的加载特性与时机 在介绍static之前可以先看看类的相关 类加载的特性 在JVM的生命周期里#xff0c;每个类只会被加载一次。 类加载的原则#xf… 文章目录类的加载特性与时机类加载的特性类加载的时机static的三个常用地方什么是静态块?特点写法静态块 static怎么用?类的加载特性与时机 在介绍static之前可以先看看类的相关 类加载的特性 在JVM的生命周期里每个类只会被加载一次。 类加载的原则延迟加载能少加载就少加载因为虚拟机的空间是有限的。 类加载的时机 1第一次创建对象要加载类. 2调用静态方法时要加载类,访问静态属性时会加载类。 3加载子类时必定会先加载父类。 4创建对象引用不加载类. 5)子类调用父类的静态方法时 (1)当子类没有覆盖父类的静态方法时只加载父类不加载子类(2)当子类有覆盖父类的静态方法时既加载父类又加载子类6访问静态常量如果编译器可以计算出常量的值则不会加载类,例如:public static final int a 123;否则会加载类,例如:public static final int a math.PI。 static的三个常用地方 修饰成员变量修饰成员方法静态块 这里简单介绍一下修饰成员方法, 下面继续介绍静态块 同C是一样的概念。但是在JVM里面JVM也会划分一个暂称静态存储区用于存放方法的定义。实际上从更大的角度而言它存放的是各种类的定义当我们通过new来生成对象时会根据这里定义的类的定义去创建对象。 下面观察两段代码的输出结果加了static和没有加static的区别 public class Person {String name;int age;public String toString() {return Name: name , Age: age;}public static void main(String[] args) {Person p1 new Person();p1.name zhangsan;p1.age 10;Person p2 new Person();p2.name lisi;p2.age 12;System.out.println(p1);System.out.println(p2);}/**输出结果* Name:zhangsan, Age:10* Name:lisi, Age:12*/ }public class Person {String name;// 给age加上staticstatic int age;/* 其余代码不变... *//**输出结果* Name:zhangsan, Age:12* Name:lisi, Age:12*/ }观察输出结果的结论通过运行结果可以看到 age都为12只保存了最后一次给age赋的值。这是为什么呢在内存里面发生了什么 给age属性加了static关键字之后Person对象就不再拥有age属性了age属性会统一交给Person类去管理即多个Person对象只会对应一个age属性一个对象如果对age属性做了改变其他的对象都会受到影响。 什么是静态块? **静态代码块**执行优先级高于非静态的初始化块它会在类初始化的时候执行一次执行完成便销毁它仅能初始化类变量即static修饰的数据成员。 特点 随着类的加载而执行而且只执行一次 写法 static{ } 对应看看非静态代码块 非静态代码块 执行的时候如果有静态初始化块先执行静态初始化块再执行非静态初始化块在每个对象生成时都会被执行一次它可以初始化类的实例变量。非静态初始化块会在构造函数执行时在构造函数主体代码执行之前被运行。 非静态代码块的写法 { } 静态块 static (1) static关键字还有一个比较关键的作用用来形成静态代码块 static{}即static块 以优化程序性能。 (2) static 块可以置于类中的任何地方类中可以有多个 static 块。 (3) 在类初次被加载的时候执行且仅会被执行一次这是优化性能的原因会按照static块的顺序来执行每个static块一般用来初始化静态变量和调用静态方法。 下面通过两段代码说明 static{} 为什么能优化程序性能。 示例: /*** 每次调用isBornBoomer的时候* 都会生成startDate和birthDate两个对象造成了空间浪费*/ class Person{private Date birthDate;public Person(Date birthDate) {this.birthDate birthDate;}boolean isBornBoomer() {Date startDate Date.valueOf(1997);Date endDate Date.valueOf(2019);return birthDate.compareTo(startDate)0 birthDate.compareTo(endDate) 0;} }/*** 这里使用了static块* 只需要进行一次的初始化操作* 节省内存空间优化性能*/ class Person{private Date birthDate;private static Date startDate,endDate;static{startDate Date.valueOf(1997);endDate Date.valueOf(2019);}public Person(Date birthDate) {this.birthDate birthDate;}boolean isBornBoomer() {return birthDate.compareTo(startDate)0 birthDate.compareTo(endDate) 0;} }怎么用? 在类中定义一个静态代码块就行了然后在里面写对应的代码 小知识点 静态代码块的执行顺序静态代码块-----非静态代码块--------构造函数 面试中可能会连带着其他的知识点一起出现 比如可能会和继承知识点一起出现 示例: 父类: public class Fathers {static{System.out.println(父类中的静态代码块);}Fathers(){System.out.println(父类中的构造函数);}{System.out.println(父类中的非静态代码块);}public static void main(String[] args) {System.out.println(父类中的main方法);} } 子类 public class Sons extends Fathers{static {System.out.println(子类中的静态代码块);}Sons(){System.out.println(子类中的构造方法);}{System.out.println(子类中的非静态代码块);}public static void main(String[] args) {System.out.println(子类中的main方法);new Sons();} } 执行子类中main方法后输出 如果你想看静态代码块的特征随着类的加载而执行而且只执行一次就在父类中new一个子类就可以看出来了。 这次执行父类中的main方法: 然后跟上面的在子类中new一个sons类的结果进行对比下面这张图是父类执行main方法上面的图是子类执行main方法 可以看出来原本在子类中执行main方法由于子类继承父类所以父类中的静态代码块优先执行一次 但是在下图中是在父类中执行了main方法本身父类执行main方法就会执行一次静态代码块但是在父类中main方法new了一次子类按继承关系父类中的静态代码块应该还会执行但是控制台中却没有打印这就是因为静态代码块的特征的原因所致随着类的加载而执行而且只执行一次 参考文章(侵删): Java中的静态块static{} Java static关键字与static{}语句块 java中静态代码块详解
http://www.w-s-a.com/news/478930/

相关文章:

  • 南京门户网站建设做网站一般注册哪几类商标
  • 企业咨询管理服务wordpress seo tdk
  • 做网站前期创建文件夹flash 开发的网站
  • 天津网站制作培训搭建网站的工具
  • 江西网站建设价格低网上卖产品怎么推广
  • 做aelogo动效有什么好的网站建立网站站点的步骤
  • 无锡网站推广公司排名网站赚钱平台
  • 网站物理结构利用公共dns做网站解析
  • 苍南做网站微信建设网站哪家好
  • 华中农业大学基因编辑在线设计网站网站蓝色配色
  • 洛阳建设工程信息网站怎么在服务器建立网站
  • 陕西省建设部官方网站微信小程序怎么关闭这个功能
  • 唐河县住房和城乡建设局网站公司需要做网站
  • 体现网站特色免费个人域名网站
  • ps国外教程网站seo优化是什么职业
  • 什么是网站单页适合女生做的网站
  • 环境文化建设方案网站企业英语网站
  • 南通网站关键词推广响应式网站建设流程
  • 湖北响应式网站建设企业做漫画网站 漫画哪找
  • 东莞建设通网站中小企业网站的建设实践报告
  • 合肥网站建设电话wordpress 点击量
  • 公司网站制作注意什么wordpress如何邀请人看
  • 做渲染的网站太原做网站兼职
  • 网站开发实施方案怎么设置wordpress底栏文字
  • 网站建设朝阳学前端有必要找培训机构吗
  • 自适应网站好处wordpress ftp验证
  • 网站建设的时间免费ppt模板的网站
  • 建个人网站一般多少钱ppt下载网站哪个好
  • 网站建设比赛网站建设合同标的怎么写
  • 中国做的儿童编程网站网站建设模板网站