您的位置:首页 > 职场人生

黑马程序员----java基础String和stringbuffer总结

2015-08-01 00:31 633 查看
------<a target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

黑马程序员----java基础String和stringbuffer总结

课堂总结:

/第十三天 总结

1. String

1.1 判断

|-- equals 判断字符串全等

|-- equalsIgnoreCase 判断字符串,忽略大小写

|-- contains 判断字符串是否包含

|-- startsWith 判断字符串开头

|-- endsWith 判断字符串结尾

|-- isEmpty 判断字符串是不是空

1.2 获取

|-- charAt 获取指定索引上的字符

|-- indexOf 获取字符第一次出现索引

|-- lastIndexOf 获取字符最后一次出现的索引

|-- substring 获取字符串一部分 包含头不包含尾

|-- length 获取字符串长度

1.3 转换

|-- getBytes 字符串转成字节数组,查询编码表

|-- toCharArray 字符串转成字符数组,不查询编码表

|-- toUpperCase 字符串全转大写

|-- toLowerCase 字符串全转小写

|-- concat 连接字符串

|-- static valueOf 任意类型转成字符串

1.4 其他方法

|-- split 切割字符串

|-- replace 替换字符串

|-- trim 去掉两端空格

|-- compareTo 字典顺序比较字符串,字符串的自然顺序

1.5 构造方法

|-- 字节数组转成字符串 new String(byte[] bytes)

|-- 字符数组转成字符串 new String(char[] ch)

2. 字符串特性

|-- 特殊,不需要new ""就是对象

|-- 不变特性

|-- 面试题

s =""

s = new String()

写程序证明不变性

变量和常量运算

3. 练习

|-- 字符串反转

|-- 获取出现次数

4. StringBuffer特点

|-- 缓冲区,提高字符串的效率

|-- 字符数组,通过复制实现可变长度

|-- 线程安全

|-- 容器

5. StringBuffer类方法

5.1 添加

|-- append 追加数据

|-- insert 指定位置插入数据

5.2 删除

|-- deletedCharAt 删除指定索引上的字符

|-- delete 删除两个索引之间的范围

5.3 修改

|-- setCharAt 修改的是指定索引上的单个字符

5.4 其他

|-- reverse 缓冲区反转

|-- replace 替换缓冲区,替换的是一个索引范围

5.5 转换

|-- String - StringBuffer

StringBuffer构造方法, append

|-- StringBuffer - String

StringBuffer方法toString

6. StringBuffer和StringBuilder区别

Buffer线程安全,速度慢

Builder线程不安全,速度快

作业题:

1. 字符串的两种定义方式的区别

String s="asdf";

创建了一个对象 "asdf"放在常量池里,

String s2=new String(asdf);

创建了两个对象一个在堆里 另一个在常量池

2. String类的特点是什么

String特点:不变性

String类是的本质是字符数组char[], 并且其值不可改变。

3. 编写程序证明String类的不变性

String s="abc";

String s2=s.toUpperCase();

System.out.println(s);

字符串s指向"abc",全为小写;字符串s2由a得来,指向"ABC";这时a的内容并没有变化,

4. 编程题

A. 自定义方法,实现两个字符串的比较,完全相等返回true

"azd" "rh"

一个个的比

数组 --> 长度

遍历,获取每个,对比,不同直接反false

String s1="asdfg";

String s2="asdfgrt";

int i=s1.compareTo(s2);

System.out.println(i);

B. 将字符串中的字符进行大小写互转

"aghEGweGHE"

利用ASCII 97-122 65-90 相差32

字符串变成数组

遍历 获取元素

判断ASCII范围

'a' <97

存储回数组

package day13;

/*

* B.将字符串中的字符进行大小写互转

*/

public class Test13 {

public static void main(String[] args) {

String s1=method();

System.out.println(s1);

}

public static String method(){

//创建字符串

String string="AddQhBjFROiu";

//创建一个StringBuffer的对象.

StringBuffer s=new StringBuffer();

//转换成字符型数组

char[] ch=string.toCharArray();

//遍历

for (int i = 0; i < ch.length; i++) {

//大写字母转换成小写字符

if(ch[i]>'A' && ch[i]<'Z'){

ch[i]+=32;

//把判断出的字符添加到StringBuffer里面

s.append(ch[i]);

}

//小写字母转换成大写字母

else if(ch[i]>'a' && ch[i]<'z'){

ch[i]-=32;

//把判断出的字符添加到StringBuffer里面

s.append(ch[i]);

//其他类型的不转换输出

}else

s.append(ch[i]);

}

return s.toString();

}

C. 判断一个字符串是否是对称。例如 abcba aba

要求字符串长度必须是奇数,不能少于3个字符

对长度判断是不是奇数,长度>=3

最远端两个字符判断,如果相同就是对称

public class Test13_1 {

public static void main(String[] args) {

String s1="asdfg";

boolean b=method(s1);

System.out.println(b);

}

public static boolean method(String s){

for (int i = 0; i < s.length()/2; i++) {

if((s.charAt(i)) != (s.charAt(s.length()-i-1)))

return false;

}

return true;

}

}

5. String类和StringBuffer的区别

StringBuffer是可变的

String是不可变得

6. 自定义方法,实现字符串缓冲区的反转

StringBuffer sb=new StringBuffer("asdfgh");

StringBuffer s2=sb.reverse();

System.out.println(s2);

课堂练习1:

package cn.itcast.string;

import java.util.Scanner;

//import java.util.Scanner;//CTRL+SHIFT+O

/*

* 做3个字符串的练习

*/

public class StringTest {

public static void main(String[] args) {

test_2();

}

/*

* woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”

* 中java出现了5次

* 实现步骤:

* 1. 定义int计数器,保存字符串出现次数

* 2. 字符串使用查找功能indexOf

* indexOf -1 程序结束,找完了

* 3. indexOf结果不是-1

* 计数器++

* 截取字符串 indexOf结果+被找的字符串长度

*/

public static void test_2(){

String big = "woaijavawozhenaijavawozhejavandeaijavawozhendehenaijavaxinbuxijavanwoaijavagun";

String small = "java";

//定义计数器

int count = 0 ;

//定义变量,记录indexOf计算结果

int index = 0 ;

//开始循环查找,结束条件是 indexOf = -1

while ( ( index = big.indexOf(small)) !=-1 ){

//计数器++

count++;

//对字符串进行截取,索引确定 index + 字符串的长度

big = big.substring(index+small.length());

}

System.out.println(count);

}

/*

* 举例:键盘录入”abc” 输出结果:”cba”

* 键盘录入 Scanner类方法nextLine

* 字符串转成字符数组

* 数组反转 -- 数组的最远端换位

* 字符数组变成字符串

*/

public static void test_1(){

//键盘输入

Scanner sc = new Scanner(System.in);

String s = sc.nextLine();

//字符串转成字符数组 toCharArray()

char[] ch = s.toCharArray();

//对数组进行反转,数组中元素确实进行了位置交换

for(int x = 0,y = ch.length-1 ; x < y ; x++,y--){

char temp = ch[x];

ch[x] = ch[y];

ch[y] = temp;

}

//将数组变成字符串

//String构造方法

String s1 = new String(ch);

System.out.println(s1);

}

/*

* 举例:int[] arr = {1,2,3}; 输出结果:[1, 2, 3]

* 获取数组每个元素,进行字符串的拼接

*/

public static void test(){

int[] arr = {1,2,3};

//定义字符串,保存一半中括号

String s = "[";

//数组遍历

for(int x = 0 ; x < arr.length ; x++){

//判断变量x是不是到达了数组的最大索引

if(x != arr.length-1)

//s = s + arr[x]+", ";

s = s.concat(arr[x]+", ");

else

//s = s + arr[x]+"]";

s = s.concat(arr[x]+"]");

}

System.out.println(s);

}

}

练习题2:

package cn.itcast.stringbuffer;

public class StringBufferTest {

public static void main(String[] args) {

String s = test();

System.out.println(s);

}

/*

* 将数组拼接成字符串

* 采用字符串缓冲区对象StringBuffer类实现

* 节约内存,运行速度就快了

* append取代字符串 + 操作

* 缓冲区变成字符串

*/

public static String test(){

int[] arr = {1,2,3};

//创建缓冲区对象

StringBuffer buffer = new StringBuffer();

buffer.append("[");

for(int x = 0 ; x < arr.length ;x++){

if( x!=arr.length-1)

buffer.append(arr[x]+", ");

else

buffer.append(arr[x]+"]");

}

return buffer.toString();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: