问答题:
1.==与equals的区别
2.String与StringBuffer的区别
编程.
1.已知字符串:"this is a test of java".
按要求执行以下操作:
(1) 统计该字符串中字母s出现的次数
(2) 取出子字符串"test"
(3) 用多种方式将本字符串复制到一个字符数组Char[] str中.
(4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。
(5) 用两种方式实现该字符串的倒叙输出。(用StringBuffer和for循环方式分别实现)
(6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的额英文单词,并输出到控制台
2.获取一个字符串在另一个字符串中出现的次数
例如,获取"kk"在"abkkcdkkefkkskk"中出现的次数
3.模拟一个trim方法,去除字符串两端的空格
思路:
1,判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止,结尾处判断空格也是如此。
2,当开始和结尾都判断到不是空格时,就是要获取的字符串。
4.将一个字符串进行反转
将字符串中指定部分进行反转,"abcdefgeee";k
replace(str,start,end)
思路:
1,曾经学习过对数组的元素进行反转。
2,将字符串变成数组,对数组反转。
3,将反转后的数组变成字符串。
4,只要将或反转的部分的开始和结束位置作为参数传递即可。
5.获取两个字符串中最大相同子串
例如找到字符串"abcwerthelloyuiodef"和"cvhellobnm"中的最大相同字串
此题,应该从子串的长度考虑。
思路:
1,将短的那个子串按照长度递减的方式获取到。
2,将每获取到的子串去长串中判断是否包含,如果包含,已经找到!。
6.给你一组字符串如:iu7i8hy4jnb2,让你编程输出里面的数字:
7.假设字符串类似这样的aba和aab就相等,现在随便给你二组字符串,请编程比较他们看是否相等
1.
package 字符串1;
public class class01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("总结来说:\r\n" +
" 1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;\r\n" +
" 如果作用于引用类型的变量,则比较的是所指向的对象的地址\r\n" +
" 2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量\r\n" +
" 如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;\r\n" +
" 诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。");
}
}
2.
package 字符串1;
public class class02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("String:适用于少量的字符串操作的情况 String 代表字符串,是java中最常用的一个类;它是一个字符串常量,一旦定义就不能改变;\r\n" +
" StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况 可变的字符串缓冲区,如果需要对一个字符串频繁的做CURD操作,那么建议使用此类;\r\n" +
" 特点:支持链式编程;适合做CURD操作\r\n" +
" StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况");
}
}
1.
package 字符串1;
public class class1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="this is a test of java";
String s1=s.replace("s", "");
//System.out.println("s字母出现的次数为:"+(s.length()-s1.length()));
System.out.println("取字串test:"+s.substring(s.indexOf("test"),s.indexOf("test")+4));
char[] names=s.toCharArray();
System.out.println("将字符串转化为一个字符数组:");
for(char i:names)
System.out.println(i);
System.out.println("将字符串中每个单词的第一个字母变成大写, 输出到控制台:");
names[0]=Character.toUpperCase(names[0]);
String sum="";
for(int i=0;i<names.length;i++)
{
if(names[i]==' '&&names[i+1]!=' ')
{
names[i+1]=Character.toUpperCase(names[i+1]);
//System.out.println(Character.toUpperCase(names[i+1]));
}
sum=sum+names[i];
}
System.out.println(sum);
System.out.println(" 用两种方式实现该字符串的倒叙输出:");
StringBuffer buffer=new StringBuffer(s);
System.out.println(buffer.reverse().toString());
for(int i=names.length-1;i>=0;i--)
{
System.out.print(names[i]);
}
System.out.println();
System.out.println("将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的额英文单词,并输出到控制台:");
String[] name=s.split("\\s+");
for(String g:name)
{
System.out.println(g);
}
// String[] name=s.split(" ");
// for(int i=0;i<name.length;i++)
// {
//
// if(name[i].equals("")==false)
// {
// System.out.println(name[i]);
// }
//
//
//
// }
}
}
2.
package 字符串1;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class class2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="abkkcdkkefkkskk";
//正则表达式
Pattern p=Pattern.compile("kk");
//匹配
Matcher m=p.matcher(s);
int i=0;
while(m.find())
{
i++;
}
System.out.println("kk出先的次数为:"+i);
}
}
3.
package 字符串1;
public class class3 {
public static void trim(String a)
{
a.toCharArray();
}
public static void main(String[] args) {
String s=" liyifeng ";
int j=0;
int k=0;
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)==' ')
{
j++;
}
else
{
break;
}
}
for(int i=s.length()-1;i>=0;i--)
{
if(s.charAt(i)==' ')
{
k++;
}
else
{
break;
}
}
System.out.print(s.substring(k,s.length()-k));
}
}
4.
package 字符串1;
public class class4 {
public static String replace(String s,int a,int b)
{ char[] xx=new char[b-a+1];
char[] name =s.toCharArray();
int j=0;
for(int i=b;i>=a;i--)
{
xx[j]=name[i];
j++;
}
System.arraycopy(xx, 0, name, a, xx.length);
String sum="";
for(char i:name)
{
sum+=i;
}
return sum;
}
public static void main(String[] args) {
String s="abcdefgeee";
System.out.println(replace(s,2,5));
}
}
5.
package 字符串1;
public class class5 {
public static String getMaxSubString(String a,String b)
{
if(a.length()<b.length())
{
String c=b;
b=a;
a=c;
}
for(int i=b.length();i>0;i--)
{
for(int j=0;j<b.length()-i+1;j++)
{
String str=b.substring(j, j+i);
if(a.contains(str))
{
return str;
}
}
}
return "";
}
public static void main(String[] args) {
String s1="abcwerthelloyuiodef";
String s2="cvhellobnm";
System.out.println(getMaxSubString(s1,s2));
}
}
6.
package 字符串1;
public class class6 {
public static void pickNumber(String str) {
String[] numbers=str.split("\\D+");
int sum=0;
for(String s:numbers) {
sum+=Integer.valueOf(s);
System.out.println(s);
}
System.out.println("总和是:"+sum);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="1iu78i8hy4jnb2";
pickNumber(s);
}
}
7.
package 字符串1;
import java.util.Arrays;
import Lang包.test;
public abstract class class7 {
static int [] num=new int[5];
static int [] sum=new int[5];
static int size=0;
static void printCharInfo(String str,int[] k)
{ size=0;
while(str.length()>0)
{
int h=str.length();
String a= str.charAt(0)+"";
str=str.replace(a,"");
k[size++]=h-str.length();
System.out.println(a+":"+(h-str.length()));
}
}
public static void main(String[] args) {
size=0;
String s1="abam";
String s2="aabh";
System.out.println("串1的字符类型及其个数");
printCharInfo(s1,num);
System.out.println("串2的字符类型及其个数");
printCharInfo(s2,sum);
if(Arrays.equals(sum, num))
{
System.out.println("两个串相等!!!");
}
else
{
System.out.println("两个串不相等!!!");
}
}
}