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

做网站的属于什么行业广州软件制作公司

做网站的属于什么行业,广州软件制作公司,深圳企业排行榜,没有网站怎么做淘宝客文章目录 1、什么是intern#xff1f;2、经典例题解释例1例2例3 1、什么是intern#xff1f; String::intern()是一个本地方法#xff0c;它的作用是如果字符串常量池中已经包含一个等于此String对象的字符串#xff0c;则返回代表池中这个字符串的String对象的引用#… 文章目录 1、什么是intern2、经典例题解释例1例2例3 1、什么是intern String::intern()是一个本地方法它的作用是如果字符串常量池中已经包含一个等于此String对象的字符串则返回代表池中这个字符串的String对象的引用否则会将此String对象包含的字符串添加到常量池中并且返回此String对象的引用。----书上描述 已经包含。。。可能不太好理解。我画图解释 方法的执行顺序肯定是从下向上依次执行的。 String s1 “11”; 先去字符串常量池中查看是否已经存在“11”如果存在则直接返回11的地址如果不存在则会在字符串常量池中创建“11”然后返回创建好的“11”的地址。因为之前未创建过所以该指令会先去字符串常量池中创建“11”然后返回11的地址 501。 String s2 new String(“11”); 也是先去字符串常量池中查看是否已经存在“11”如果有就在堆中创建对象存的是字符串常量池中“11”的地址501最后将堆中对象的地址601返回给S2 。 String s3 s2.intern(); intern方法会从字符串常量池中查询当前s2字符串11是否存在若不存在就会在字符串常量池中创建字符串11的实例 由于s1已经在字符串常量池中已经创建了“11”s2.intern()则返回501。 System.out.println(s1s2); System.out.println(s1s3);false trues1s2 返回false是因为s1指向的是字符串常量池中的11对象501而s2指向的是堆中存储了11的地址的对象601 s1s3 返回true 是因为s3和s1都指向的是字符串常量池中的11。 对String srt new String(“str”)与 str1 ”str“的区别不了解的话可以看篇文章 2、经典例题解释 例1 //1 String s new String(1); //2 s.intern();//调用此方法之前字符串常量池中已经存在了1. //3 String s2 1; //4 System.out.println(ss2);执行1会创建两个对像在字符串常量池中创建一个”1“在堆中创建一个String对象并存储“1”在字符串常量池中的的地址。执行2调用此方法之前字符串常量池中已经存在了1所以此指令什么都没做此时s指向堆中的对象。执行3由于字符串常量池中已经存在了“1”所以不需要再创建返回“1”的地址s2指向字符串常量池中的”1“。执行4由于s指向堆中对象s2指向字符串常量池中的对象所以打印结果是false。 这是比较简单的例子 下面上强度了 例2 //1String s3 new String(1)new String(1);//2s3.intern();//3String s4 11;//4System.out.println(s3s4);执行1会在堆中创建两个存储字符串”1“的地址的对象和一个字面量为”11“的String对象在字符串常量池中创建一个”1“字符串实例。 在编译期间在创建String对象之前会先创建一个StringBuilder对象后面每次在堆中创建完一个String对象会对该字符串执行LDC指令LDC指令会先到字符串常量池中查找是否存在对应字符串实例的引用如果有的话那么直接返回这个字符串实例的地址给堆中的new的String对象如果没有的话会创建一个字符串实例然后将其添加到字符串常量池中之后再返回这个字符串实例对象的地址给堆中创建的对象。完成String对象初始化后都会执行StringBuilder::append()方法将该字符串拼接到StringBuilder对象里。当都拼接完会执行StringBuilder::toString()方法返回一个在堆中新new的String对象value为11。 可以通过编译后的字节码文件清晰的观察整个过程 标注的都是刚才介绍的行为。 执行2由于toString()方法只在堆中创建了一个”存储11的String对象并没有在字符串常量池中创建11字符串实例。按之前的说法intern应该去字符串常量池中创建字符串”11“的实例但是在JDK7中并没有在字符串常量池中创建字符串11的实例由于堆中已经存在了11这个String对象那么为了节省空间会在字符串常量池中申请一块空间存放这个String对象的地址并返回存放的地址也就是堆中存储11的String对象的地址。 执行3会去字符串常量池中查找是否存在11,因为第二行已经在字符串常量池中创建了存储堆中存储11的String对象的地址的空间则直接返回空间里面存储的堆中String对象的地址所以s4也指向了堆中存储11的String对象。 由于s3和s4都指向堆中同一个对象所以打印结果为true。 如图所示 通过debug可以看到两个句柄指向的地址是一样的 打印结果 例3 //1String s3 new String(1)new String(1);//2String s4 11;//3s3.intern();//4System.out.println(s3s4);第一行执行结果与例2的第一行执行结果一致。执行2由于字符串常量池中还没有11,则向字符串常量池中创建字符串11的实例并返回实例的地址。执行3由于字符串常量池中已经存在11,则不需要再创建返回实例的地址但由于没有赋值操作所以该行代码没有什么作用。此时s3指向堆中存储了“11”的String对象而s4指向的是字符串常量池中字符串为11的实例所以指向的地址不同打印结果为false 通过debug可以看到两个句柄指向的地址是不同的 打印结果
http://www.hkea.cn/news/14467601/

相关文章:

  • 四川建设厅网上查询网站长春房产
  • 汉阳网站推广优化html做的网站怎么弄
  • 网站维护入门教程C 做的窗体怎么变成网站
  • 分宜网站建设上海最大的广告公司
  • 网站建设收费标准新闻做企业网站应该注意什么
  • 济南网站建设wuliankj东莞展馆设计公司
  • 加强统计局网站的建设和管理网站开发分类
  • 江苏省城乡和建设厅网站wordpress js代码插件下载地址
  • 网站建设服务网站asp网站建设实验设计
  • 英文网站建设目的现在做一个网站大概多少钱
  • mt4网站建设centos 打开 wordpress
  • 网站建设估价做国外网站的公证要多少钱
  • thinkphp 企业网站源码注册一个公司多少钱
  • 北京网站制作公司飞沐呼市地区做网站公司
  • 济宁房产网站建设龙城街道横岗街道
  • 淘宝装修免费模板有哪些网站工信部备案
  • 做营销网站多少钱中小企业建网站注意
  • 佛山专注网站制作细节企业seo解决方案
  • 苏州海外建站公司大型网站技术架构 pdf
  • 做网站淮南wordpress加载更多
  • 网站域名地址是什么seo网站制作优化
  • 店面建设网站的必要性温州网站建设新手
  • 网站建设与维护 东博湖南湘江新区最新消息
  • 如何做一网站首页克拉玛依市住房和建设局网站
  • 沧州高端网站制作uni做网站首页
  • 公网动态ip如何做网站济南住建局官方网站
  • 网站开发移动app开发小程序需要的技术
  • 美工外包网站西安便宜的网站建设
  • 红色企业网站源码网站设计公司销售渠道建设
  • 站长工具seo综合查询全面解析平台推广员是做什么的