大家好,欢迎大家在百忙当中来到我的博客文,也许是因为各种需要到此一游,哈哈。不过来到这里不会让您失望的,此段博文是这段时间不忙的时候整理出来的,对于刚学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. 056 模块7-os库的基本使用

    目录 一.os库基本介绍 二.os库之路径操作 2.1 路径操作 三.os库之进程管理 3.1 进程管理 四.os库之环境参数 4.1 环境参数 一.os库基本介绍 os库提供通用的.基本的操作系统交 ...

  2. Linux中新建用户用不了sudo命令问题:rootr is not in the sudoers file.This incident will be reported解决

    参考:https://blog.csdn.net/lichangzai/article/details/39501025 如果执行sudo命令的用户没有执行sudo的权限,执行sudo命令时会报下面的 ...

  3. 从壹开始学习NetCore 44 ║ 最全的 netcore 3.0 升级实战方案

    缘起 哈喽大家中秋节(后)好呀!感觉已经好久没有写文章了,但是也没有偷懒哟,我的视频教程<系列一.NetCore 视频教程(Blog.Core)>也已经录制八期了,还在每周末同步更新中,欢 ...

  4. mysql命令行乱码解决办法

     解决办法: 修改mysql的配置文件my.ini,打开my.ini找到default-charactor-set,改为utf8. 进入命令行: show variables like'%char%' ...

  5. 带你入门SpringCloud统一配置 | SpringCloud Config

    前言 在微服务中众多服务的配置必然会出现相同的配置,如果配置发生变化需要修改,一个个去修改然后重启项目的方案是绝对不可取的.而 SpringCloud Config 就是一个可以帮助你实现统一配置选择 ...

  6. Day 8 面试题

    一.选择题(每题2分) #####1.1 设超级用户root当前所在目录为:/usr/local,键入cd命令后, 用户当前所在目录为(B) A:/home B:/root C:/home/root ...

  7. Sping学习笔记(一)----Spring源码阅读环境的搭建

    idea搭建spring源码阅读环境 安装gradle Github下载Spring源码 新建学习spring源码的项目 idea搭建spring源码阅读环境 安装gradle 在官网中下载gradl ...

  8. php接受的post数据类型

    通常情况下用户使用浏览器网页表单向服务器post提交数据,我们使用PHP的$_POST接收用户POST到服务器的数据,并进行适当的处理.但有些情况下,如用户使用客户端软件向服务端php程序发送post ...

  9. FPGA 开发详细流程你了解吗?

    FPGA 的详细开发流程就是利用 EDA 开发工具对 FPGA 芯片进行开发的过程. FPGA 的详细开发流程如下所示,主要包括电路设计.设计输入.综合(优化).布局布线(实现与优化).编程配置五大步 ...

  10. Windows认证 | Windows本地认证

    Windows的登陆密码是储存在系统本地的SAM文件中的,在登陆Windows的时候,系统会将用户输入的密码与SAM文件中的密码进行对比,如果相同,则认证成功. SAM文件是位于%SystemRoot ...