StringBuilder -字符串缓冲区,节约内层空间变长数组
package cn.learn;
/*
字符串缓冲区 -缓冲可提高效率
java.lang.StringBuilder
字符串的底层是一个被final修饰的数组,不能改变,是一个常量
private final byte[] value;
也就是说在字符串相加时,会生成多个字符串,占用空间效率低下
eg:String str = "a"+"b"+"c"
会有a,b,c,ab,abc五个字符串,jdk1.5以后用的是SttingBuilder.append("a").append. 而StringBuilder类,可提高效率(可以看成一个长度可以变换的字符串)
byte[] value = new byte[16]; //默认长度16
注:StringBuilder在内存中始终是一个数组,占用空间少,效率高,如果超出了StringBuilder
的容量会自动扩容
底层是一个没有被final修饰的数组,可以改变长度 使用StringBuilder,添加数据元素不会改变数组的源地址,即不会生成新数组 */
public class StringBuilderApi {
public static void main(String[] args) {
//无参构造,默认长度16,里面为空白
StringBuilder str = new StringBuilder();
//有参构造,实际是把String转换了StringBuilder
StringBuilder str1 = new StringBuilder("cn.learn");
System.out.println(str1); //cn.learn
//添加数据,返回对象当前本身即可以再进行添加 append(附加),即不生成新数组
System.out.println(str1.append(".huxiaobai").append(".dada")); //toString,可以将StringBuilder转换为toString,有参构造可以传对象
StringBuilder toStr= new StringBuilder(str1);
System.out.println(toStr.toString()); } }
StringBuilder -字符串缓冲区,节约内层空间变长数组的更多相关文章
- C++内存分配及变长数组的动态分配
//------------------------------------------------------------------------------------------------ 第 ...
- GCC 中零长数组与变长数组
前两天看程序,发现在某个函数中有下面这段程序: int n; //define a variable n int array[n]; //define an array with length n 在 ...
- PL/SQL — 变长数组
PL/SQL变长数组是PL/SQL集合数据类型中的一种,其使用方法与PL/SQL嵌套表大同小异,唯一的区别则是变长数组的元素的最大个数是有限制的.也即是说变长数组的下标固定下限等于1,上限可以扩展.下 ...
- oracle:变长数组varray,嵌套表,集合
创建变长数组类型 ) ); 这个变长数组最多可以容纳两个数据,数据的类型为 varchar2(50) 更改元素类型的大小或精度 可以更改变长数组类型和嵌套表类型 元素的大小. ALTER TYPE ...
- PL/SQL 嵌套表变长数组和索引表[转]
关于PL/SQL中这三种数组的介绍,不想写了.转一篇日志吧…… 链接:http://www.blogjava.net/decode360/archive/2008/08/08/280825.html ...
- C语言变长数组data[0]总结
C语言变长数组data[0] 1.前言 今天在看代码中遇到一个结构中包含char data[0],第一次见到时感觉很奇怪,数组的长度怎么可以为零呢?于是上网搜索一下这样的用法的目的,发现在linux内 ...
- C99新特性:变长数组(VLA)
C99标准引入了变长数组,它允许使用变量定义数组各维.例如您可以使用下面的声明: ; ; double sales[rows][cols]; // 一个变长数组(VLA) 变长数组有一些限制,它必须是 ...
- c语言,变长数组
下面这个结构体,可以在malloc的时候指定数据data的长度,这样的形式就是变长数组:typedef struct{ int data_len; char data[0];//或char data[ ...
- C99中的变长数组(VLA)
处理二维数组的函数有一处可能不太容易理解,数组的行可以在函数调用的时候传递,但是数组的列却只能被预置在函数内部.例如下面这样的定义: #define COLS 4 int sum3d(int ar[] ...
随机推荐
- 【Matlab技巧】工作区变量如何添加到Simulink中?
对新手来说,在进行simulink仿真时想把工作区的变量添加到Simulink中,这样在如transfer模块中使用时可以直接输变量即可. 如这样: 那么如何对Simulink仿真文件自动赋值呢? 1 ...
- mybatis-plus&springboot
** 问题1:mybatis 读取不到 mapper映射文件. 如下: ** 如果引用 mybatis-plus 包 <dependency> <groupId>com.bao ...
- Azkaban和Oozie的区别
Azkaban和Oozie的区别: 当前,实际生产中最流行的两种Hadoop工作流引擎是Azkaban与Oozie.但活跃度最高的当是Azkaban了,下面对两者的异同之处作如下对比. 功能对比 Az ...
- smarty之缓存机制
当smarty开启缓存时,当tpl文件内容改变时,则缓存页面会重新生成 test.php: <?php date_default_timezone_set('asia/shanghai'); h ...
- MYSQL学习笔记——数据类型
mysql的数据类型可以分为三大类,分别是数值数据类型.字符串数据类型以及日期时间数据类型. 数值数据类型 ...
- Object中有哪些公用方法?
clone()方法 实现对象的浅复制,只有实现了Cloneable接口才能调用该方法. toString()方法 返回该对象的字符串表示. equals()方法: 在Object中与“==”的定义是一 ...
- thinkphp 关联
原理:https://www.kancloud.cn/laowu199/e_dev/448632 示例数据库 hasOne:有一个,加上主谓语应该是 ,A 有一个 BhasMany:有很多,A 有很多 ...
- flask之视图函数从前端接收数据的方法
一:从前端接收查询字符串 query-string 注意:get和post都可以在url后面添加查询字符串?a=1&b=2 测试工具:postman 1:get方式接收 视图函数 from ...
- 【leetcode】516. Longest Palindromic Subsequence
题目如下: 解题思路:很经典的动态规划题目,但是用python会超时,只好用C++了. 代码如下: class Solution { public: int longestPalindromeSubs ...
- css3新增的属性 - 分享
CSS3新增属性 一.transform变换效果 CSS3 提供了元素变形效果,也叫做变换.它可以将元素实现旋转.缩放和平移的功能. 属性有两个:transform 和 transform-ori ...