== 比较:
1、比较的是两个基本数据类型的话,比较两个数值是否相等
2、比较的是两个引用数据类型的话,比较的是两个对象的地址值是否相等
字符串:由若干个字符构成的字符序列叫做字符串
String类代表字符串。
字符串不变; 它们的值在创建后不能被更改指的是字符串本身不能改
因为String对象是不可变的,它们可以被共享。
字符串可以被看作成一个字符数组
练习
点击查看代码
public class StringDemo3 {
public static void main(String[] args) {
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1==s2); // false
System.out.println(s1.equals(s2)); // true
String s3 = new String("hello");
String s4 = "hello";
System.out.println(s3==s4); // false
System.out.println(s3.equals(s4)); // true
String s5 = "hello";
String s6 = "hello";
System.out.println(s5==s6); // true
System.out.println(s5.equals(s6)); //true
String s1 = "hello";
String s2 = "world";
String s3 = "helloworld";
System.out.println(s3==s1+s2); // false
System.out.println(s3.equals(s1+s2)); // true
}
}
String类中的构造方法:
public String()
public String(byte[] bytes)
public String(byte[] bytes,int offset,int length)
public String(char[] value)
public String(char[] value,int offset,int count)
public String(String original)
1.public String() 创建一个空字符串
点击查看代码
//public String() 创建一个空字符串
String s1 = new String(); // 堆内存
System.out.println("s1: " + s1);
String s2 = ""; // 常量池
System.out.println(s1==s2);
2.public String(byte[] bytes) 将字节数组转成一个字符串
点击查看代码
//public String(byte[] bytes) 将字节数组转成一个字符串
byte[] bytes = {97,98,99,100,101,102};
String s2 = new String(bytes);
System.out.println("s2: "+s2);
3.public String(byte[] bytes,int offset,int length) 从字节数组的某个位置开始,向后截取变成字符串
点击查看代码
//public String(byte[] bytes,int index,int length) 从字节数组的某个位置开始,向后截取变成字符串
String s3 = new String(bytes, 2, 3);
System.out.println("s3: "+s3);
4.public String(char[] value) //将一个字符数组转成一个字符串
点击查看代码
public String(char[] value) //将一个字符数组转成一个字符串
char[] chars = {'我','爱','中','华'};
String s4 = new String(chars);
System.out.println("s4: "+s4);
5.public String(char[] value,int index,int length) 将字符数组一部分转成字符串
点击查看代码
//public String(char[] value,int index,int length) 将字符数组一部分转成字符串
String s5 = new String(chars,1,2);
System.out.println("s5: "+s5);
6.public String(String original) 将字符串封装成一个String对象在堆内存中
点击查看代码
//public String(String original) 将字符串封装成一个String对象在堆内存中
String s6 = new String("你好");
System.out.println("s6: "+s6);
String类中的判断功能:
boolean equals(Object obj)
boolean equalsIgnoreCase(String str)
boolean contains(String str)
boolean startsWith(String str)
boolean endsWith(String str)
boolean isEmpty()
1.boolean equals(Object obj) 比较两个字符串的内容值
点击查看代码
//boolean equals(Object obj) 比较两个字符串的内容值
String s1 = "hello";
String s2 = "HellO";
System.out.println(s1.equals(s2));
2.boolean equalsIgnoreCase(String str) 忽略大小写比较字符串内容值
点击查看代码
//boolean equalsIgnoreCase(String str) 忽略大小写比较字符串内容值
System.out.println(s1.equalsIgnoreCase(s2));
3.boolean contains(String str) 判断大字符串中是否包含某一个小字符串
点击查看代码
//boolean contains(String str) 判断大字符串中是否包含某一个小字符串
String s3 = "今天的天气还可以李刚决定去洗个脚";
System.out.println(s3.contains("李刚决"));
4.boolean startsWith(String str) 判断字符串是否以某个字符串开头
点击查看代码
//boolean startsWith(String str) 判断字符串是否以某个字符串开头
System.out.println(s3.startsWith("今天的天气数可以"));
5.boolean endsWith(String str) 判断字符串是否以某个字符串结尾
点击查看代码
// boolean endsWith(String str) 判断字符串是否以某个字符串结尾
System.out.println(s3.endsWith("洗个脚"));
6.boolean isEmpty() 判断字符串是否为空字符串,指的是内容是否为空
点击查看代码
//boolean isEmpty() 判断字符串是否为空字符串,指的是内容是否为空
String s4 = "";
System.out.println(s4.isEmpty());
String s5 = null;
// System.out.println(s5.isEmpty()); // NullPointerException
String类中的获取功能
int length()
char charAt(int index)
int indexOf(int ch)
int indexOf(String str)
int indexOf(int ch,int fromIndex)
int indexOf(String str,int fromIndex)
String substring(int start)
String substring(int start,int end)
1.int length() 获取字符串中的字符个数,字符串长度
点击查看代码
String s = "我在数加学院中学习非常快乐!";
//int length() 获取字符串中的字符个数,字符串长度
System.out.println(s.length());
2.char charAt(int index) 根据索引获取字符串中某一个字符
点击查看代码
//char charAt(int index) 根据索引获取字符串中某一个字符
//字符串可以被看作成一个字符数组
// System.out.println(s.charAt(15));如果所给的值不在字符数组中,显示报错 // StringIndexOutOfBoundsException
3.int indexOf(int ch) 根据ascii码值获取对应字符所在的索引位置,左边起第一个
点击查看代码
//int indexOf(int ch) 根据ascii码值获取对应字符所在的索引位置,左边起第一个
String s2 = "qweasdsafqe";
System.out.println(s2.indexOf(104)); // -1 不在范围则显示-1
4.int indexOf(int ch,int fromIndex) 从某个索引开始向后寻找某个字符,返回找到字符在整个大字符串中的索引位置
点击查看代码
//int indexOf(int ch,int fromIndex) 从某个索引开始向后寻找某个字符,返回找到字符在整个大字符串中的索引位置
System.out.println(s2.indexOf(97,5)); // 7
5.获取大字符串中小字符串的位置,返回小字符串第一个字符的索引
点击查看代码
//int indexOf(String str) 获取大字符串中小字符串的位置,返回小字符串第一个字符的索引
System.out.println(s2.indexOf("sdsa")); // 4
6.int indexOf(String str,int fromIndex) 从某个索引开始向后寻找某个字符,返回找到字符串第一个字符在整个大字符串中的索引位置
点击查看代码
//int indexOf(String str,int fromIndex) 从某个索引开始向后寻找某个字符,返回找到字符串第一个字符在整个大字符串中的索引位置
System.out.println(s2.indexOf("saf",3)); // 6
7.String substring(int start) // 从指定位置向后截取,返回新的字符串
点击查看代码
//String substring(int start) // 从指定位置向后截取,返回新的字符串
String s3 = "李刚是真的帅!江川很不服,钱志强觉得自己是最帅的!";
String res1 = s3.substring(3);
System.out.println(res1);
8.String substring(int start,int end) 截取字符串中的一部分 [start, end)
点击查看代码
//String substring(int start,int end) 截取字符串中的一部分 [start, end)
String res2 = s3.substring(7, 12);
System.out.println(res2);
String转换功能:
byte[] getBytes()
char[] toCharArray()
static String valueOf(char[] chs)
static String valueOf(int i)
String toLowerCase()
String toUpperCase()
String concat(String str)
1.byte[] getBytes() 将字符串转字节数组
点击查看代码
String s1 = "abcdefg";
//byte[] getBytes() 将字符串转字节数组
byte[] bytes = s1.getBytes();
for(int i=0;i<bytes.length;i++){
System.out.println(bytes[i]);
}
System.out.println("----------------");
2.char[] toCharArray() 将字符串转字符数组
点击查看代码
//char[] toCharArray() 将字符串转字符数组
char[] chars = s1.toCharArray();
for(int i=0;i<chars.length;i++){
System.out.println(chars[i]);
}
System.out.println("----------------");
String s3 = new String(chars);
System.out.println(s3);
3.static String valueOf(char[] chs) 将字符数组转字符串
点击查看代码
//static String valueOf(char[] chs) 将字符数组转字符串
String s2 = String.valueOf(chars);
System.out.println(s2);
点击查看代码
//static String valueOf(int i)
System.out.println(String.valueOf(100)); // 100 -> "100"
5.String toLowerCase() 转小写
点击查看代码
//String toLowerCase() 转小写
String s4 = "HellOWOrlD";
String res1 = s4.toLowerCase();
System.out.println(res1);
6.String toUpperCase() 转小写
点击查看代码
//String toUpperCase()
String res2 = s4.toUpperCase();
System.out.println(res2);
7.String concat(String str) 字符串拼接操作
点击查看代码
//String concat(String str) 字符串拼接操作
String res3 = "李刚".concat("真帅!");
System.out.println(res3);
String其它功能
替换功能
String replace(char old,char new)
String replace(String old,String new)
去除字符串两空格
String trim()
按字典顺序比较两个字符串
int compareTo(String str)
int compareToIgnoreCase(String str)
1.String replace(char old,char new) 由新字符替换字符串中所有旧字符
点击查看代码
String s1 = "dasqwajavadwqrajjavaiojadjavafq-aedjavaqajiqa";
//String replace(char old,char new) 由新字符替换字符串中所有旧字符
String res1 = s1.replace('a', '$');
System.out.println(s1);
System.out.println(res1);
2.String replace(String old,String new) 由新的字符串替换旧的字符串
点击查看代码
//String replace(String old,String new) 由新的字符串替换旧的字符串
String res2 = s1.replace("java", "李刚");
System.out.println(res2);
3.String trim() 去除字符串两边的空格
点击查看代码
//String trim() 去除字符串两边的空格
String s2 = " hello world ";
System.out.println("s2: "+s2);
String res3 = s2.trim();
System.out.println("res3: "+res3);
4.int compareTo(String str) 按字典顺序比较两个字符串是否相同 当结果是0的时候表示两个字符串内容相同
点击查看代码
//int compareTo(String str) 按字典顺序比较两个字符串是否相同 当结果是0的时候表示两个字符串内容相同
String s3 = "hello";
String s4 = "world";
String s5 = "hel";
String s6 = "hello";
System.out.println(s3.compareTo(s4)); // -15
System.out.println(s3.compareTo(s5)); // 2
System.out.println(s3.compareTo(s6)); // 0