StringBuffer的一些小整理
大家好,欢迎大家在百忙当中来到我的博客文,也许是因为各种需要到此一游,哈哈。不过来到这里不会让您失望的,此段博文是这段时间不忙的时候整理出来的,对于刚学java基础的同学非常适合。下面言归正传:
首先我们来看看StringBuffer的构造方法:
StringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
StringBuilder(CharSequence seq) 构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符。
StringBuffer(int capacity) 构造一个不带字符,但具有指定初始容量的字符串缓冲区。
StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
下面由代码来解释一下:
package com.zys.stringBuffer; public class Demo1_StringBuffer { public static void main(String[] args) { StringBuffer sb = new StringBuffer();
System.out.println(sb.length());
System.out.println(sb.capacity()); StringBuffer sb2 = new StringBuffer(10);
System.out.println(sb2.length());
System.out.println(sb2.capacity()); StringBuffer sb3 = new StringBuffer("heima");
System.out.println(sb3.length());//实际字符的个数
System.out.println(sb3.capacity());//字符串的length + 初始容量
}
}
/*输出
0,16,0,10,5,21
*/
也就是说StringBuffer有一个字符串缓冲区,其初始化容量默认值为16。其中的length()方法和capacity()方法是StringBuffer类中的方法。
其次,让我们来看看StringBuffer类中常用方法,下面代码每个方法我都抽取成一个方法,这样我觉得好理解一点点,望读者见谅:
package com.zys.stringBuffer; public class Demo2_Conformity {
/**
* public StringBuffer insert(int offset,String str) 将字符串插入此字符序列中
* public StringBuffer deleteCharAt(int index)删除指定元素,并返回本身
* public StringBuffer delete(int start,int end)从指定位置到指定结束
* public StringBuffer replace(int start,int end,String str) 替换
* public StringBuffer reverse(); 反转
*
* StringBuffer的截取功能
* public String substring(int start)从指定位置到结尾
* public String substring(int start,int end)从指定开始位置到指定结束位置,只包含头不包含尾
* 注意:截取功能返回值类型不在是StringBuffer类型,而是String
*
* String --StringBuffer 1.通过构造方法 2.通过append()方法
* StringBuffer --String 1.通过构造方法 2.通过toString()方法 3.通过substring(0,length)
*/
public static void main(String[] args) {
// demo1();插入字符
//demo2();删除字符
//demo3();替换与反转
//demo4();截取字符
/*String和StringBuffer分别传参数的问题 ,String作为常量,被初始化了,将不能改变,此细节一定要注意。
*/
} private static void demo4() {
StringBuffer sb = new StringBuffer("woaiheima");
//String str = sb.substring(0);
//System.out.println(str);
String str2 = sb.substring(2, 9);
System.out.println(str2);
} private static void demo3() {
StringBuffer sb = new StringBuffer("heima");
//sb.replace(0, 3, "bai");
//System.out.println(sb);
StringBuffer sb1 = new StringBuffer("我爱总复习");
sb1.reverse();
System.out.println(sb1);
} private static void demo2() {
StringBuffer sb = new StringBuffer();
sb.append("heima");
// sb.deleteCharAt(4);
sb.delete(0, 2);
// sb.delete(0,sb.length());
System.out.println(sb);
} private static void demo1() {
StringBuffer sb = new StringBuffer("1234");
sb.insert(3, "heima");
System.out.println(sb);
} }
下面来说一下StringBuffer StringBuilder的区别:
*StringBuffer是jdk1.0版本的,是线程安全的,但效率低
* StringBuilder是jdk1.5版本的,是线程不安全的,但效率高
* 注:可拿上厕所的例子比喻
* String StringBuffer StringBuilder
* String是一个不可变的字符序列
* StringBuffer StringBuilder是可变的字符序列
下面来谈一谈冒泡排序和选择排序,通过代码的方式来看:
package com.zys.array; public class Demo1_Array {
/**
*冒泡排序:
*分析:
*1.创建int[]数组
*2.写一个自定义方法,其中这里面写排序逻辑
*3.写一个输出的方法
*冒泡排序与选择排序类同
*/
public static void main(String[] args) {
int[] arr = { 22, 69, 80, 57, 13 };
//bubbleSort(arr);
XuanzeSort(arr);
print(arr);
} public static void XuanzeSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
swap(arr, i, j);
}
}
}
} public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {// 外循环只需比较arr.length-1就好了
for (int j = 0; j < arr.length - 1 - i; j++) {// -1是为了防止越界异常,-i是提高效率 if (arr[j] > arr[j + 1]) {
swap(arr, i, j + i); }
}
}
} public static void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
} public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
再补充一个Integer的方面的一些面试题,看下面代码:
package com.zys.array; public class Demo5_Integer {
public static void main(String[] args) {
Integer i1 = new Integer(97);
Integer i2 = new Integer(97);
System.out.println(i1 == i2);//false
System.out.println(i1.equals(i2));//true
System.out.println("-----------"); Integer i3 = new Integer(128);
Integer i4 = new Integer(128);
System.out.println(i3 == i4);//false
System.out.println(i3.equals(i4));//true
System.out.println("-----------"); Integer i5 = 127;
Integer i6 = 127;
System.out.println(i5 == i6);//true
System.out.println(i5.equals(i6));//true
System.out.println("-----------"); Integer i7 = 128;
Integer i8 = 128;
System.out.println(i7 == i8);//false
System.out.println(i7.equals(i8));//true
/*
* -128到127是byte的取值范围,如果在这个范围取值内,自动装箱不会创建对象,而是在常量池中获取值
* 如果是超过了byte取值范围就会创建对象
* i > -128 && i < 127
*/
}
}
到此,这篇博文就到最后了,大家是不是也收获颇丰呢,我现在也是最基础的。就让我们一块走下去吧,要想改变世界,就先得改变自己。。
StringBuffer的一些小整理的更多相关文章
- java 开发面试题小整理(一)
本篇文档将持续更新,有基础滴,也有深层次的,谢谢! 1.看下面的程序是否有问题,如果有问题,请指出并说明理由. * byte b1 = 3; * byte b2 = 4; * byte b3 = b1 ...
- String、StringBuffer、StringBuidler 知识整理
String.StringBuffer.StringBuidler.这三个家伙,大家都不陌生,肯定也都会用.三者异同大家都能说出来,但是其根本原因是什么呢?带着下面问题,学习一下. 第一.String ...
- kafka 第一次小整理(草稿篇)————演变[二]
前言 简单整理一些kafka的设计. 正文 前文提及到log 的重要性,以及kafka在其中的作用,起着一个日志管理分发的作用,对于其他服务来说相当于新闻报社,订阅某种主题就会收到某类信息. 当人们意 ...
- 浏览器兼容性小整理和一些js小问题(后面会继续更新)
最近在啃jQuery的源码,估计会啃到很多浏览器兼容性的问题,所以整理一下 1,IE下的内存泄露. 在IE中不在DOM树中的独立节点有javascript变量引用它的时候不会被回收. 解决:手动将该j ...
- Linq小整理
Linq(Language Integrated Query)中文翻译为语言集成查询 (1)源起 .net的设计者在类库中定义了一系列的扩展方法 来方便用户操作集合对象 这些扩展方法构成了LINQ的查 ...
- java 开发面试题小整理(二)
51.Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口? 答:可以继承其他类或实现其他接口,在Swing编程和Android开发中常用此方式来实现事件监听和 ...
- Mybatis 高级查询的小整理
高级查询的整理 // resutlType无法帮助我们自动的去完成映射,所以只有使用resultMap手动的进行映射 resultMap: type 结果集对应的数据类型 id 唯一标识,被引用的时候 ...
- kafka 第一次小整理(草稿篇)————整理一下自己的认知
前言 简单整理一些自己使用kafka的一些感受. 正文 一切都要回到真实的世界上, 计算机世界只是真实事件的一个缩影. 计算机世界有一个重要的东西,那就是数据库. 数据库记录着真实世界发生了什么,准确 ...
- kafka 第一次小整理(草稿篇)————分发的基本思路[三]
前言 简单整理一下分发的基本思路. 正文 kafka 原本是做日志管理系统,主要是分发这块的. 那么如何做分发呢? 分发的是什么呢? 分发的其实是日志,日志是事件状态,kafka 内部就叫做Recor ...
随机推荐
- python科学计算与可视化视频教程
目录: 下载链接:https://www.yinxiangit.com/616.html 第一单元TVTK入门-1.mp4第一单元TVTK入门-2.mp4第一单元TVTK入门-3.mp4 第一单元TV ...
- Bootstrap4默认样式不对胃口?教你使用NPM+Webpack+SASS来定制
Bootstrap 是一个流行的前端样式库,可以方便快速的构建应用,但默认样式可能不尽人意,本文就介绍如何使用 NPM, Webpack, SASS 针对它的源码来定制自己的主题.版本使用的是 Boo ...
- Android-隐藏app图标以及隐式启动
隐藏APP桌面图标 <activity android:name=".LaunchActivity"> <intent-filter> <action ...
- JSP中的两种跳转方式分别是什么,有什么区别?
forward跳转:<jsp:forward page ="跳转页面地址"> response跳转:response.sendRedirect("跳转页面地址 ...
- 一个Android 架构师的成长之路
前言 总所周知,当下流行的编程语言有Java.PHP.C.C++.Python.Go等.其中,稳坐榜首的仍然是Java编程语言,且在以面向对象思想占主导的应用开发中,Java往往成为其代名词.Java ...
- web性能优化实践
一.SQL查询优化 1.循环中有多次查询sql,改为在循环外一次查询后再处理 2.循环多次插入,改为组装好数据后批量插入 3.梳理业务逻辑能一次查完的,绝不分多次查 4.索引用起来 5.分页查询 二. ...
- 装系统---------- u盘 安装系统
1.首先根据你的电脑品牌进入bios 模式 如何进入: 不同电脑品牌进入bios 方法 进入之后设置启动方式 将第一启动设置为U盘启动设置好后 使用 Fn + F10 保存 2.使用制作好的 U盘 ...
- HttpServlet类
1.我们知道让Servlet成功在服务端运行,就必须实现Servlet接口,而下面的这种方式没有直接实现Servlet接口,而是间接实现了Servlet接口: import javax.servlet ...
- MyBatis 3.5.2 新特性介绍
1.MyBatis 最新版本 3.5.2 发布 MyBatis最新版本是:3.5.2,发布时间是:2019年7月15日 2.MyBatis 3.5.2 新特征介绍 我们知道,MyBatis 是支持定制 ...
- js屏蔽地区
其实不需要后台代码也可以获取地区信息的,就算是后台代码,也得需要引用一些第三方库提供免费的api接口才可以,最后还是反序列化才能得到想要的数据,那干嘛不直接找,提供好json格式的api接口,拿来js ...