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

网站如何做用户的实名认证深圳最乱最穷的地方

网站如何做用户的实名认证,深圳最乱最穷的地方,wordpress换头像不显示不出来,荆州松滋网站建设目录 一、基本概念1.1 说明1.2 特点 二、存放位置2.1 JDK1.6及以前2.2 JDK1.72.3 JDK1.8及以后 三、工作原理3.1 创建字符串常量3.2 使用new关键字创建字符串 四、intern()方法4.1 作用 五、优点六、字节码分析6.1 示例16.1.1 代码示例6.1.2 字节码6.1.3 解析 6.2 示例26.2.1 代… 目录 一、基本概念1.1 说明1.2 特点 二、存放位置2.1 JDK1.6及以前2.2 JDK1.72.3 JDK1.8及以后 三、工作原理3.1 创建字符串常量3.2 使用new关键字创建字符串 四、intern()方法4.1 作用 五、优点六、字节码分析6.1 示例16.1.1 代码示例6.1.2 字节码6.1.3 解析 6.2 示例26.2.1 代码示例6.2.2 分析jdk8 6.3 示例36.3.1 代码示例6.2.2 分析jdk8 一、基本概念 1.1 说明 1.JVM字符串常量池是Java虚拟机JVM中一个特殊的内存区域。 2.JVM字符串常量池用于存储字符串常量。 3.提高性能和减少内存开销。 4.字符串常量池是JVM用于存储字符串常量的一个内存区域避免了相同字符串的重复创建节省内存空间。 1.2 特点 1.字符串常量池中的字符串对象是不可变的。 2.相同的字符串常量在池中只存储一份通过引用共享。 二、存放位置 2.1 JDK1.6及以前 1.字符串常量池存放在永久代中永久代是非堆内存的一部分用于存储类的元数据、常量、静态变量等。 2.2 JDK1.7 1.字符串常量池从永久代移动到了Java堆中而运行时常量池保留在永久代中。 2.这一变化为了适应永久代内存限制问题并提升性能。 2.3 JDK1.8及以后 1.永久代被移除取而代之的是元空间字符串常量池仍然位于Java堆中。 2.运行时常量池被移动到元空间。 三、工作原理 3.1 创建字符串常量 1.使用双引号创建字符串时(String a “123”; )JVM会首先在字符串常量池中查找是否已存在该字符串。 2.如果存在则直接返回池中该字符串的引用。 3.如果不存在则在常量池中创建该字符串的实例并返回其引用。 3.2 使用new关键字创建字符串 1.使用new关键字创建字符串对象如String str new String(“abc”);时JVM会在堆内存中创建一个新的字符串对象而不管字符串常量池中是否已存在相同的字符串。 2.如果需要可以通过调用intern()方法将新创建的字符串对象放入常量池中。 四、intern()方法 4.1 作用 1.intern()方法是String类的一个本地方法。 2.用于将字符串对象添加到字符串常量池中。 3.如果常量池中已经包含了一个等于此String对象的字符串使用equals(Object)方法确定则返回代表池中这个字符串的String对象的引用。 4.否则将此String对象包含的字符串添加到常量池中并返回此String对象的引用。 五、优点 1.节省内存通过共享相同的字符串常量避免了不必要的重复创建。2.提高性能减少了对象创建和垃圾回收的开销。3.简化字符串比较由于字符串常量池中的字符串是唯一的可以使用操作符来比较字符串的引用从而简化比较操作。 六、字节码分析 6.1 示例1 6.1.1 代码示例 Test public void test(){String str1 new String(hello) new String(world);String str2 helloworld;System.out.println(str1 str2); }6.1.2 字节码 0 new #2 java/lang/StringBuilder3 dup4 invokespecial #3 java/lang/StringBuilder.init : ()V7 new #4 java/lang/String 10 dup 11 ldc #5 hello 13 invokespecial #6 java/lang/String.init : (Ljava/lang/String;)V 16 invokevirtual #7 java/lang/StringBuilder.append : (Ljava/lang/String;)Ljava/lang/StringBuilder; 19 new #4 java/lang/String 22 dup 23 ldc #8 world 25 invokespecial #6 java/lang/String.init : (Ljava/lang/String;)V 28 invokevirtual #7 java/lang/StringBuilder.append : (Ljava/lang/String;)Ljava/lang/StringBuilder; 31 invokevirtual #9 java/lang/StringBuilder.toString : ()Ljava/lang/String; 34 astore_1 35 ldc #10 helloworld 37 astore_2 38 getstatic #11 java/lang/System.out : Ljava/io/PrintStream; 41 aload_1 42 aload_2 43 if_acmpne 50 (7) 46 iconst_1 47 goto 51 (4) 50 iconst_0 51 invokevirtual #12 java/io/PrintStream.println : (Z)V 54 return6.1.3 解析 1. 0 new #2 java/lang/StringBuilder: 调用StringBuilder的new方法 2. 3 dup复制操作数栈栈顶的一个字通常是对象引用或数据类型值并将这个字重新压入栈顶。 3. 4 invokespecial #3 java/lang/StringBuilder. : ()V执行StringBuilder的初始化方法会消耗操作数栈顶一个字。 4. 7 new #4 java/lang/Stringnew一个String对象对象的引用压入操作数栈。 5. 10 dup复制操作数栈栈顶的一个字通常是对象引用或数据类型值并将这个字重新压入栈顶。 6. 11 ldc #5 加载栈顶的一个字即hello。 7. 13 invokespecial #6 java/lang/String. : (Ljava/lang/String;)V初始化String,消耗一个string对象的引用和复制的字。 8. 16 invokevirtual #7 java/lang/StringBuilder.append : (Ljava/lang/String;)Ljava/lang/StringBuilder; : append操作将hello追加进来。 9. 19 new #4 java/lang/String new一个String对象对象的引用压入操作数栈。 10. 22 dup复制操作数栈栈顶的一个字通常是对象引用或数据类型值并将这个字重新压入栈顶。 11. 23 ldc #8 : 加载栈顶的一个字即world。 12. 25 invokespecial #6 java/lang/String. : (Ljava/lang/String;)V初始化String,消耗一个string对象的引用和复制的字。 13. 28 invokevirtual #7 java/lang/StringBuilder.append : (Ljava/lang/String;)Ljava/lang/StringBuilder; append操作将world追加进来。 14. 31 invokevirtual #9 java/lang/StringBuilder.toString : ()Ljava/lang/String; 调用StringBuilder的toString方法 15. StringBuilder的toString方法中是直接new了一个String对象。 16. 而String str2 “helloworld”;是常量池的引用。 17. 因此不是同一个内存地址所以结果是false。 6.2 示例2 6.2.1 代码示例 Testpublic void test(){String str1 new String(hello) new String(world);str1.intern();String str2 helloworld;System.out.println(str1 str2);}6.2.2 分析jdk8 1.str1是直接new了一个对象执行intern()方法后将字符串对象添加到字符串常量池中。 2.String str2 “helloworld”;会先在字符串常量池中找是否有如果有则返回其对象的引用。 3.所以结果是true。 6.3 示例3 6.3.1 代码示例 Testpublic void test(){String str1 new String(helloworld) ;String str2 helloworld;String intern str1.intern();System.out.println(str1 str2);System.out.println(str1 intern);System.out.println(str2 intern);}6.2.2 分析jdk8 1.str1在堆上new了一个string对象。 2.str2是将字面量“helloworld”放入字符串常量池中。 3.str1调用intern方法判断字符串常量池中有没有helloworld,发现有返回了该字符串常量池的引用即str2。 4.此时str1不等于str2。str2和intern是相等的。
http://www.hkea.cn/news/14552642/

相关文章:

  • 长沙网站建设论坛设计师招聘网站
  • 做网站530元wordpress 只搜索标题
  • 佛山顺德容桂做网站的公司传媒网站建设网
  • 腐女喜欢做的网站营销网站结构
  • 做网站的语言叫什么app网站开发协议
  • 做网站需要多少兆专线慧聪网
  • 建行业网站的必要性怎样看一个网站的信息吗
  • 网站快速排名优化报价微信 网站模板
  • 网站301在哪里做韩国电信 网站
  • wordpress主题整站wordpress get_categories
  • 重庆网站设计公司排名郑州网站建设中国建设建设银行
  • 福建网站建设制作wordpress 统计页面 来路域名
  • 龙岗网站建设百度推广竞价是什么意思
  • 电商网站建设实训报告淘宝店铺怎么引流推广
  • 贵阳网站建设建站系统可信赖的南昌网站制作
  • wordpress 直接拖拽式建站如何优化网站速度
  • 专门做网站的公司与外包公司网页设计与网站建设完全实用手册
  • 怎么建设一个响应式网站杭州百度百家号seo优化排名
  • 县区网站集约化建设公司注册地址变更需要多长时间
  • 网站设计有哪些html静态网页制作
  • wordpress视频网站模板下载wordpress 淘宝客排行榜主题
  • 校园网站网络文明建设有哪些网站是可以做会计题目的
  • 能免费建设网站吗文山做网站的地方
  • 网站的整体风格包括wordpress表结构写入不全
  • 星河网站建设汉中住房和城乡建设部网站
  • 邯郸住房和城乡建设局网站游戏开发赚钱吗
  • 站长工具站长之家wordpress配置邮箱
  • 做个网站商场需要多少当今做网站的流行趋势
  • 大连网站制作网站抖音官方推广平台
  • 厦门网站建设咨询石家庄建设银行网站