字符串及字符串函数
String字符串:理解为使用一个签子将一个一个字符串起来的串儿,叫做字符串。 字符串一旦被创建,就不能被改变,可以被看作是一个字符数组。
Java程序中的所有字符串文字(例如"abc" )都被实现为此类的对象。
构造方法
public String()
String类内部重写了toString()方法,打印的是字符串内容本身
public String(byte[] bytes)
//可以将字节数组转成一个字符串对象
byte[] bytes = {97,98,99,100};
String s = new String(bytes);
System.out.println(s);//abcd
public String(byte[] bytes,int offset,int length)
//可以将字节数组的一部分转成字符串
byte[] bytes = {97,98,99,100};
String s = new String(bytes, 1, 2);
System.out.println(s);//bc
public String(char[] value)
//将字符数组转成字符串
char[] chars = {'a','吴','b','数'};
String s = new String(chars);
System.out.println(s);//a吴b数
public String(char[] value,int offset,int count)
//将字符数组的一部分转成字符串
char[] chars = {'a','吴','b','数'};
String s = new String(chars, 1, 3);
System.out.println(s);//吴b数
public String(String original)
String s = new String("小虎");
System.out.println(s);//小虎
String s = new String(“hello”)和String s = “hello”;的区别?
String s = “hello”; s += “world”; 问s的结果是多少?
字符串判断功能
boolean equals(Object obj) 比较两个字符串的内容是否相同,区分大小写的
boolean equalsIgnoreCase(String str) 比较两个字符串的内容是否相同,忽略大小写的
boolean contains(String str) 判断大字符串中是否包含小字符串
boolean startsWith(String str) 判断字符串以什么开头
boolean endsWith(String str) 判断字符串以什么结尾
boolean isEmpty()
字符串获取功能
String s = "shujia66a6吴涛";
int length()//获取字符串长度//12
char charAt(int index)//获取对应索引的字符值
System.out.println(s.charAt(9));//6
int indexOf(int ch)//根据Acsll值,来返回元素在字符串中的位置
System.out.println(s.indexOf(97));//5
int indexOf(String str)
//从左往右去查找,找字符串的位置,返回的是小字符串第一个字符在大串的位置,如果字符串不存在,返回-1
System.out.println(s.indexOf("jia"));//3
int indexOf(int ch,int fromIndex)
//从fromIndex位置开始寻找ch,如果找到返回在大串中整体位置
System.out.println(s.indexOf(97,3));//5
int indexOf(String str,int fromIndex)
String substring(int start)//字符串截取功能,从开始位置截取到末尾
String substring(int start,int end)//截取字符串指定的部分
字符串的转换功能
byte[] getBytes()
String s = "shujia666";
/字符串--->字节数组
byte[] bytes = s.getBytes();
for (int i = 0; i < bytes.length; i++) {
System.out.println(bytes[i]);
}
//
115
104
117
106
105
97
54
54
54
将字符串里的每个字符转为ASCll值,用byte数组保存起来
char[] toCharArray()
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
System.out.println(chars[i]);
}
//s
h
u
j
i
a
6
6
6
static String valueOf(char[] chs)
char[] chars = {'a','b','c','d'};
System.out.println(String.valueOf(chars));
//abcd
将字符数组转为字符串
static String valueOf(int i)
String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串
String.valueOf(char c) : 将 char 变量 c 转换成字符串
String.valueOf(char[] data) : 将 char 数组 data 转换成字符串
String.valueOf(char[] data, int offset, int count) :
将 char 数组 data 中 由 data[offset] 开始取 count 个元素 转换成字符串
String.valueOf(double d) : 将 double 变量 d 转换成字符串
String.valueOf(float f) : 将 float 变量 f 转换成字符串
String.valueOf(int i) : 将 int 变量 i 转换成字符串
String.valueOf(long l) : 将 long 变量 l 转换成字符串
String toLowerCase()
String toUpperCase()
String concat(String str)
String s2 = "HelloWoRLd";
//字符串拼接
System.out.println(s2.concat("你好").concat("世界").concat("真大"));
System.out.println(s2+"你好"+"你哈"+98+"真大");
//
HelloWoRLd你好世界真大
HelloWoRLd你好你哈98真大
字符串替换功能
/*
替换功能
String replace(char old,char new)
String replace(String old,String new)
*/
public class StringDemo7 {
public static void main(String[] args) {
String s = "shujia666";
//String replace(char old,char new)
System.out.println(s.replace('6','&'));
//String replace(String old,String new)
System.out.println(s.replace("jia","hefei"));
}
}
//运行结果
shujia&&&
shuhefei666
去除字符串空格
/*
去除字符串两空格
String trim() //只会去除两边的空格
*/
public class StringDemo8 {
public static void main(String[] args) {
String s = " nihao world shijie ";
System.out.println(s);
System.out.println(s.trim());
}
}
//
nihao world shijie
nihao world shijie
StringBuffer类:线程安全的可变字符序列
构造方法
public StringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
public StringBuffer(int capacity) 指定容量的字符串缓冲区对象
public StringBuffer(String str) 指定字符串内容的字符串缓冲区对象
{
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
// System.out.println(sb); //重写了toString()方法
//获取默认创建的容量大小
System.out.println(sb.capacity());
//public StringBuffer(int capacity)
//指定容量大小创建StringBuffer
StringBuffer sb2 = new StringBuffer(10000);
System.out.println(sb2.capacity());
//public StringBuffer(String str)
StringBuffer sb3 = new StringBuffer("hello");
System.out.println(sb3);
System.out.println(sb3.capacity()); //获取容量的大小
System.out.println(sb3.length()); //获取真实存储的字符个数
}
}
//
16 默认容量
10000
hello
21 默认容量+字符个数
5
添加功能
public StringBuffer append(String str)
public StringBuffer insert(int offset,String str)
删除功能
public StringBuffer deleteCharAt(int index)
public StringBuffer delete(int start,int end)
StringBuffer sb = new StringBuffer();
StringBuffer sb2 = sb.append(100);
System.out.println(sb);
System.out.println(sb2);
System.out.println(sb==sb2);
sb.append(100)
.append(12.34)
.append(true)
.append(100L)
.append(12.34F);
//无论你append的是什么类型数据,只要进入到了StringBuffer中,就是一个一个的字符
//StringBuffer中一律是字符
System.out.println(sb);
//public StringBuffer insert(int index,String str)
sb.insert(8,"hello");
System.out.println(sb);
//public StringBuffer deleteCharAt(int index)
sb.deleteCharAt(13);//.符号
System.out.println(sb);
//public StringBuffer delete(int start,int end) [start,end)
//删除一部分
sb.delete(8,16);
System.out.println(sb);
//
100
100
true
10010012.34true10012.34
10010012hello.34true10012.34
10010012hello34true10012.34
10010012rue10012.34
替换功能
public StringBuffer replace(int start,int end,String str)
反转功能
public StringBuffer reverse()
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("helloWorldJavaHadoop");
sb.replace(5,10,"今天天气还好");
System.out.println(sb);
sb.reverse();
System.out.println(sb);
}
//
hello今天天气还好JavaHadoop
poodaHavaJ好还气天天今olleh
截取功能
public String substring(int start)
public String substring(int start,int end)
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("hello").append(12345).append(12.34).append(true);
System.out.println(sb);
//hello1234512.34true
String s1 = sb.substring(5);
System.out.println(sb);
System.out.println(s1);
//hello1234512.34true
//1234512.34true
//public String substring(int start,int end)
String s2 = sb.substring(5, 15);
System.out.println(s2);
System.out.println(sb);
//1234512.34
//hello1234512.34true
}
String和StringBuffer的相互转换
String类有一些StringBuffer类没有的方法,比如:valueOf()、getBytes()等,可以将StringBuffer转换成String,就可以使用String类的方法。
反之依然,如果要使用StringBuffer的功能,比如:拼接append、插入insert、删除delete、反转reverse等,就可以转换成StringBuffer对象。
String >>> StringBuffer
1、通过构造方法 StringBuffer sb = new StringBuffer(String s)
2、通过append()方法 String str = new String(buffer)
StringBuffer >>> String
1、通过构造方法 String str = new String(StringBuffer buffer)
2、通过toString()方法
public class StringBufferDemo {
public static void main(String[] args) {
// String -- StringBuffer
String s = "hello";
// 注意:不能把字符串的值直接赋值给StringBuffer
// 方式1: 通过构造方法
StringBuffer sb = new StringBuffer(s);
// 方式2:通过append()方法
StringBuffer sb2 = new StringBuffer();
sb2.append(s);
System.out.println("sb:" + sb);
System.out.println("sb2:" + sb2);
System.out.println("---------------");
// StringBuffer -- String
StringBuffer buffer = new StringBuffer("java");
// String(StringBuffer buffer)
// 方式1: 通过构造方法
String str = new String(buffer);
// 方式2:通过toString()方法
String str2 = buffer.toString();
System.out.println("str:" + str);
System.out.println("str2:" + str2);
}
}
输出:
sb:hello
sb2:hello
---------------
str:java
str2:java