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

深圳商城网站建设公司重庆小程序软件开发公司

深圳商城网站建设公司,重庆小程序软件开发公司,贸易公司网站源码,交互式网站备案参考链接#xff1a; Java中的final最终变量 java对象的序列化 Java序列化是指把Java对象转换为字节序列的过程#xff1b;而Java反序列化是指把字节序列恢复为Java对象的过程。java中存有Cloneable接口#xff0c;实现此接口的类都具有被拷贝能力#xff0c;比new一个对象…参考链接 Java中的final最终变量 java对象的序列化 Java序列化是指把Java对象转换为字节序列的过程而Java反序列化是指把字节序列恢复为Java对象的过程。java中存有Cloneable接口实现此接口的类都具有被拷贝能力比new一个对象要快拷贝分为浅拷贝和深拷贝浅拷贝导致对象属性不彻底。 class Professor  { String name; int age; Professor(String name,int age) { this.namename; this.ageage; } } class student implements Cloneable { String name; int age; Professor p; student(String name,int age,Professor p) { this.namename; this.ageage; this.pp; } public Object clone() { student onull; try { o(student)super.clone(); } catch(CloneNotSupportedException e) { System.out.println(e.toString()); } return o; } public static void main(String[] args) { Professor pnew Professor(wang,5); student s1new student(zhangsan,1,p); student s2(student)s1.clone(); s2.p.namelisi; s2.p.age3; System.out.println(names1.p.name,ages1.p.age); } } 如代码中s2变了s1也变了说明他们指向同一个对象这就是浅复制关键是在clone方法上他并不是将对象的所有属性全拷贝过来而是选择性拷贝拷贝规则为1基本类型只拷贝其值。2实例对象拷贝其地址引用新拷贝对象原对象共用该实例。3字符串拷贝地址引用修改时会从字符串常量池中新生一个原字符串不变。解决办法在clone里新建一个对象。但是在如果大量对象都是拷贝生成每个类都写一个clone方法工程量就很大。 序列化实现对象的复制。通过字节流拷贝对象 public class CloneUtils { SuppressWarnings(unchecked) public static T extends Serializable T clone(T obj){ T cloneObj null; try { //写入字节流 ByteArrayOutputStream out new ByteArrayOutputStream(); ObjectOutputStream obs new ObjectOutputStream(out); obs.writeObject(obj); obs.close(); //分配内存写入原始对象生成新对象 ByteArrayInputStream ios new ByteArrayInputStream(out.toByteArray()); ObjectInputStream ois new ObjectInputStream(ios); //返回生成的新对象 cloneObj (T) ois.readObject(); ois.close(); } catch (Exception e) { e.printStackTrace(); } return cloneObj; } } 使用该工具类的对象必须要实现Serializable接口否则是没有办法实现克隆。无须继承cloneable接口实现clone方法。 Static关键字 Static代表全局和静态的意思可以修饰成员变量和成员方法也可修饰代码块。java的内存分配有栈和堆栈中存放基本变量数组和对象引用堆中存放对象当有static修饰的变量或方法则会为其分配固定区域切既然是静态那他作用于内是不变的删除了就不会再有。static修饰的变量是为类所共有不依赖于实例先于对象而存在任一实例修改其他实例也会使用修改后的变量值。java编程思想中有一句话static方法就是没有this的方法。在static方法内部不能调用非静态方法反过来是可以的。而且可以在没有创建任何对象的前提下仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”这段话虽然只是说明了static方法的特殊之处但是可以看出static关键字的基本作用简而言之一句话来描述就是方便在没有创建对象的情况下来进行调用方法/变量。 static修饰的变量静态变量在类加载时候完成初始化在内存中仅有一个jvm也只会为他分配一次内存所有实例共享可通过类名直接访问。实例变量与实例共存亡。在对象之间共享数据或方便访问时用静态变量。非静态变量是对象所拥有创建对象时初始化存在多个副本各个对象的副本相互不影响。静态变量的初始化顺序是按照定义的数序进行初始化。 静态方法可以通过类名直接访问Math类的所有方法都是static的不依赖于对象 可以进行访问没有对象那么静态方法是没有this的。静态方法中不可以访问非静态成员方法或变量但是非静态成员方法可以访问静态/变量。静态依赖于类普通依赖于对象的创建。 代码块静态代码块会随着类的加载一块执行而且他可以随意放可以存在于该了的任何地方。可以有多个在类初次被加载时会按照static块的顺序来执行每个块并且只执行一次。 java中的static和c中的是不一样的java中static不会影响到变量或者方法的作用域能够影响作用域的只有private、public、protected public class Test { public static void main(String[] args) { System.out.println(s.age);//报错The field s.age is not visible System.out.println(s.name); } } class s{ public static String namezhangsan; private static int age10; } private修饰的原因造成。在静态方法中没有this在非静态中通过this访问非静态成员变量会怎样。 public class Test { static int value 10; public static void main(String[] args) { new Test().show(); } private void show() { int value 1; System.out.println(this.value); } } 结果为10.this代表当前对象new Test调用show的对象就是new Test生成的对象。static变量是所有对象共享show是局部变量不可能与this关联所以输出10静态对象独立于对象但是仍可以通过对象访问。java语法规定static不允许修饰局部变量。Static也存在一些缺陷。1它只能调用static变量。2它只能调用static方法。3不能以任何形式引用this、super。 4static变量在定义时必须要进行初始化且初始化时间要早于非静态变量。无论是变量方法还是代码块只要用static修饰就是在类被加载时就已经准备好了,也就是可以被使用或者已经被执行都可以脱离对象而执行。反之如果没有static则必须要依赖于对象实例。 public class Test { Person person new Person(Test); static{ System.out.println(test static); }     public Test() { System.out.println(test constructor); }  public static void main(String[] args) { new My(); } } class Person{ static{ System.out.println(person static); } public Person(String str) { System.out.println(person str); } } class My extends Test { Person person new Person(My); static{ System.out.println(myc static); }     public My() { System.out.println(my constructor); } } test static   1、首先加载Test类执行静态代码块然后执行Mymy static 2、因没加载且其继承Test先加载Test但已加执行my其静态方法person static 3、加载后执行构造函数生成对象先初始化父类的成员变量执行new person但是没有加载person类先加载就会执行person的静态方法person Test  4、完成成员初始化。test constructor 5、完成父类构造器完成初始化person My      6、自身成员变量初始化my constructor 7/构造函数初始化 final关键字 final最终的意思他修饰的部分不会改变final修饰数据可以看做常量编译期常量永远不改变运行期初始化希望他也不变。编译期的常量在编译时即可参与运算在类加载完成后不可改变编译期常量只能用基本类型在定义时要初始化。运行期常量可以是基本类型和引用类型基本类型其值不变引用类型引用不变应用对象的内容可以变 final修饰方法最终的方法不可被继承更改使用final修饰方法是为了锁定方法父类的final方法是不能被子类所覆盖的也就是说子类是不能够存在和父类一模一样的方法的。 final修饰类不能被继承final修饰的类成员变量可以是final也可以不是成员方法默认final。 如果final修饰参数代表该参数不可改变。 final和static在一起使用时即可修饰成员变量也可修饰成员方法。对于成员变量该变量一旦赋值就不能改变我们称它为“全局常量”。可以通过类名直接访问。对于成员方法则是不可继承和改变。可以通过类名直接访问。
http://www.pierceye.com/news/106126/

相关文章:

  • 我想建一个网站怎么建微信 网站提成方案点做
  • 苏中建设集团官方网站网络推广文章的方法
  • 月嫂云商城网站建设切换国外ip的软件
  • 沧州网站建设 凯航怎么样建立一个网站
  • 百度网站地图模板在猪八戒上做网站要注意什么
  • 做美工需要哪些网站重庆交通建设集团网站
  • 网站手机端排名怎么做用笔记本做网站
  • 食药监局网站建设方案南京企业自助建站
  • 竹山县住房和城乡建设局网站红豆网桂林论坛
  • 浙江省建设网站专题网站建设的请示
  • php网站好吗红旗渠建设集团网站
  • 网站建设如何不被忽悠做营销怎样才能吸引客户
  • 代写文章兼职济南公交优化
  • 商城开发网站建立公司网站步骤
  • 查询域名注册网站泰国做网站
  • 网站图片描述怎么写社区类网站有哪些
  • 网站竞争对手的选定一般参考什么标准的网站的推广方案的内容有哪些
  • 把别人的图片拿来做网站wordpress 覆盖原始图片对比效果
  • 江门市建设工程备案网站乌兰浩特网站开发
  • 个人介绍微电影网站模板免费下载一个网站的建设成本
  • 搬瓦工怎么做网站百度小程序开发教程
  • 织梦网站被攻击小型门户网站建设方案
  • 长沙网站托管公司排名静态网站结构如何更新
  • 网站建设 宜宾湖州网站建设培训教程
  • 网站建设脚本什么叫营销型网站
  • 沧州网站建设专业的公司4000-262-seo优化与品牌官网定制
  • 网页游戏推广网站怎么做如何创建平台类网站
  • 十堰英文网站建设学校教育网站模板
  • 学校网页网站模板免费下载微信的微网站
  • 网站开发的解决方案小型行业网站建设维护成本