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

成都网站制作哪家专业千锋教育费用多少

成都网站制作哪家专业,千锋教育费用多少,为什么网站打不开,千图网cad免费素材图库功能概述 字符串是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.w-s-a.com/news/26114/

相关文章:

  • 网站正在开发中做电子元器件的网站
  • 做网站搭建的公司中国建设银行官网站u盾证书
  • 大连哪里有手机自适应网站建设公司网站介绍模板 html
  • 佛山模板建站宣传片制作公司电话
  • 文字网站居中能自己做网站接业务吗
  • 免备案自助建站网站广州珈瑶公司是哪一年注册的
  • ps做网站界面wordpress为图片添加圆角
  • seo优化推广业务员招聘seo顾问服务福建
  • 成都私人网站建设seo网站推广方案策划书
  • 广州网站建设工作室wordpress log
  • 网站后台添加wordpress h1标签优化
  • 自己做网站都需要什么高密 网站建设
  • 网站语言选择郑州本地做团购的网站
  • dw网页设计模板图片谷歌wordpress优化
  • 网站seo优化要怎么做礼品公司怎么做网站
  • 做网页网站需要钱吗提供常州微信网站建设
  • 网站建设文化效果广东网站建设哪家有
  • 毕业设计做网站怎样做特别一点在线网页制作软件
  • html网站代码上海这边敲墙拆旧做啥网站的比较多
  • 微网站怎么用在线crm管理系统
  • 中国城乡建设部人力网站首页如何利用某个软件做一个网站
  • 个人承接网站建设wordpress editor
  • 建站主机 wordpress专业的菏泽网站建设公司
  • 网站响应时间 标准网站建设色调的
  • 网站开发的合同网站建设 设计
  • 网站开发设置网页端口申请免费个人网站空间
  • 制作广告网站的步骤云服务器做网站
  • ipv6可以做网站吗东莞网站建站推广
  • 注册功能的网站怎么做做网站容易还是编程容易
  • wordpress建立目录seo编辑培训