class Test
{
public static void main(String[] args)
{
String s1 = "abc"; //s1是一个类类型的变量,abc是一个对象,字符串的最大特点,一单被初始化就不能改变。s1是字符串的引用。
String s2 = new String("abc");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));//String类复写了Object类中的equals方法,
//用于判断两个字符串是否相同
//s1,s2的区别:s1在内存中一个对象,s2有两个对象。
}
}
字符串类型常用方法
String类适用于描述字符串事物,提供了多个方法对字符串进行操作。
常见的方法有:
1,获取。
1.1 字符串中包含的字符数,即字符串长度。 int length()
1.2 根据位置获取位置上的某个字符。char charAt(int index)
1.3 根据字符获取该字符的在字符串中的位置。
int indexOf(int ch) //因为接收的是ASCII码,返回ch在字符串中第一次出现位置。
int indexOf(int ch,int fromindex)//从指定位置开始获取位置。
int indexOf(String str)
int indexOf(String str,int fromindex)
例子:
class Test
{
public static void method_get()
{
String str = "abcdeakpf";
//长度
sop(str.length());
//根据字符获取索引
sop(str.indexOf(‘a‘,3)); //如果没有找到返回-1
//根据索引获取字符
sop(str.charAt(4));
//反向查找字符出现的位置
sop(str.lastIndexOf(‘a‘));
}
public static void main(String[] args)
{
method_get();
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
2,判断。
2.1 字符串中是否包含某一个字符串。boolean contains(str)
2.2 字符串中是否有内容。boolean isEmpty()
2.3 字符串是否是以指定内容开头。 boolean startsWith(str);
2.4 字符串是以什么结尾。 boolean endsWith(str);
2.5 判断字符串内容是否相同 boolean equals(str);
2.6 忽略大小写判断内容是否相同 boolean equalsIgnoreCase(str);
class Test
{
public static void method_is()
{
String str = "ArrayDemo.java";
sop(str.startsWith("Array"));
sop(str.endsWith(".java"));
sop(str.contains("Demo"));
}
public static void main(String[] args)
{
method_is();
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
3,转换。
3.1 将字符数组转成字符串
构造函数: String(char []) / String(char [],offeset,count):字符数组部分转为字符串
静态方法:static String copyValueOf(char []) ,static String copyValueOf(char [],offeset,count)
3.2 将字符串转成字符数组
char [] toCharArray();
3.3 将字节数组转成字符串
Stirng(byte [])
3.4 将字符串转成字节数组
byte [] getBytes()
3.5 将基本数据类型转换成字符串:static String valueOf(int/doubule) 同
3+""
举例:
class Test
{
public static void method_trans()
{
char [] arr ={‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘};
String s = new String(arr);
sop(s);
String s2 = new String(arr,1,3);
sop(s2);
String s1 = "zxcvbnm";
char [] chs = s1.toCharArray();
for(int x=0;x<chs.length;x++)
sop(chs[x]);
}
public static void main(String[] args)
{
method_trans();
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
4,替换:String replace(oldchar,newchar)
5,切割:String split(regex)
6,子串:获取字符串中的一部分。:String substring(begin)/(begin,end)
7,转换,去除空格,比较。
7.1 字符串转成大写或者小写。String toUpperCase(); String toLowerCase();
7.2 将字符串两端多余空格去除。String trim();
7.3 将字符串进行自然顺序比较。int compareTo(stirng);
练习1:除去两端空格:charAT,substring(begin,end)
练习2:反转字符串:toCharArray()
练习3:统计指定字符串出现次数,int indexOf(str,index)
练习4:寻找最大长度子串:两个循环,控制最大子串长度,判断是否存在,boolean str.contains(str) //原来和indexOf类似
练习4代码:
public class Test1
{
public static void main(String args [])
{
String a="sifduhsdifhsahasiudhiszhangxushissshuidhiasdfasndsf";
String a1="asdfsadfzhangxushissshuidkljfg";
sop(getCommon(a,a1));
}
public static String getCommon(String str,String str1)
{
for(int x=0;x<str.length();x++)
{
for(int y=0;y<=x;y++)
{
String str2=str1.substring(y,str1.length()-x+y);
if(str.contains(str2))
return str2;
11111
}
}
return null;
}
public static void sop(Object c)
{
System.out.println(c);
}
}
StringBuffer
StringBuffer是字符串缓冲区。
是一个容器:
1,长度是可以变化的
2,可以直接操作多种数据类型
3,最终会通过toString方法变成字符串
功能:
1,存储
StringBuffer
append():将指定数据作为参数添加到已有数据的结尾处。返回的还是原缓冲区对象。
StringBuffer insert(index,数据):可以将指定数据插入到指定位置,0开始。
2,删除
StringBuffer delate(int start , int end):包含头,不包含结尾。
StringBuffer delateCharAt(int index):删除指定位置元素
3,获取
char charAt(int index)
int indexOf(String str)
int lastIndexOf(String str)
int length()
String substring(int start,int end)
4,修改
StingBuffer replace(int start,int end,String str):将指定位置替换成指定字符串
setCharAt(int index,char c):指定位置位置替换字符
5,反转。
StringBuffer reverse()
6 char [] sb.getChars(int srcbegin,int srcend,char [],int index from char [])
StringBuilder
方法和StringBufffer差不多,基本都用。
不同之处在于:
StringBuffer是线程同步的,是安全的。但老是判断锁,浪费资源。
StringBuilder是不线程不同步的。多线程不建议使用。
升级三个因素
1,建华书写
2,提高效率
3,提供安全性
基本数据类型对象包装类
byte Byte
short Short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character
基本数据类型 对应的对象,类
基本数据类型包装类的最常见作用就是,基本数据类型和字符串类型之间的相互转换。
--->:
基本数据类型+“”;
基本数据类型.toString(基本数据类型);
如:Integer.toString(34);
<---:
格式: xxx a = Xxx.passXxx("string");
int number=Integer.passInt("123");
String s = Strings.valueOf(String)
public class Test1
{
public static void main(String args [])
{
sop(Integer.MAX_VALUE);
}
public static void sop(Object c)
{
System.out.println(c);
}
}