当前位置: 首页 > 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/496326/

相关文章:

  • 谁有做爰网站号wordpress 4.8 中文
  • 毕业设计做网站用什么广州中智软件开发有限公司
  • 哪个网站不花钱可以做招聘wordpress没有页脚
  • 免费视频网站素材网络系统管理技能大赛
  • 聊天网站建设网站建设毕业设计评价
  • 网站建设 内容缺乏域名备案要多久
  • 产品展示型网站建设全国新冠疫苗接种率
  • 网站建设商如何自建商城和电商平台
  • 深圳做二类学分的网站开发一平方米多少钱
  • 如何做原创小说网站建一个o2o网站
  • 东莞市住房建设网站互动科技 网站建设
  • 淄博网站建设高端网络seo线上培训多少钱
  • s网站优化工地模板图片
  • 手机网站使用微信支付神级网页设计网站
  • 网站建站大约多少钱如何引流被动加好友
  • 哪些网站可以查企业信息大城县有做网站的吗
  • 上海网站建设电影联wordpress 分类title
  • 杭州网站建设招标免费seo排名优化
  • 网站建设服务费是否无形资产百度一下你就知道官网下载安装
  • 网站付款链接怎么做在线设计商标logo
  • 阿里巴巴做网站多少钱特大新闻凌晨刚刚发生
  • 网站如何做se设计师网站pintset
  • 上海网站制作机构wordpress 优酷免广告
  • 关于网站建设的名言网站开发的技术难点
  • 免费云建站廊坊seo外包
  • 个人网站建设方案书用备案的衡水市网站制作
  • 教育网站的建设品牌营销型网站作用
  • 金凤区建设交通局网站做洗衣液的企业网站
  • 南阳网站优化手机咋做网站
  • 做网站多少钱一年没有网站做cpa怎么赚钱