1.StringBuffer类的概述

* A:StringBuffer类概述
  * 通过JDK提供的API,查看StringBuffer类的说明
  * 1.线程安全的可变字符序列。
  * 2.可将字符串缓冲区安全地用于多个线程。
  * 3.StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。
  * 4.每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。从 JDK 5 开始,为该类补充了一个单个线程使用的等价类,即 StringBuilder。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。

* B:简述安全问题
  * 线程安全效率低
* C:StringBuffer和String的区别
  * String是一个不可变的字符序列。
  * StringBuffer是一个可变的字符序列。

2.StringBuffer类的构造方法

* A:StringBuffer的构造方法:
  * public StringBuffer():无参构造方法
  * public StringBuffer(int capacity):指定容量(16)的字符串缓冲区对象
  * public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
* B:StringBuffer的方法:
  * public int capacity():返回当前容量。 理论值(16不掌握)
  * public int length():返回长度(字符数)。 实际值

3.StringBuffer的添加功能和删除功能

* A:StringBuffer的添加功能
  * public StringBuffer append(String str):
  * 可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
  * public StringBuffer insert(int offset,String str):
  * 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身

* B:StringBuffer的删除功能
  * public StringBuffer deleteCharAt(int index):
    * 删除指定位置的字符,并返回本身
  * public StringBuffer delete(int start,int end):
    * 删除从指定位置开始指定位置结束的内容,并返回本身,包含头不包含尾。

4.StringBuffer的替换和反转功能

* A:StringBuffer的替换功能
  * public StringBuffer replace(int start,int end,String str):
  * 从start开始到end用str替换
* B:StringBuffer的反转功能
  * public StringBuffer reverse():
  * 将字符串反转

5.StringBuffer的截取功能及注意事项

* A:StringBuffer的截取功能
  * public String substring(int start):
    * 从指定位置截取到末尾
  * public String substring(int start,int end):
    * 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
* B:注意事项
  * 注意:返回值类型不再是StringBuffer本身,而是String。

6.StringBuffer和String的相互转换

* A:String --> StringBuffer
  * a:通过构造方法
    * 1.StringBuffer sb = new StringBuffer("myworld");//创建对象,一创建就调用构造方法。
  * b:通过append()方法
    * 2.StringBuffer sb = new StringBuffer();
     * sb.append("myworld");
* B:StringBuffer --> String
  * a:通过构造方法
    * 1. StringBuffer sb = new StringBuffer("wwwwh");
    * String s = new String(sb);
  * b:通过toString()方法
    * 2. StringBuffer sb = new StringBuffer("wwwwh");
    * String s = sb.toString();
  * c:通过subString(0,length);
    * 3. StringBuffer sb = new StringBuffer("wwwwh");
    * String s = sb.substring(0,sb.length());

7.把数组转成字符串

* 需求:把数组中的数据按照指定个格式拼接成一个字符串
举例:
int[] arr = {1,2,3};
输出结果:
"[1, 2, 3]"
用StringBuffer的功能实现
public static void main(String[] args) {
int[] arr = {1,2,3};
StringBuffer sb = new StringBuffer("[");
for (int i = 0; i < arr.length; i++) {
if(i == 2){
sb.append(arr[i] + "]");
}else {
sb.append(arr[i] + ",");
}
}
System.out.println(sb);
}

8.字符串反转

需求:把字符串反转
举例:键盘录入"abc"
输出结果:"cba"
用StringBuffer的功能实现
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请从键盘输入一个字符串:");
String str = sc.nextLine();
StringBuffer sb = new StringBuffer(str);//利用构造把字符串对象转化成StringBuffer对象
str = sb.reverse().toString();//利用StringBuffer类中的反转功能,然后再转化成字符串
System.out.println(str);
}

9.StringBuffer和StringBuilder的区别

* A:StringBuilder的概述
  * 通过查看API了解一下StringBuilder类
  * 1.一个可变的字符序列。
* B:面试题
  * String,StringBuffer,StringBuilder的区别?
  * StringBuffer和StringBuilder的区别。
    * StringBuffer是jdk1.0版本的,是线程安全的,效率低。
    * StringBuilder是jdk1.5版本的,是线程不安全的,效率高。

  * String和StringBuffer,StringBuilder的区别?
    * String是一个不可变的字符序列。
    * StringBuffer,StringBuilder是可变的字符序列。

10.String和StringBuffer分别作为参数传递

* String作为参数传递
  * String不会改变原有对象的值,一旦初始化就不能被改变
* StringBuffer作为参数传递
  * StringBuffer会改变原有对象的值。

11.数组高级冒泡排序原理案例

需求:
数组元素:{24, 69, 80, 57, 13}
请对数组元素进行排序。 冒泡排序
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处
public static void main(String[] args) {
int[] arr = {24,69,80,57,13};
for (int i = 0; i < arr.length - 1; i++) { //外层循环控制的是找到最大的数为止
for (int j = 0; j < arr.length - 1 - i; j++) { //内层循环控制的是俩俩相比较的次数
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for (int i : arr) {
System.out.println(i);
}
}

数组高级选择排序原理

* 需求:
* 数组元素:{24, 69, 80, 57, 13}
* 请对数组元素进行排序。 * 选择排序
* 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处
public static void main(String[] args) {
int[] arr = {66,55,44,33,22,11};
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) { //j = i+1 的作用是:当获取到最小值后,就该从下一位进 行比较
if(arr[i] > arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for (int i : arr) {
System.out.println(i);
}
}

12.Arrays类的概述和方法使用

* A:Arrays类概述
  * 1.此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
  * 2.除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出 NullPointerException。
  * 针对数组进行操作的工具类。
  * 提供了排序,查找等功能。
* B:成员方法
  * public static String toString(int[] a) //返回指定数组内容的字符串表示形式。
  * public static void sort(int[] a) //对int数组按数字升序进行排序
  * public static int binarySearch(int[] a,int key) //使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。

13.基本类型包装类的概述

* A:为什么会有基本类型包装类
* 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。
* B:常用操作
* 常用的操作之一:用于基本数据类型与字符串之间的转换。
* C:基本类型和包装类的对应
*
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

14.Integer类的概述和构造方法

* A:Integer类概述
  * 通过JDK提供的API,查看Integer类的说明
  * 1.Integer 类在对象中包装了一个基本类型 int 的值。
  * 2.该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,
  * 3.还提供了处理 int 类型时非常有用的其他一些常量和方法
* B:构造方法
  * 1.public Integer(int value) //构造一个新分配的 Integer 对象,它表示指定的 int 值。
  * 2.public Integer(String s) //构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。

15.String和int类型的相互转换

* A:int -- String
* 1:和""(空字符串)进行拼接
* int num = 100;
* String s = num + "";
* 2:public static String valueOf(int i) //String 类中的ValueOf()方法,可将任意类型的数据,转换成字符串
* int num = 100;
* String s = String.valueOf(num);
* 3:int -- Integer -- String(Integer类的toString方法())
* Integer i = new Integer(100);
* String s = i.ToString();
* 4:public static String toString(int i)(Integer类的静态方法)
* String s = Integer.ToString(100);
* B:String -- int
* 1:String -- Integer -- int
* public static int parseInt(String s)
* String s = "100";
* int i = Integer.parseInt(s);

16.JDK5的新特性自动装箱和拆箱

* A:JDK5的新特性
  * 自动装箱:把基本类型转换为包装类类型
  * 自动拆箱:把包装类类型转换为基本类型
* B:案例演示
  * JDK5的新特性
    * 1.自动装箱和拆箱
    * 2.泛型
    * 3.增强for循环
    * 4.静态导入(导入的是方法)
    * 5.可变参数(其实就是一个大小可变的数组)
    * 6.互斥锁
  * Integer ii = 100;//自动装箱
  * ii += 200;//自动拆箱。

* C:注意事项
  * 在使用时,Integer x = null;代码就会出现NullPointerException。
  * 建议先判断是否为null,然后再使用。

stringBuffer、StringBuilder、排序、Arrays、Jdk1.5新特性(java基础知识十三)的更多相关文章

  1. JDK1.5新特性,基础类库篇,集合框架(Collections)

    集合框架在JDK1.5中增强特性如下: 一. 新语言特性的增强 泛型(Generics)- 增加了集合框架在编译时段的元素类型检查,节省了遍历元素时类型转换代码量. For-Loop循环(Enhanc ...

  2. JDK1.6新特性,基础类库篇,集合框架(Collections)

    2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马). 集合框架增强如下: 1. 增加了如下新接口(Int ...

  3. JDK1.6新特性,基础类库篇,IO支持

    1. JDK1.6中提供了java.io.Console类 JDK1.6中提供了java.io.Console 类专用来访问基于字符的控制台设备.你的程序如果要与Windows下的cmd或者Linux ...

  4. JDK1.5新特性,基础类库篇,线程类(Thread)增强了哪些

    java.lang.Thread类增强特性如下: 线程优先级已经更改.java.lang.Thread.MIN_PRIORITY = 1 java.lang.Thread.NORM_PRIORITY ...

  5. JDK1.5新特性,基础类库篇,调用外部命令类(ProcessBuilder)用法

    一. 背景 ProcessBuilder类是用来创建操作系统进程的.与Runtime.exec相比,它提供了更加方便的方法以创建子进程. 每个ProcessBuilder实例管理着一个进程属性的集合. ...

  6. JDK1.5新特性,基础类库篇,XML增强

    Document Object Model (DOM) Level 3 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口.DO ...

  7. JDK1.5新特性,基础类库篇,System类

    一. 背景 System.getenv(String)方法继续有效:增加了新的System.getenv()方法,返回保存环境变量的Map<String,String>. 同时增加了以纳秒 ...

  8. JDK1.6新特性,基础类库篇,Jar与Zip增强

    1. API改变 增加了两个实现类 java.util.zip.DeflaterInputStream: 此类为解压缩 "deflate" 压缩格式的数据实现流过滤器.它还用作其他 ...

  9. JDK1.5新特性,基础类库篇,浅谈并发工具包(Concurrency Utilities)

    java.util.concurrent, java.util.concurrent.atomic, 和 java.util.concurrent.locks 包提供了高性能的.可扩展的框架,保证开发 ...

随机推荐

  1. .net面试题汇总-第二篇

    本篇主要关注下,.net面试题中经常用的算法问题 1.有一群猴子,它们每天要吃桃子,它们第一天吃的数量是总量的一半再多一个,第二天吃的是第一天剩下的一半再多一个,第三天吃的是第二天剩下的一半多一个,以 ...

  2. 同时在windows和linux环境开发时换行符的处理

    Git 的 core.autocrlf 參數默认为true,即每次 checkin 時,Git 會將純文字類型的檔案中的所有 CRLF 字元轉換為 LF,也就是版本庫中的換行符號一律存成 LF:在 c ...

  3. es6 递归 tree

    function loop(data) { let office = data.map(item => { if(item.type == '1' ||item.type == '2') { i ...

  4. Codeforces 713C Sonya and Problem Wihtout a Legend(DP)

    题目链接   Sonya and Problem Wihtout a Legend 题意  给定一个长度为n的序列,你可以对每个元素进行$+1$或$-1$的操作,每次操作代价为$1$. 求把原序列变成 ...

  5. Java抓屏程序代码

    原文:http://www.open-open.com/code/view/1422262655200 import java.awt.Dimension; import java.awt.Recta ...

  6. poj 2135 Farm Tour 最小费最大流

    inf开太小错了好久--下次还是要用0x7fffffff #include<stdio.h> #include<string.h> #include<vector> ...

  7. People seldom do what they believe in. They do what is convenient, then repent.

    People seldom do what they believe in. They do what is convenient, then repent. 人们很少真正实践他们的理想.他们只做比较 ...

  8. Xcode 技巧充电篇

    作为project师,我们最重要的事情就是熟悉我们每天使用的日常工具,但不能仅限于此.仅仅要有可能,我们应该试着掌握和定制能使我们更快.更轻松地实现终于目标的工具.以下是一些小提示和技巧,都是我在 X ...

  9. 亲测linux上安装svn

    方法一: 1.wget http://subversion.tigris.org/downloads/subversion-1.6.1.tar.gz2.wget http://subversion.t ...

  10. HDU 1114 Piggy-Bank (完全背包)

    Piggy-Bank Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...