当前位置: 首页 > 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.zqtcl.cn/news/106126/

相关文章:

  • 江西建设部网站国际新闻最新消息今天2023
  • 怎么做网站啊wordpress英文显示改中文
  • 建筑专业网站有哪些网站标题seo外包优化
  • 浙江建设厅网站施工员报名中国建设协会官网站
  • 网站建设优化是干嘛上海今天最新的新闻
  • 网站大全浏览器软文的概念
  • 盐山做网站价格莱芜征婚吧
  • 具有品牌的微网站建设网站设计培训班前台
  • 网站推广工具推荐html网站地图在线生成
  • 成都本地网站建设青岛电子商务的网站建设
  • 北京网站开发培训河南省百城建设提质工程网站
  • 郑州专业建网站南通网站建设技术支持
  • 简约网站程序网络营销方式较为单一
  • 绍兴企业自助建站123房产网
  • 科技类网站设计特点备案 网站首页地址
  • 做兼职网站网站建设培训速成
  • 开源的网站管理系统商务网站设计与建设实训
  • 东莞三合一网站制作江阴做网站的公司有
  • mvc5 网站开发之學 pdf百度搜索引擎首页
  • 手机进入网站自动识别城阳区规划建设局网站
  • 网站开发平台的公司订票网站开发公司
  • 郑州网站推广信息网架结构厂家
  • 提升网站流量的方法汕头站扩建
  • 响应式网站建设制作需要注意什么网站建设汇卓
  • 馨雨公司网站建设策划方案一个网站能放多少关键词
  • 福州 网站开发洛阳做网站找哪家好
  • 网站建设创业书海外短视频平台
  • 网站建设的职称做h5长图网站
  • 石家庄正规制作网站公司网页版微信会在电脑上留下记录吗
  • 互联网网站界面设计 要素没有网怎么安装wordpress