黑马程序员——String

来源:互联网 发布:网络公开课那个好 编辑:程序博客网 时间:2024/06/07 17:14

黑马程序员——String

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------

 

概述:字符串是一个特殊的对象,字符串一但初始化就不可以被改变。

String s1=”abc”;String s2=new String(“abc”)有什么区别?

String s1=”abc”中s1是一个类类型的变量,“abc”是一个对象。

S1在内存中有一个对象,s2在内存中有两个对象

String类适用于描述字符串事物。它提供了多个方法对字符串进行操作。

常见的操作有哪些?

一、获取

1、字符串中包含的字符数,也就是字符串的长度

int length():获取长度

2、根据位置获取位置上某个字符

char charAt(int index):

3根据字符获取该字符在字符串中的位置

int indexOf(int ch):返回字符在字符串第一次出现的位置

int indexOf(int chint fromIndex):从指定位置开始,获取字符在字符串第一次出现的位置

int indexOf(String str):返回字符串在字符串第一次出现的位置

int indexOf(String strint fromIndex):从指定位置开始,获取字符串在字符串第一次出现的位

 

 

二、判断

1、字符串中是否包含某个字串

boolean contains(str)

2、字符串是否有内容

boolean isEmpty()

3、字符串是否以指定内容来头

boolean startWith(str)

4、字符串是否以指定内容结尾

boolean endWith(str)

5、判断内容是否相同

boolean equals(str)

6、判断内容是否相同并忽略大小下

boolean equalsIgnorCase(str)

 

三、转换

1、将字符数组转为字符串

构造函数:

String(char[])

String(char[],offset,count):将字符数组的一部分转成字符串

静态方法:

static String copyValueOf(char[])

static String copyValueOf(char[],offset,count)

static String ValueOf(char[])

 

2、将字符串转为字符数组

char[] toCharArray()

3、将基本数据类型转成字符串

String valueOf(int)

String valueOf(double)

4、将字符串转为字节数组

byte[] getBytes()

5、将字节数组转成字符串

String(byte[])

String(byte[],offset,count)将字节数组中的一部分转成字符串

特殊:字符串和字节数组在转换过程中,是可以指定编码表的。

 

 

 

public class t9{

public static void main(String[] args){

method_get();

method_is();

method_trans();

}

public static void sop(Object obj){

System.out.println(obj);

}

public static void method_get(){

String st="asdfghjfdsaf";

  //长度

sop(st.length());

//根据位置获取位置上某个字符

sop(st.charAt(4));

//根据字符找位置

sop(st.indexOf("s"));

//4位置开始找d,如果没有返回-1

sop(st.indexOf("d",4));

//从后面数起第四位开始找第一个出现的d

sop(st.lastIndexOf("d",4));

}

public static void method_is(){

String str="ArrayDamo.java";

//判断开头

sop(str.startsWith("Array"));

//判断结尾

sop(str.endsWith(".java"));

//判断是否包含

sop(str.contains("Damo"));

}

public static void method_trans(){

char[] arr={'a','b','h','j','y','g','f','d'};

String st=new String(arr,2,3);

String s1="FSDGFDHFTUJF";

char[] ch=s1.toCharArray();

}

}

StringBuffer

概述:字符串的组成原理就是通过该类实现的。StringBuffer可以对字符串的内容进行增删。StringBuffer是一个容器,很多方法与String相同String相同。StringBuffer是可变长度的。

一、存储

append();将指定数据作为参数添加才已有数据的结尾处。

insert(intex,数据);可以将数据插入到制定位置。

二、删除

delete(start,end):删除缓冲区中的数据,包含start,不包含end

deleteCharAt(index):删除指定位置的字符。

三、获取

charAt(int index)

indexOf(String str)

lastIndexOf(String str)

lenth()

substring(start,end)

四、修改

replace(start,end,String str)

setCharAt(index,ch)

五、反转

reverse();

class StringBufferD{

public static void main(String[] args){

 

}

public static void del(){

StingBuffer sb=new StringBuffer(“asdfsg”);

//sb.delete(1,3);

sb.deleteCharAt(2);

}

public static void add(){

StingBuffer sb=new StringBuffer();

StringBuffer sb1=sb.append(34);//

Sop(sb.toString());

Sop(sb1.toString());

}

public static void add(){

StingBuffer sb=new StringBuffer(“asdfsg”);

sb.replacce(1,3,”java”);

sb.setCharAt(2,k);

 

}

public static void sop(String str){

System.out.println(str);

}

}

JDK1.5版本之后出现了StringBuilder,

StringBuffer是线程同步的。

StringBuilder是线程不同步的。

以后开发建议使用StringBuilder

升级三个因素:

1.提高效率

2.简化书写

3.提高安全性

一些字符串练习小程序

/*

 * 模拟一个trim方法,去除字符串两端的空格。

 * 思路:定义两个角标变量start,end,从两角标位置开始判断其对应位置的字符是否为空格。

 * 如果是,就继续向下判断,如果不是就,返回该位置

 *     截取所获的两个位置str.substring(start,end);

 * 

 * 

 * */

public class n1 {

public static void main(String[] args){

String s="    asdf     ";

s=mytrim(s);

show(s);

}

public static void show(String s){

System.out.println(s);

}

public static String mytrim(String s){

int start=0,end=s.length()-1;

while(s.charAt(start)==' ' && start<=end){

start++;

}

while(s.charAt(end)==' ' && start<=end){

end--;

}

s=s.substring(start,end+1);

return s;

}

}

 

 

/*将一个字符串进行反转,将字符串中指定部位进行反转,"abcdefg";"abfedcg"

 * 思路:将字符串转成数组进行操作。

 * 将数组指定位置进行调位操作。

 * 将反转后的字符重新变为字符串

 

*/

 

public class n2 {

public static void main(String[] args){

String s="abcdefg";

show(s);

//show(revers(s));

show(revers(s,1,3));//不包含尾

}

public static void show(String str){

System.out.println(str);

}

public static String revers(String str,int x,int y){

char[] ch=str.toCharArray();

fun(ch,x,y);

return new String(ch);

}

public static void fun(char[] ch,int x,int y){

for(int start=x,end=y-1;x<y;x++,y--){

char temp=ch[start];

ch[start]=ch[end];

ch[end]=temp;

}

 

}

}

/*

 获取两个字符串中最大的子串

 "abcwerthelloyuiodef"

 "cvhelloobm"

 * */

public class n4 {

public static void main(String[] args){

String str="abcwerthelloyuiodef";

String key= "cvhelloobm";

show(sub(str,key));

}

public static void show(String str){

System.out.println(str);

}

public static String sub(String str,String key){

for(int x=0;x<key.length()-1;x++){

for(int y=0,z=key.length()-x;z!=key.length()+1 && y<z;y++,z++){

String s=key.substring(y,z);

if(str.contains(s)){

return s;

}

}

}

return "";

}

}

0 0
原创粉丝点击