String s2 = new String("abc");//创建两个对象 一个new 一个字符串对象在堆内存中。
boolean b = (s==s2);//b为false 比较的是地址
boolean b2 = s.equals(s2);//b2为true 重写了Object的equals方法, 比较的是俩个字符串的内容。
String e = new String();//等价于String e = "";
String本身是一个类,在String类中定义的构造方法:public String (String original) 可以接收一个String类的对象,并重新实例化String对 象,String还可以采用直接赋值的方式进行对象的实例化
一个字符串是使用 “”括起来的 那么一个字符串的常量实际上本身就属于String的一个匿名对象
String str = "hello" ; 与 String str = new String("hello"); 有什么区别?、
String str="hello " 如果内存已经为"hello"分配了内存空间,那么Str只要指向"hello"内存对象地址;
String str = new String("hello"); 内存中重新分配一块内存区域给"hello",str指向"hello",也就是内存中有两个hello的对象了,而且指向的地址不一样
//获取俩个字符串中 的 最大相同字串
获取 一个字符串的所有字串: 按照其长度去找 从最大长度 找到最小长度
private static String getMaxSubstring(String s1, String s2)
{
// TODO Auto-generated method stub
for (int i = 0; i < s2.length(); i++)
{
for(int a=0,b=s2.length()-i; b!=s2.length()+1; a++,b++)
{
String sub = s2.substring(a, b);
if(s1.contains(sub))
{
System.out.println(sub);
return sub;
}
}
}
return null;
}
========================================================================================
/*
* StringBuffer:其实就是字符串缓冲区。 用于存储数据的容器。
* 特点:
* 1.长度是可变的。
* 2.可以存不同类型的数据。
* 3.最终要转成字符串进行使用
* 是一个容器对象,具备的功能:
* 添加:
* append(data)返回类型是String
* insert(index, data)
* 删除:
* delete(start, end):包含头,不包含尾
* deleteCharAt(int index):删除指定位置上的元素
* 查找
* char charAt(index);
* int indexOf(string);
* int lastIndexOf(string);
* 修改:
* StringBuffer replace(start, end,string);
* void setCharAt(index, char);
*
* StringBuffer是线程同步的,通常用于多线程。
* StringBuilder是线程不同步的。通常用于单线程的,他的出现提高了效率
*
l */
版权声明:本文为博主原创文章,未经博主允许不得转载。