大家好,欢迎大家在百忙当中来到我的博客文,也许是因为各种需要到此一游,哈哈。不过来到这里不会让您失望的,此段博文是这段时间不忙的时候整理出来的,对于刚学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的一些小整理的更多相关文章

  1. java 开发面试题小整理(一)

    本篇文档将持续更新,有基础滴,也有深层次的,谢谢! 1.看下面的程序是否有问题,如果有问题,请指出并说明理由. * byte b1 = 3; * byte b2 = 4; * byte b3 = b1 ...

  2. String、StringBuffer、StringBuidler 知识整理

    String.StringBuffer.StringBuidler.这三个家伙,大家都不陌生,肯定也都会用.三者异同大家都能说出来,但是其根本原因是什么呢?带着下面问题,学习一下. 第一.String ...

  3. kafka 第一次小整理(草稿篇)————演变[二]

    前言 简单整理一些kafka的设计. 正文 前文提及到log 的重要性,以及kafka在其中的作用,起着一个日志管理分发的作用,对于其他服务来说相当于新闻报社,订阅某种主题就会收到某类信息. 当人们意 ...

  4. 浏览器兼容性小整理和一些js小问题(后面会继续更新)

    最近在啃jQuery的源码,估计会啃到很多浏览器兼容性的问题,所以整理一下 1,IE下的内存泄露. 在IE中不在DOM树中的独立节点有javascript变量引用它的时候不会被回收. 解决:手动将该j ...

  5. Linq小整理

    Linq(Language Integrated Query)中文翻译为语言集成查询 (1)源起 .net的设计者在类库中定义了一系列的扩展方法 来方便用户操作集合对象 这些扩展方法构成了LINQ的查 ...

  6. java 开发面试题小整理(二)

    51.Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口? 答:可以继承其他类或实现其他接口,在Swing编程和Android开发中常用此方式来实现事件监听和 ...

  7. Mybatis 高级查询的小整理

    高级查询的整理 // resutlType无法帮助我们自动的去完成映射,所以只有使用resultMap手动的进行映射 resultMap: type 结果集对应的数据类型 id 唯一标识,被引用的时候 ...

  8. kafka 第一次小整理(草稿篇)————整理一下自己的认知

    前言 简单整理一些自己使用kafka的一些感受. 正文 一切都要回到真实的世界上, 计算机世界只是真实事件的一个缩影. 计算机世界有一个重要的东西,那就是数据库. 数据库记录着真实世界发生了什么,准确 ...

  9. kafka 第一次小整理(草稿篇)————分发的基本思路[三]

    前言 简单整理一下分发的基本思路. 正文 kafka 原本是做日志管理系统,主要是分发这块的. 那么如何做分发呢? 分发的是什么呢? 分发的其实是日志,日志是事件状态,kafka 内部就叫做Recor ...

随机推荐

  1. 011 实例2-Python蟒蛇绘制

    目录 一."Python蟒蛇绘制"问题分析 1.1 Python蟒蛇绘制 二."Python蟒蛇绘制"实例编写 三.运行效果 3.1 程序关键 四." ...

  2. 阿里yum源与华为yum源的配置

    如何使用华为云提供的CentOS镜像源(x86_64)?   更新时间:  2019/08/16 11:17 查看PDF                 分享 微博 分享文档到微博 微信 扫码分享文档 ...

  3. getMeasuredHeight()与getHeight() 以及MeasureSpec.getSize()

    getMeasuredHeight()返回的是原始测量高度,与屏幕无关,getHeight()返回的是在屏幕上显示的高度.实际上在当屏幕可以包裹内容的时候,他们的值是相等的,只有当view超出屏幕后, ...

  4. 使用vitamio长时间播放崩溃的另类处理

    最近公司一个项目在公交站旁边弄一个 广告牌,上面是广告视频,下面是广告图片,都是无限轮播的.要求从早上6点到晚上11点不间断播放.剩余时间为关机状态. 图片部分还好说,就是viewpager弄一个无限 ...

  5. 剖析nsq消息队列(二) 去中心化代码源码解析

    在上一篇帖子剖析nsq消息队列(一) 简介及去中心化实现原理中,我介绍了nsq的两种使用方式,一种是直接连接,还有一种是通过nslookup来实现去中心化的方式使用,并大概说了一下实现原理,没有什么难 ...

  6. .Net基础篇_学习笔记_第六天_异常捕获复习及断点调试

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. kafka经典入门

    问题导读 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic.发送消息.消费消息?3.如何书写Kafka程序?4.数据传输的事务定义有哪三种?5.Kafka判断一个节点是否活着有 ...

  8. 三句话告诉你break、return、continue!

    break:终止循环执行循环体下面的代码 return:终止循环并且退出循环所在的方法 continue:终止当前循环,进行下一次循环

  9. SpringBoot启动zipkin-server报错Error creating bean with name ‘armeriaServer’ defined in class path resource

    目前,GitHub 上最新 release 版本是 Zipkin 2.12.9,从 2.12.6 版本开始有个较大的更新,迁移使用 Armeria HTTP 引擎. 从此版本开始,若直接添加依赖的 S ...

  10. 浅谈HDFS(一)

    产生背景及定义 HDFS:分布式文件系统,用于存储文件,主要特点在于其分布式,即有很多服务器联合起来实现其功能,集群中的服务器各有各的角色 随着数据量越来越大,一个操作系统存不下所有的数据,那么就分配 ...