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

如何做网站logo常州app开发公司

如何做网站logo,常州app开发公司,轻芒小程序wordpress,技术支持 东莞网站建设机械加工功能概述 字符串是Java编程中常用的数据类型#xff0c;本文对String部分常见功能做了对应实践以及分析。 功能实践 场景1#xff1a;字符串比较 用例代码 Test public void test_string_compare() {String s1 abc;String s2 s1;String s5 abc本文对String部分常见功能做了对应实践以及分析。 功能实践 场景1字符串比较 用例代码 Test public void test_string_compare() {String s1 abc;String s2 s1;String s5 abc;String s3 new String(abc);String s4 new String(abc);System.out.println(s1 s5: (s1 s5));System.out.println(s1 s2: (s1 s2));System.out.println(s1.equals(s2): s1.equals(s2));System.out.println(s3 s4: (s3 s4));System.out.println(s1.equals(s4): s1.equals(s4));System.out.println(s3.equals(s4): s3.equals(s4)); }运行结果 s1 s5: true s1 s2: true s1.equals(s2): true s3 s4: false s1.equals(s4): true s3.equals(s4): true结果分析 “” 比较基本类型时判断值是否相等比较对象类型时判断是否指向同一内存地址。equals是比较两个对象是否一样即所有成员的值是否相同。字符串如abc是放在常量池中的在内存中只存在一份副本所以s1 s5同一个字符串只有一个内存地址会在常量池中检查是否存在已有的字符串存在时返回原有字符串的内存地址就不会新建新的内存地址了。s3、s4指向的对象都是通过new创建的新对象内存地址不一样所以比较为false。 场景2字符串intern方法使用 用例代码 Test public void test_intern_v1() {// 未使用intern时String s1 new String(aaa777);String s2 aaa777;System.out.println(s1 s2);// 使用intern时String s3 new String(aaa777);s3 s3.intern();String s4 aaa777;System.out.println(s3 s4); }运行结果 false true结果分析 s1是指向堆中对象的引用s2是指向常量池中字符串的引用所以两者的内存地址不一样。intern()会查找常量池中是否存在aaa777的引用若存在返回否则把String对象添加到池中再返回在池中的引用。 场景3String、StringBuffer、StringBuilder性能比较 用例代码 Test public void test_String_StringBuffer_StringBuilder_efficiency() {testString();testStringBuffer();testStringBuilder(); }private void testString() {String s Hello;String s1 World;long start System.currentTimeMillis();for (int i 0; i 10000; i) {s s s1;}long end System.currentTimeMillis();long runtime (end - start);System.out.println(testString runtime: runtime); }private void testStringBuilder() {StringBuilder s new StringBuilder(Hello);String s1 World;long start System.currentTimeMillis();for (int i 0; i 10000; i) {s.append(s1);}long end System.currentTimeMillis();long runtime (end - start);System.out.println(testStringBuilder runtime: runtime); }private void testStringBuffer() {StringBuffer s new StringBuffer(Hello);String s1 World;long start System.currentTimeMillis();for (int i 0; i 10000; i) {s.append(s1);}long end System.currentTimeMillis();long runtime (end - start);System.out.println(testStringBuffer runtime: runtime); }运行结果 testString runtime:646 testStringBuffer runtime:1 testStringBuilder runtime:0结果分析 在执行方面来看StringBuilder最高、StringBuffer次之、String最低。 场景4StringTokenizer字符串分割 用例代码 Test public void test_StringTokenizer() {StringTokenizer st2 new StringTokenizer(HelloWorld!,); //指定自定义分隔符while (st2.hasMoreTokens()) {System.out.println(st2.nextToken());} }运行结果 Hello World !结果分析 StringTokenizer可按指定分隔符第字符串进行分隔。 场景5字符串与字符数组比较 用例代码 Test public void test_string_with_char_array_compare() {String s hello;String t hello;char c[] {h,e,l,l,o};System.out.println(s.equals(t));System.out.println(t.equals(c));System.out.println(s t);System.out.println(t.equals(new String(hello)));String s1 he llo;System.out.println(s s1); }运行结果 true false true true true结果分析 s.equals(t)值为true因为hello会存在堆中的字符串常量池中并且按照享元模式判断字符串是否存在不存在才创建所以s、t是同一个字符串引用t.equals©值为false按照String重写的equals方法会判断入参是否为String类型若不是则返回falses t值为true比较的是引用因为s、t是同一个引用所以相等t.equals(new String(“hello”))值为true因为String的比较逻辑会去字符串中的字符数组来比较字符都相等则返回trues s1值为true因为he “llo在编译器就会转化hello”存在常量区因为s已经放在常量池中与s1不会创建新的字符串s与s1是同一个字符串引用 功能总结 String常量池采用了享元模式Flyweight即会共享字符串判断字符串是否存在若存在则使用否则新创建。常量池它是一个由数组组成的表用来存储程序中使用的各种常量包括Class、String、Integer等各种基本的Java数据类型 intern()方法分析intern助理、实习生 intern方法主要把字符串放入字符串常量池中。有两种情况会将字符串放在常量池中 直接使用双引号声明的String对象会直接存储在常量池中如String s1 “aa” 。通过调用String提供的intern方法把字符串放在常量池中会检查字符串在常量池中是否存在存在则不处理若不存在则放入字符串常量池中。 Returns a canonical representation for the string object. jdk中的描述 根据jdk中描述intern()会返回字符串对象的规范标识即会从常量池中查找指定字符串若能找到则返回对应引用否则把String对象添加到池中再返回在池中的引用。 注明 a字符串放入字符串常量池需要满足上面所说的两种情况。b并不是调用了intern就会将字符串放入字符串常量池中会先检查字符串是否存在若存在则不处理。若不存在要看字符串在堆中是否已存在已存在只存对象引用减少对象的创建 c字符串常量池在jdk1.7后就从Perm区迁移到堆中这样对于字符串常量池中可以存对象引用减少了对象的创建就大大减少了字符串所占的空间了。 String、StringBuilder、StringBuffer使用总结 如果要操作的数据量比较小优先使用String类量多的话String本质是使用StringBuilder处理的会产生许多临时对象触发垃圾回收影响性能如果是单线程下处理大量数据优先使用StringBuilder类StringBuilder是线程不安全的单线程下可以使用减少线程同步的开销如果是多线程下处理大量数据优先使用StringBuffer类因为是线程安全的
http://www.dnsts.com.cn/news/251451.html

相关文章:

  • wordpress文章保存目录合肥seo网站推广费用
  • 音乐类网站模板广安网站建设gphvip
  • 怎样建网站买东西凡科网后台登录
  • 微信客户端网站建设台州网页设计与制作
  • 国外 网页框架搭建的网站网站建设销售发展前景
  • 建设网站桫椤在室内能wordpress用户注册邮箱验证
  • 五金喷漆东莞网站建设wordpress文章页广告插件
  • 网站模板 在哪购买网页建设多少钱
  • 黄冈建设局网站首页国内装修公司
  • 苏州seo公司排名济南网络优化哪家专业
  • 做家庭影院的有哪些网站遵义seo快速排名
  • 企业 网站设计河北明迈特的网站在哪里做的
  • 做网站西宁wordpress毛玻璃主题
  • 个人网站建设 免费90年代设计
  • 网站更换服务器 seo机械加工图纸标注符号大全
  • 用织梦做的网站下载地址南京公司网站建设怎么收费
  • 合肥高端网站建设设计公司哪家好永州网站建设公司推荐
  • 外贸产品网站建设广西壮族自治区成立于哪一年
  • 什么类型的网站比较容易做WordPress修改首页文章预览
  • 浅谈企业网站建设的目标汽车销售服务东莞网站建设
  • 路由器怎么做网站wordpress模板 sky
  • 住房和城乡建设部网站监理合同常州网站优化
  • 建立一个网站需要花多少钱网络营销的发展概述
  • 佛山企业如何建网站建筑设计公司是干什么的
  • 公明 网站建设国际品牌的ui设计公司
  • 深圳画册设计网站南昌莱布网络科技有限公司
  • 哪个网站可以付费做淘宝推广seo与网站优化 pdf
  • 一般给公司做网站用什么软件wordpress留言板源码
  • 电商网站建设源代码wordpress热词标签
  • 做网站收费wordpress网站vip可看