String
类
●
String类概述
字符串是由多个字符组成的一串数据(字符序列)的字符串常量,java中所有字符串都是String类的实例.
●
有两种创建形式:
●
第一种:
String s = "abc";先在栈中创建一个对String类的对象引用变量s,然后去字符串常量池中查找
有没有"abc", 如果没有则在常量池中添加”abc”, s引用变量指向常量池中
的”abc”,如果常量池中有,则直接指向改地址即可,不用重新创建.
●
第二种:
一概在堆中创建新对象,值存储在堆内存的对象中。 String s = new String("abc");
public class StringDemo1 {
public static void main(String[] args) {
String s = "abc";
String s1 = "abc";
System.out.println(s==s1);
System.out.println(s.equals(s1));
String s3 = new String("abc");
String s4 = new String("abc");
System.out.println(s3==s4);
System.out.println(s3.equals(s4));
}
}
●
构造方法
public String()
public String(String str)
public String(byte[] bytes) //将传入一个byte数组将按默认编码其转化为字符串
public String(char[] value) //将传入一个char数组将其转化为字符串
●
判断功能
boolean equals(Object obj)
boolean equalsIgnoreCase(String str)
boolean contains(String str)
boolean isEmpty()
boolean startsWith(String prefix)
boolean endsWith(String suffix)
代码示例:
public class StringDemo2 {
public static void main(String[] args) {
//String s1 = new String();
//String s2 = new String("abc");
String s1 = "abc";
String s2 = new String("abC");
System.out.println(s1.equals(s2));//比较字符串内容是否相等
System.out.println(s1.equalsIgnoreCase(s2));//比较字符串内容是否相等(忽略大小写)
System.out.println(s1.contains("c"));//是否包含指定的子串
System.out.println(s1.isEmpty());//判断是否为""
System.out.println(s1.startsWith("ab"));//判断是否以指定字符串开头
System.out.println(s1.endsWith("bc"));//判断是否以指定字符串结尾
String s3 = "abc";
String s4 = "efg";
System.out.println(s3.compareTo(s4));//字符串比大小
}
}
●
获取功能
int length()
char charAt(int index)
int indexOf(String str)
int indexOf(String str,int fromIndex)
String substring(int start)
String substring(int start,int end)
示例代码:
public class StringDemo3 {
public static void main(String[] args) {
String s = "abcdefgd";
// 01234567
System.out.println(s.length());//获取字符串的长度
char c = s.charAt(4);//获取指定位置(索引)的字符
System.out.println(c);
int index = s.indexOf("d");//从前向后找 只找首次出现的位置
System.out.println(index);
int index1 = s.indexOf("d",index+1);//从前向后找 从指定位置开始
System.out.println(index1);
int index2 = s.lastIndexOf("d");//从后向前查找,首次出现的位置
System.out.println(index2);
String s1 = "abcdefgd";
// 01234567
String s2 = s1.substring(3);//从指定的为开始截取字符串,直接到最后一位,最终返回一个新的字符串对象
System.out.println(s1);
System.out.println(s2);
String s3 = s1.substring(2,6);//截取指定区间 包含开始位置,不包含结束位置
System.out.println(s3);
}
}
●
转换功能
byte[] getBytes()
char[] toCharArray()
static String valueOf(char[] chs)
String toLowerCase()
String toUpperCase()
String concat(String str)
Stirng[] split(分割符);
示例代码:
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class StringDemo4 {
public static void main(String[] args) throws UnsupportedEncodingException {
String s = "abcd";
char[] chars = s.toCharArray(); //将字符串转换为一个新的char数组
System.out.println(Arrays.toString(chars));
String s1 = new String(chars); //将char数组 转为字符串
System.out.println(s1);
String s2 = String.valueOf(chars);
System.out.println(s2);
String s3 = "abcdEFG一";
System.out.println(s3.toUpperCase());//转大写
System.out.println(s3.toLowerCase());//转小写
String s4 = "ab&cde&efg";
String[] strings = s4.split("&");//按照指定的分隔符,将字符串拆分为数组
System.out.println(Arrays.toString(strings));
}
}