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

------<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. StringBufferStringBuilder区别

  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",全为小写;字符串s2a得来,指向"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();

}

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值