A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 牛德阳 中级黑马   /  2015-12-26 11:24  /  630 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



java 中用 String 类进行描述。对字符串进行了对象的封装。这样的好处是可以对字符串这种常见数据进行方便的操作。 对象封装后, 可以定义 N 多属性和行为。
特点: 字符串一旦被初始化就不可以被改变,存放在方法区中的常量池中。
String s1 = "abc";  // s1 指向的内 存中只有一个对象 abc。
String s2 = new String("abc") ;  // s2 指向的内 容中有两个对象 abc、 new 。
System.out.println(s1==s2) ; //false
System.out.println(s1. equals(s2) ) ; //true ,字符串中equals比较的是字符串内容是否相同。
字符串的构造方法是将字节数组或者字符数组转成字符串
String s1 = new String() ; //创建了一个空内容的字符串。
String s2 = null; //s2 没有任何对象指向是一个null 常量值。
String s3="";//s3指向一个具体的字符串,该字符串没有内容
用以下方法将字符数组转成字符串
       new string(char[]);
       new String(char[],offset,count);
静态方法:
String.copyValueOf(char[])
String.copyValueOf(char[],offset,count)
按照面向对象的思想主要方法有:
1获取
2判断
3转换
String replace(oldChar, newChar) ;
String replace(oldstring, newstring) ;
注意:以上两种方法修改后变成新字符串 ,并不是将原字符串直接修改。
StringBuffer构造一个其中不带字符的字符串缓冲区,初始容量为16 个字符。
特点:
1: 可以对字符串内容进行修改。
2: 是一个容器。
3: 是可变长度的。
4: 缓冲区中可以存储任意类型的数据。
5: 最终需要变成字符串。
1、StringBuffer对象的初始化
需要注意的是,StringBuffer和String属于不同的类型,也不能直接进行强制类型转换,下面的代码都是错误的:
         StringBuffer s = “abc”;               //赋值类型不匹配
         StringBuffer s = (StringBuffer)”abc”;    //不存在继承关系,无法进行强转
StringBuffer对象和String对象之间的互转的代码如下:
         String s = “abc”;
         StringBuffer sb1 = new StringBuffer(“123”);
         StringBuffer sb2 = new StringBuffer(s);   //String转换为StringBuffer
         String s1 = sb1.toString();              //StringBuffer转换为String
StringBuffer常用方法增删改查,获取字串,反转
下面分享几个练习题;
package day13;
//练习1 除去两端空格的方法


public class lainxi1 {

String s=" ab cde ";


public static void main(String[] args) {
String s=" ab cde ";
int start = 0;
int end=s.length()-1;
while(start<=end&&s.charAt(start)==' ')
{

start++;
}

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

end--;
}
System.out.println(s.substring(start,end));
}

}
练习2
package day13;
/*将字符串的部分进行反转
思路:1、将字符串转变为数组
2、将数组进行反转
3、将数组转换为字符串
4、将反转的开始和结束位置作为参数传递即可*/
public class lianxi2 {

public static void main(String[] args) {

String s="abcdef";
char[] c=s.toCharArray();//把字符串转换成数组
reverse(c,4,5);//传递参数进行反转
s=new String(c);
System.out.println(s);//打印反转后的字符串


}

public static void reverse(char[] c,int x,int y)
{//定义部分反转的方法

for(int start=x,end=y;start<end;start++,end--)
{
char temp=c[start];
c[start]=c[end];
c[end]=temp;

}

}

}
练习3
package day13;
/*将字符串的部分进行反转
思路:1、将字符串转变为数组
2、将数组进行反转
3、将数组转换为字符串
4、将反转的开始和结束位置作为参数传递即可*/
public class lianxi2 {

public static void main(String[] args) {

String s="abcdef";
char[] c=s.toCharArray();//把字符串转换成数组
reverse(c,4,5);//传递参数进行反转
s=new String(c);
System.out.println(s);//打印反转后的字符串


}

public static void reverse(char[] c,int x,int y)
{//定义部分反转的方法

for(int start=x,end=y;start<end;start++,end--)
{
char temp=c[start];
c[start]=c[end];
c[end]=temp;

}

}

}

练习4
package day13;
/*
获取两个字符串中最大相同字串?

思路:将短的字符串长度依次递减打印,每次获取的字符串在长串中进行比较如果存在,则返回该字符串
*/

public class lainxi4 {


public static String getstring(String s1,String s2)
{
for(int i=0;i<s2.length()-1;i++)
{
for(int x=0,y=s2.length()-i;y<s2.length();x++,y++)
{

String s3=s2.substring(x, y);
if(s1.contains(s3))
return s3;
}
}
return "";
}


public static void main(String[] args) {
String s1="abchelloaaag";
String s2="ahelloke";

System.out.println(getstring(s1,s2));
}
}



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马