快彩网cai票php源码thinkphp框架开发webpack 与 vue

String、StringBuffer、StringBuilder都是JAVA中常用的字符串操作类,对于他们的区别大家也都能耳熟能详,但底层到底是怎样实现的呢?今天就再深入分析下这三种字符串操作的区别、各自的原理及使用场景。 ???????请尊重作者劳动成果,转载请标明原文链接:快彩网cai票php源码https://dashengba.com 大圣源码论坛扣3266397597 一、String ???????先来看一下JDK中String中的部分源码: ????????可以看到String类、以及value都是final类型的,这样就表明String是无法被继承的,value是无法被改写的。当通过String的构造函数初始化新的String对象时,也只是根据传入的引用对象的value和hashcode进行了赋值。看下面的例子: Vew Code ???????执行javac StringTest.java后,通过javap -v StringTest.class看下生成的class文件: ????????可以看到对于相同的字符串“abc”的引用都是相同的(对于常量池中的相同位置),这样能够节省内存空间,但是缺点就是对于频繁的字符串拼接操作,会造成内存空间的浪费。(需要注意的是这种字符串的拼接操作,从JDK8 开始,会自动被编译成StringBuilder,是不是很666^_^,但还是建议不通过JDK途径去自动转。)看下面的代码: ???????然后再通过javap看下class文件: 二、StringBuilder ???????也是先来看StringBuilder的源码: ????????可以看到StringBuilder的value是个char数组,(当然从JDK9开始,value从char数组变成了byte数组)。每次append时都是通过调用native的System.arraycopy实现的(在getChars中调用的)。 三、StringBuffer S???????tringBuffer的源码如下: ????????和StringBuilder一样,都是用了char数组保存value,append也是调用了AbstractStringBuilder的append方法。区别只是在于char数组加了transient关键字,以及方法上加了synchronized方法。 ???????综上所述,String、StringBuilder、StringBuffer的使用场景如下: ???????当处理定长字符串时,建议用String; ???????当处理变长字符串时,并且是单线程环境时,建议用StringBuilder; ???????当处理变长字符串时,并且是多线程环境时,建议用StringBuffer。

原文地址:http://blog.51cto.com/13859161/2139007

时间: 2024-10-06 17:59:05

快彩网cai票php源码thinkphp框架开发webpack 与 vue的相关文章

最完整网狐荣耀棋牌源码编译、搭建教程

我手里有多套网狐的棋牌源码,有空的时候也经常自己专研,网狐的代码质量很高,基本上都能编译通过.不过要搭建一个棋牌平台,肯定是很耗费时间跟经历的. 我先用的是6603版本,经过分析和研究,服务器这边主要是缺少KernelEngine的源码,客户端这边主要是缺少NetworkService的源码.都是核心的网络库和基础库呀,还好在网上其他地方找到了这2个工程的源码,整理编译之后发现和主体版本还是能够对上. 由于流出来的版本是VS2003的工程,我顺手就把网狐的代码移植到VS2012了,顺便把服务器移

网狐棋牌源码搭建2017年最新网狐荣耀棋牌源码搭建下载

2017年最新网狐荣耀棋牌源码:含大厅全套源码+客户端+服务端+网站+后台+完整数据库 (更多详情网狐棋牌源码搭建 www.yasewl.com QQ:2189563389)

聚融网贷款投标助手源码(Android)

聚融网贷款投标助手源码(Android) 本项目是一个安卓版本的聚融网贷款投标助手项目源码,一般公司或者开发者都不会把这类内部使用的项目源码泄漏出来,这个项目是依托于他的官网的orong.cn,但是现在官网挂掉了,估计整个公司跑路了才会分享出来,因为项目缺少部分图片资源所以原项目会报错,我使用资源目录下的其他图片文件对缺少的图片资源进行了替代,可能图片显示会有错误但是整个项目可以正常的运行起来,项目很大.本项目默认编译版本4.2.2编码UTF-8,项目有比较详细的注释代码质量也很高,相信里面的功

Silverlight管理系统源码(用于开发ERP、OA、CRM、HR、进销存、财务等系统之用)

Silverlight大型管理系统源代码(支持创建ERP.OA.CRM.HR.进销存.财务等系统之用) 可用于开发以下系统 SilverlightERP SilverlightCRM SilverlightHR Silverlight财务软件 Silverlight管理系统 SilverlightOA 由于产品对外保密,所以界面和试用请联系北京动点飞扬咨询,提供完整源代码和数据库.开发文档 QQ:372900288 电话:13911652504 Silverlight管理系统源码(用于开发ERP

[分享]错误“应用程序Xcode的这个版本不能与此版本的OS X配合使用”以及Mac源码和IOS开发资料分享

??[分享]错误"应用程序Xcode的这个版本不能与此版本的OS X配合使用"以及Mac源码和IOS开发资料分享 安装Xcode时,出现"应用程序Xcode的这个版本不能与此版本的OS X配合使用"错误如下: 解决方案是: /system/libary/coreservice/SystemVersion.plist中的两个10.10为10.10.5 修改过程会提示无权限修改,要不要建立副本,点击提示框中的"复制"按钮,存到桌面上. 点击一个文件右

Ubuntu编译源码搭建PHP开发环境

准备源码: 1.mysql的源码:mysql-5.5.15.tar.gz 2.apache的源码:httpd-2.2.19.tar.gz 3.php的源码:php-5.3.6.tar.gz 第一步,安装MySql groupadd mysql                                添加一个mysql用户组useradd -g mysql mysql                  添加一个mysql到用户,此用户属于mysql组 tar -xzvf mysql-5.5.

群控云控源码二次开发定制

群控云控源码二次开发定制系统介绍:群控系统是在windows系统下运行的,具有操作简单,运行稳定,升级方便,功能丰富等优点,系统同时可以管理大量wei信帐号,一号一机,安全稳定,不容易封号主要功能:通过Android自动化控制集成系统,把多个手机操作界面直接映射到电脑显示器,实现一台电脑来控制多部手机操作.批量发朋友圈,批量wei信聊天,自动化批量加好友,便捷智能,稳定防封号.群控系统介绍实时群控 支持一台电脑控制管理15-300部手机,电脑画面和手机屏幕实时同步操作自动营销电脑一键实现多部手机

【译】Vue源码学习(一):Vue对象构造函数

本系列文章详细深入Vue.js的源代码,以此来说明JavaScript的基本概念,尝试将这些概念分解到JavaScript初学者可以理解的水平.有关本系列的一些后续的计划和轨迹的更多信息,请参阅此文章.有关本系列的文章更新进度的信息,请关注我的Tweeter.本系列的文章目录,请查看该链接. Vue对象构造函数 Vue实例是深入了解Vue源代码的一个基本点.正如Vue官方文档所说那样,"每个Vue应用程序都是通过使用Vue函数创建一个新的Vue实例来开始的." 在Vue的源码中,一个新

Vue源码学习(六)之虚拟DOM——Vue中的DOM-Diff (上)

1. 前言 在上一篇文章介绍VNode的时候我们说了,VNode最大的用途就是在数据变化前后生成真实DOM对应的虚拟DOM节点,然后就可以对比新旧两份VNode,找出差异所在,然后更新有差异的DOM节点,最终达到以最少操作真实DOM更新视图的目的.而对比新旧两份VNode并找出差异的过程就是所谓的DOM-Diff过程.DOM-Diff算法时整个虚拟DOM的核心所在,那么接下来,我们就以源码出发,深入研究一下Vue中的DOM-Diff过程是怎样的. 2. patch 在Vue中,把 DOM-Dif