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

厦门酒店网站建设无费用开网店

厦门酒店网站建设,无费用开网店,做服装的外贸网站,ui设计工具目录 数据类型 包装类与基本数据类型 为什么10001000为false#xff0c;100100为true。 new String(hello)创建了几个对象 String StringBuild StringBuff 区别 对象 Java对象的创建过程 深浅拷贝的区别 4种对象引用 一个空对象占多大内存 重写equals方…目录 数据类型 包装类与基本数据类型 为什么10001000为false100100为true。 new String(hello)创建了几个对象 String StringBuild StringBuff 区别 对象 Java对象的创建过程 深浅拷贝的区别 4种对象引用 一个空对象占多大内存 重写equals方法就一定要重写hashcode方法 其他 js与Java的区别 受检异常和非受检异常 fail-fast和fail-save区别 序列化和反序列化 spi finally语句一定会执行吗 内存溢出和内存泄漏 基础知识-思维导图 数据类型 包装类与基本数据类型 为什么基础类型需要设计一个对应的封装类 Java面向对象的语言有时需要传递对象类型的数据例如ArrayList等集合。 隐藏实现细节对调用者更加友好,使用定义好的方法操作数据。 安全性更好可以避免外部操作随意修改成员变量的值。 Integer与int的区别是什么 Integer 是一个对象用new创建存储在堆内存 初始化null可以在集合中使用ArrayList混合计算时自动装箱和拆箱具有方法和属性例如MAX_VALUEInteger.valueOf(s)。 int 是基本数据类型直接定义即可使用存储在栈空间初始值是0。 为什么10001000为false100100为true。 public static void main(String[] args) {Integer a 100, b 100, c 1000, d 1000;//给Integer 赋值的时候发生自动装箱调用Integer.valueOf方法System.out.println(ab (ab));System.out.println(cd (cd));//从缓存里取出值等于100的Integer对象给a,b赋值所以a,b是同一个对象// 1000不在缓存里,调用new Integer(i) 给c,d赋值所以c,d不是同一个对象int e a;//自动拆箱 调用intValue()Byte f 1;//缓存范围-128~127Short g 2;//缓存范围-128~127Long h 3L;//缓存范围-128~127Character i a;//缓存范围0~127}//注意到这里使用到了缓存public static Integer valueOf(int i) {if (i IntegerCache.low i IntegerCache.high)return IntegerCache.cache[i (-IntegerCache.low)];// 怎么计算出数组下标i的范围在-128~127// 这里加上一个最小值就能计算出来下标的位置return new Integer(i);} 下面这这段代码初始化cache数组 这里high属性可以使用-XX:AutoBoxCacheMaxsize设置 缓存的范围是-128~127 为什么使用这个范围因为数据在这个范围内频繁使用避免频繁创建对象消耗资源 private static class IntegerCache {static final int low -128;static final int high;static final Integer cache[];static {// high value may be configured by propertyint h 127;String integerCacheHighPropValue VM.getSavedProperty(java.lang.Integer.IntegerCache.high);if (integerCacheHighPropValue ! null) {try {int i parseInt(integerCacheHighPropValue);i Math.max(i, 127);// Maximum array size is Integer.MAX_VALUEh Math.min(i, Integer.MAX_VALUE - (-low) -1);} catch( NumberFormatException nfe) {// If the property cannot be parsed into an int, ignore it.}}high h;cache new Integer[(high - low) 1];int j low;for(int k 0; k cache.length; k)cache[k] new Integer(j);// range [-128, 127] must be interned (JLS7 5.1.7)assert IntegerCache.high 127;}private IntegerCache() {}} new String(hello)创建了几个对象 1.如果hello这个字符串常量不存在则创建2个对象分别是hello字符串常量和new String这个实例对象。 2.如果hello 这个字符串常量存在则只会创建String对象 vm检查字符串常量池里是否存在相同内容(hello)的String对象 如果存在则直接返回该对象的引用如果不存在则在堆内存创建一个新的字符串对象并且把他的引用保存到字符串常量池里。 new String 创建一个对象存放在堆上 为什么需要字符串常量池提高性能和节省内存空间 字符串常量池在哪里 堆   public static void main(String[] args) {//String s hello.intern();//如果池中包含等于此String对象的字符串则返回池中的字符串// 否则将这个String对象添加到池中并返回此String对象的引用String a abc;String b new String(abc);String c abc;String d a bc;//编译期间进行了优化拼接结果是abcString temp bc;String e a temp;//2个对象相加把结果存放在堆上String f a new String(temp);String g a.intern();System.out.println(a b);//falseSystem.out.println(a c);//trueSystem.out.println(a d);//trueSystem.out.println(a e);//falseSystem.out.println(e f);//falseSystem.out.println(a g);//true} String StringBuild StringBuff 区别 可变性 String 不可变类 StringBuild 和 StringBuff可变 线程安全性 String 不可变类 是线程安全的 存储在字符串常量池           StringBuff 每个方法都加了Synchronize 关键字 线程安全的 多线程环境下使用 存储在堆           StringBuild 线程不安全 单线程环境下使用 存储在堆 性能 String 性能最差他是不可变类每次修改都会创建新的String对象       其次 StringBuff 有加同步锁       最好 StringBuild 没有加锁 对象 Java对象的创建过程 1.类加载检查 目标类的加载通过类加载器实现 目标类的初始化对静态变量、成员变量静态代码块进行初始化。 目标类初始化之后就可以常量池中找到对应的类元信息。 2.分配内存 有2种方法指针碰撞需要内存空间连续(规整)。空闲列表内存空间不连续记录哪些内存块是可用的分配的时找到一个大小合适的内存块给目标对象使用更新记录 3.初始化零值 目标对象里普通成员变量初始化为零值例如int类型 初始化0保证对象里的属性不用初始化就可以使用 4.设置对象头 对象类的元信息对象GC分代年龄锁标记hash码 5.执行init方法 初始化成员变量执行构造块构造方法完成对象创建。 深浅拷贝的区别 1.克隆数据之后两者是否存在关联2.改变克隆对象的属性是否会影响到源对象。 浅拷贝复制对象本身及其引用类型成员的引用不复制引用指向的对象本身 值类型成员变量---复制值,引用类型成员变量---复制地址 常用API,实现Cloneable接口,Arrays--copyOf. 常用工具类,Spring--BeanUtils,commons--PropertyUtils 深拷贝递归复制源对象引用类型成员的副本新对象是完全独立于旧对象 值类型成员变量---复制值引用类型成员变量---复制值 常用API重写clone方法序列化工厂方法、拷贝构造方法 常用工具类JSON工具类Apache commons--SerializationUtils.clone 4种对象引用 强引用只要引用关系存在对象就不会被回收 软引用相对强引用弱一些非必须存活的对象vm在内存溢出前对其进行回收。用来实现内存敏感的缓存内存还有空闲空间时就可以暂时保留当内存空间不足时就会清理掉 弱引用不管内存是否够用下一次GC一定回收即使存在引用关系也会被清理 虚引用等同没有引用对象被回收时会收到通知必须和引用队列一起使用 一个空对象占多大内存 对象的组成 1.对象头markword64位vm8字节用来存储hashcodeGC分代年龄锁标记 类型指针4(压缩)或8字节 数组长度数组对象才会有4个字节 2.实例数据对象中的字段信息 3.对齐填充补充实现java对象大小的整数倍对齐按照8字节或者8字节的倍数对齐避免为共享问题 一个空对象在开启压缩指针的情况下占用168(对象头)4(类型指针)4(对齐填充)字节。 一个空对象在关闭压缩指针的情况下占用168(对象头)8(类型指针)字节。 重写equals方法就一定要重写hashcode方法 1.Object规范要求根据equals比较相等的对象他们的hash码方法产生相同的整数结果 2.只重写equals方法逻辑上相等对象他们hash码不相等因为Object对象的hash码方法返回随机整数 3.hashMap.get方法返回nullhashmap有一项优化将与每个项相关联的散列码缓存起来如果散列码不匹配也不必比较对象相等性 其他 js与Java的区别 JavaScript动态语言浏览器解释执行函数式编程函数是一等公民lambda表达式、闭包。 Java静态语言源码编译然后在vm运行类是一等公民Java8开始支持函数式编程、lambda。 受检异常和非受检异常 受检异常在编译时必须检查的异常需要通过catch字句捕获或者抛出异常。除了error和runtimeException之外的异常提高可维护性。 非受检异常不需要显式捕获编程错误使用运行时异常。 设计异常的原因提高程序的可读性、可靠性、可维护性 fail-fast和fail-save区别 他们都是多线程并发操作集合时失败处理机制。 fail-fast快速失败在遍历集合的时候一旦发现集合被修改了立即抛出并发修改异常导致遍历失败。例如hashmap,arraylist。 fail-save失败安全在这种机制下出现集合元素修改不会抛出并发修改异常例如copyonwriteArraylist在遍历时不是直接在结合上访问而是先复制集合内容在复制的集合上进行遍历。 序列化和反序列化 序列化解决网络通信中对象传输问题把vm进程里一个对象跨网络传输到另一个vm进程里序列化把对象转化成字节流以便实现存储和传输。保证通信双方对于对象的可识别性把对象转化为通用解析格式--json、xml。 反序列化根据文件或网络上的对象的字节流解析字节流里对象信息和状态创建一个新的对象。 选择何种序列化技术考虑的因素序列化后数据的大小--影响传输性能序列化耗费的时间跨平台、跨语言技术的成熟度。 spi service-provide-interface基于接口的动态扩展机制定义一个标准接口然后第三方可以实现这个接口程序运行时根据配置信息或上下文场景发现加载实现类实现功能的动态扩展。例如数据库驱动driver。这个机制的主要思想将装配的控制权转移到程序之外做到标准和实现解耦提供动态的可插拔能力。缺点不能根据需求加载需要的扩展实现每次都会加载所有接口的实现类。加载一些不需要的实现类造成内存资源浪费。 finally语句一定会执行吗 通常情况下无论是否触发异常finally块中的代码一定会执行例外情况程序没有进入try块之前异常终止在try或catch块中执行system.exit语句。 内存溢出和内存泄漏 内存溢出vm可用内存不足以存放一个新创建的对象。 内存泄漏对象使用完后对象内存空间没有释放空间一直被占用。代码每次执行都会留下被占用内存不被释放。反复多次执行后就会有大量对象用完没有释放这些不能回收的对象导致内存溢出。
http://www.zqtcl.cn/news/566350/

相关文章:

  • 简书网站开发热门电影推荐
  • 中学教材数字化学习资源的建设——教材配套网站的设计及发展趋势建网站 发信息 做推广
  • 怎么写网站建设方案书制做网站的公司
  • 服务网站 建设原则游戏服务器租用多少钱一年
  • 软件网站下载现在出入深圳最新规定
  • 长宁专业网站制作公司陕西网站建设哪家专业
  • 重庆做的好的房产网站衡水的网站建设
  • 宜春网站开发网页编辑器安卓版
  • 网站建设外包兼职建设工程合同可以分为
  • 我国网络营销现状分析重庆网站seo营销模板
  • 深圳建站公司网站免费推广预期效果
  • html5 国外网站后台网站要做权限前端还是后台做
  • 免费建自己的网站网站标题 关键词 描述之间的关系
  • 提供响应式网站建设wordpress怎么做背景图片
  • 相亲网与做网站做网站的目的与意义
  • 做网站字体大小网站建设是属于虚拟产品吗
  • 网站的内链怎么做校园网建设网站特色
  • 优化网站标题企业的网站一般做哪些维护
  • 聊天网站备案南阳定制网站制作价格低
  • 广州镭拓科技网站建设公司长春招聘
  • 视频网站app怎么做跨境贸易电子商务服务平台
  • 丽水网站seo餐饮vi设计案例
  • 娄底网站建设报价山东省住房和建设厅注册中心网站
  • 公司网站建设工作重点网站建设吉金手指专业11
  • vue做前台网站怎么做钓鱼网站吗
  • 个人建设网站如何定位烟台h5网站开发
  • 广州网站定制多少钱html5游戏开发
  • 使用angularjs的网站域名怎么解析到服务器
  • 地方门户网站盈利模式宝塔 wordpress
  • 西安网站备案软件开发基础教程