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

广东省住房和建设局网站电商购物网站建设

广东省住房和建设局网站,电商购物网站建设,小型企业管理软件哪个好,什么营销软件好用目录 引出类什么时候被加载JVM中创建对象几种方式1.new 看到new : new Book()2.反射 Class.forName(“包名.类名”)如何获取Class对象【反射的基础】案例#xff1a;连接数据库方法 3.克隆#xff08;拷贝#xff09;clone浅拷贝深拷贝案例 序列化和反序列化对象流-把对象存… 目录 引出类什么时候被加载JVM中创建对象几种方式1.new 看到new : new Book()2.反射 Class.forName(“包名.类名”)如何获取Class对象【反射的基础】案例连接数据库方法 3.克隆拷贝clone浅拷贝深拷贝案例 序列化和反序列化对象流-把对象存储为dat文件 总结 引出 1.类什么时候被加载到JVM中newClass.forName: Class.forName(“包名.类名”) 2.创建对象的方式反射本质是获得类的类对象Class 3.克隆clone深拷贝浅拷贝的对比 4.序列化和反序列化的方式 类什么时候被加载JVM中 Hello h; // 此时没有用Hellojvm并没有进行类加载 看到new : new Book()Class.forName: Class.forName(“包名.类名”)类加载器 package com.tianju.auth.reflect;public class HelloTest1 {public static void main(String[] args) throws ClassNotFoundException {Hello h; // 此时没有用Hellojvm并没有进行类加载System.out.println(**********);new Hello(); // new 的时候会加载到内存中System.out.println(**********);Class.forName(com.tianju.auth.reflect.Hello);} }package com.tianju.auth.reflect;public class Hello {static {System.out.println(hello);}public Integer count(Integer a,Integer b){return ab;}public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {int a 3;Class? aClass Hello.class; // ?泛型的写法Class? aClass1 Class.forName(com.tianju.auth.reflect.Hello);Class? extends Hello aClass2 new Hello().getClass();System.out.println(aClass);System.out.println(aClass1);System.out.println(aClass2);Hello o (Hello) aClass.newInstance();int count o.count(1, 2);System.out.println(count);} }创建对象几种方式 1.new 看到new : new Book() 2.反射 Class.forName(“包名.类名”) 一个类会产生一个唯一的Class对象JVM底层原理 Car.java 编译成 Car.clase 类加载到 JVM 中加载时还没有创建对象 进入JVM中给类Car创建单独的唯一的对象Class 类该Class对象中存储了Car类的一些必要信息没有记录相关的值 以Class对象生产成多个Car对象通过Class类映射出多个Car对象 如何获取Class对象【反射的基础】 对象.getClass()类.classClass.forName(“包名.类名”) 案例连接数据库方法 类加载采用了反射的方式 采用枚举方式封装JDBC单例 方法程序 package com.tianju.util;import java.sql.*; import java.util.Objects;/*** 采用枚举单例封装数据库*/ public enum DbUtilEnum {INSTANCE;private Connection conn;private PreparedStatement pst;private ResultSet rs;private DbUtilEnum() {// 注册驱动-类加载register();}/*** 第一步注册驱动类加载*/private void register(){try {Class.forName(com.mysql.cj.jdbc.Driver);} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}// 建立数据库连接// 192.168.0.134:3306// root123/*** 第二步建立数据库连接* param ipAdress ip地址端口号* param user 用户名root* param password 密码123*/public void connect(String ipAdress,String user,String password){String url jdbc:mysql://ipAdress/emp_db?useSSLfalseserverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrue;try {conn DriverManager.getConnection(url,user,password);System.out.println(成功连接数据库ipAdress);} catch (SQLException e) {throw new RuntimeException(e);}}/*** 第三步准备SQL语句* param sql sql语句*/public void setPreparedStatement(String sql, Object...values){try {pst conn.prepareStatement(sql);// 逐个填充 ? 处的空缺for (int i0;ivalues.length;i){pst.setObject(i1, values[i]);}} catch (SQLException e) {throw new RuntimeException(e);}}/*** 第四步增加删除修改*/public void executeUpdate(){try {pst.executeUpdate();System.out.println(执行增删改操作);} catch (SQLException e) {throw new RuntimeException(e);}}/*** 第四步查询ResultSet调用next()方法* return 返回查询的ResultSet*/public ResultSet executeQuery(){try {rs pst.executeQuery();System.out.println(执行查询操作返回结果);return rs;} catch (SQLException e) {throw new RuntimeException(e);}}/*** 第五步关闭连接*/public void close(){try {if (Objects.nonNull(rs)){rs.close();}if (Objects.nonNull(pst)){pst.close();}if (Objects.nonNull(conn)){conn.close();}System.out.println(操作完成关闭数据库连接);} catch (SQLException e) {throw new RuntimeException(e);}} } 3.克隆拷贝clone 继承的时候可以将子类的访问控制符扩大但不能缩小子类不得比父类抛出更多更大的异常。浅拷贝、深拷贝问题 浅拷贝 // protected代表本包或者继承// 继承的时候可以将子类的访问控制符扩大但不能缩小// 子类不能比父类抛出更多的异常Overridepublic Object clone() throws CloneNotSupportedException {return super.clone();}深拷贝 public Book deepClone(){Book book new Book();Author au new Author();au.setName(author.getName());book.setAuthor(au);book.setTitle(this.title);book.setPrice(this.price);return book;}案例 Author.java实体类 package com.tianju.auth.reflect;import lombok.Data;Data public class Author {private String name; }Book.java实体类 implements Cloneable{ // 可以克隆的 package com.tianju.auth.reflect;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data NoArgsConstructor AllArgsConstructor public class Book implements Cloneable{ // 可以克隆的private String title;private Author author;public double price;static {System.out.println(book的静态代码块);}// protected代表本包或者继承// 继承的时候可以将子类的访问控制符扩大但不能缩小// 子类不能比父类抛出更多的异常Overridepublic Object clone() throws CloneNotSupportedException {return super.clone();}public Book deepClone(){Book book new Book();Author au new Author();au.setName(author.getName());book.setAuthor(au);book.setTitle(this.title);book.setPrice(this.price);return book;} } 进行测试 package com.tianju.auth.reflect;public class TestDemo{public static void main(String[] args) throws CloneNotSupportedException {Author author new Author();author.setName(吴承恩);Book book new Book(三国演义, author,12.56);Book book1 book;System.out.println(book1book);// 两个引用是否指向同一个对象// clone创建了一个新的对象只是值一样Book bookClone (Book) book.clone();// 深拷贝创建了新的对象上面的浅拷贝只是拷贝了引用Book deepClone book.deepClone();System.out.println(bookClonebook);System.out.println(克隆前book);System.out.println(克隆后bookClone);author.setName(小柯基);System.out.println(修改后的原对象book);System.out.println(修改后的clone对象bookClone);// 深拷贝System.out.println(***********);System.out.println(深拷贝的方法deepClone);} } 序列化和反序列化 对象流-把对象存储为dat文件 要点 1实体类需要实现序列化接口 public class Car implements Serializable【标记接口】 2序列化的版本号最好不要写交给JVM实现要保证版本号一致 功能 ObjectOutputStream—-对象写入文件 serialVersionUID 在序列化的时候指定的编号 在反序列化时应该保证版本号一致。 案例把car类存储到dat文件中 1类需要实现序列化的接口 public class Car implements Serializable { // 需要实现序列化的接口// 序列化的版本号不要写交给jvm实现保证读的和写的对象实体类要一样 // private static final long serialVersionUID 2L;private Integer id;private String name;public Car() {} }2从内存写入硬盘文件为out用write ObjectOutputStream out new ObjectOutputStream(new FileOutputStream(D:\\Myprogram\\idea-workspace\\IOStrem\\IOStrem\\src\\com\\woniuxy\\resources\\car.dat)); // 存多个的解决方法存到List中 ListCar list new ArrayList(); list.add(new Car(1, BMW)); list.add(new Car(2, BYD)); list.add(new Car(3, BMW)); out.writeObject(list); // list也实现了Serializable out.flush(); out.close();3从硬盘读入内存为in用read ObjectInputStream in new ObjectInputStream(new FileInputStream(D:\\Myprogram\\idea-workspace\\IOStrem\\IOStrem\\src\\com\\woniuxy\\resources\\car.dat) ); // Car car (Car) in.readObject(); // 读对象向下转型 // System.out.println(car); ListCar list (ListCar) in.readObject(); System.out.println(list); list.forEach(car - System.out.println(car)); // list的lamda表达式 list.forEach(System.out::println); // 上面的简化写法 in.close(); // 记得关闭总结 1.类什么时候被加载到JVM中newClass.forName: Class.forName(“包名.类名”) 2.创建对象的方式反射本质是获得类的类对象Class 3.克隆clone深拷贝浅拷贝的对比 4.序列化和反序列化的方式
http://www.zqtcl.cn/news/66570/

相关文章:

  • 返回链接 网站惩罚检查 错误检查做网站公司经营范围
  • 天津市区县档案部门网站建设指导意见长沙logo设计公司哪家好些
  • cad做兼职区哪个网站有关网站建设的说说
  • 漳州seo建站资阳建设局网站
  • 网站制作功能多少钱粒子特效网站
  • 网站多服务器建设的推网站模板
  • 如何与知名网站做友情链接微信下载官方正版
  • asp.net 网站提速wordpress 开源主题
  • 网站名称怎么填写站长工具seo
  • 腾讯云 网站备案菏泽建设公司网站
  • 开发公司对设计单位奖惩快速排名软件seo系统
  • 厦门国外网站建设公司网站开发和系统开发的区别
  • 网站网页设计案例高埗网站建设公司
  • 建立网站的流程的合理顺序企业内部信息网站如何建设
  • 网站建设多少带宽wordpress 用户登录
  • 电商网站开发网站开发的费用
  • 南宁市住房城乡建设厅网站wordpress语言更改
  • 富阳区住房与建设局网站网站背景全屏
  • 张家港建设局网站淘宝 客要推广网站怎么做
  • 长春网站制作优势吉网传媒西部数码域名注册
  • 论坛网站模板公众号开发工具
  • 设计网站意味着什么一个后台可以做几个网站
  • 现在建设网站都用什么软件下载wordpress首页调用二级分类文章
  • 怎样搭建个人网站手机搜索网站建设
  • 湖南地税局官网站水利建设基金Wordpress写文章贴代码
  • 电商网站分析阿里云个人网站建设书
  • 申请网站就是做网站吗全国工商企业信息查询网
  • 孔夫子旧书网网站谁做的锋创科技园网站建设
  • 有做网站需求的客户服务型网站建设的主题
  • 资料库网站开发报价深圳品牌网站