package com.Hanjiangxue.javase.string;
//位于java.lang.String
//String表示字符串类型,属于引用数据类型,不属于基本数据类型。
//在Java中随便使用双引号括起来的都是String对象。
//Java中规定,双引号括起来的字符串是不可变的。
//在JDk双引号括起来的字符串存储在方法区的常量池中,因为字符串实际中开发频繁,为了执行效率,所以把字符串放到常量池中。
public class StringTest01 {
public static void main(String[] args) {
//这两行代码在底层创建了3个字符串对象,在字符串常量池中。
String s1 = "abcdef";
String s2 = "abcdef"+"xy";
//使用new出来的字符串对象的位置。
//new一定在堆里面开辟空间
//
String s3 = new String("xy");
}
}
image.png
image.png
package com.Hanjiangxue.javase.string;
public class StringTest02 {
public static void main(String[] args) {
String s1 = "hello";
String s2 = "hello";
System.out.println(s1 == s2);
String x = new String("xyz");
String y = new String("xyz");
System.out.println(x == y);
}
}
image.png
package com.Hanjiangxue.javase.string;
public class StringTest02 {
public static void main(String[] args) {
String s1 = "hello";
String s2 = "hello";
System.out.println(s1 == s2);
String x = new String("xyz");
String y = new String("xyz");
System.out.println(x == y);
//字符串之间的比较不能使用==,使用equals。
System.out.println(x.equals(y));
String k = new String("testString");
System.out.println("testString".equals(k));//建议使用,避免空指针异常。
System.out.println(k.equals("testString"));
}
}
image.png
package com.Hanjiangxue.javase.string;
public class StringTest02 {
public static void main(String[] args) {
String s1 = "hello";
String s2 = "hello";
System.out.println(s1 == s2);
String x = new String("xyz");
String y = new String("xyz");
System.out.println(x == y);
//字符串之间的比较不能使用==,使用equals。
System.out.println(x.equals(y));
String k = new String("testString");
System.out.println("testString".equals(k));//建议使用,避免空指针异常。
System.out.println(k.equals("testString"));
}
}
package com.Hanjiangxue.javase.string;
//方法:String s = new Stirng("")
// String s = "";
// String s = new String(char数组);
// String s = new String(char数组,起始下标,长度);
// String s = new String(byte数组);
// String s = new String(byte数组,起始下标,长度);
public class StringTest03 {
public static void main(String[] args) {
//一共三个对象,字符串常量池对象“hello”
//堆中两个。
String s1 = new String("hello");
String s2 = new String("hello");
byte[] bytes = {97,98,99};
String s3 = new String(bytes);
//对toString方法重写了。
System.out.println(s3);//输出为字符串本身。
String s4 = new String(bytes,1,2);
System.out.println(s4);
//将char数组全部转换成字符串。
char[] chars = {'我','是','中','国','人'};
String s5 = new String(chars);
System.out.println(s5);
String s6 = new String(chars,1,2);
System.out.println(s6);
}
}
package com.Hanjiangxue.javase.string;
public class StringTest05 {
public static void main(String[] args) {
//String中常用的方法。
//1、char charAt(int index)
char c = "中国人".charAt(1);//只要是对象就可以.
System.out.println(c);
//2、int compareTo(String anotherString)
System.out.println("abc".compareTo("abc"));//相同0,前小后大(-1),前大后小(1)。
System.out.println("abcd".compareTo("abce"));
System.out.println("abce".compareTo("abcd"));
System.out.println("abc".compareTo("bac"));
//3、boolean contains(CharSequence s)
//判断前面的字符串中是否包含后面的子字符串。
System.out.println("helloword.java".contains("java"));
System.out.println("http://helloword.java".contains("https"));
//4、boolean endsWith(String suffix)
//判断当前字符串是否以某个字符串结尾。
System.out.println("test.txt".endsWith(".txt"));
//5、boolean equals(Object anObject)
//判断两个字符串是否相等。
System.out.println("");
//6、boolean equalsIgnoreCase(String anotherString);
//判断两个字符串相等,并且忽略大小写。
System.out.println("ABC".equalsIgnoreCase("Abc"));
//7、byte[] getBytes()
//将字符串转换为字节数组
byte[] bytes1 = "abcdef".getBytes();
for(int i = 0;i < bytes1.length;i++) {
System.out.println(bytes1[i]);
}
//8、int indexOf(String str)
//判断某个字符串在当前字符串中第一次出现处的索引
System.out.println("abcindn".indexOf("abc"));
//9、boolean isEmpty()
//判断字符串是否为空
String s = "fj";
System.out.println(s.isEmpty());
//10、int length()
//判断字符串长度
//判断数组长度是length属性,判断字符串长度为length()方法。面试。
System.out.println("abc".length());
//11、int lastIndexOf(String str)
//判断某个子字符串在当前字符串中最后一次出现的索引下标
System.out.println("ourgnnsooawjwnraoaboaav=ab".lastIndexOf("ab"));
//12、String replace(CharSequence target,CharSequence replacement)
//String的父接口就是CharSequence。 替换
String newString = "http://www.baidu.com".replace("http://","https://");
System.out.println(newString);
//13、String[] split(String regex)
//拆分字符串
String[] ymd = "1980-10-11".split("-");
for(int i = 0;i < ymd.length;i++){
System.out.println(ymd[i]);
}
//14、boolean startsWith(String prefix)
//判断某个字符串是否以某个子字符串开始
System.out.println("http://www.baidu.com".startsWith("http"));
System.out.println("http://www.baidu.com".startsWith("https"));
//15、String subString(int beginIndex)
//截取字符串
System.out.println("http://www.baidu.com".substring(7));
//16、String subString(int beginIndex,int endIndex)
//[beginIndex,endIndex)
System.out.println("http://www.baidu.com".substring(7,10));
//17、char[] toCharArray()
//将字符串转换成char数组
char[] chars = "我是中国人".toCharArray();
for(int i = 0;i < chars.length;i++){
System.out.println(chars[i]);
}
//18、String toLowerCase()
//转换为小写。
System.out.println("ABIDN".toLowerCase());
//19、String toUpperCase()
//转换成大写。
System.out.println("ajgg".toUpperCase());
//20、String trim()
//去除字符串前后空白
System.out.println(" hello wor".trim());
//21、String只有一个方法是静态的,不需要new对象
//valueOf:将非字符串转换成字符串。
//这个静态的valueOf方法参数是一个对象的时候,会自动调用该对象的toString()方法。
String s1 = String.valueOf(100);
System.out.println(s1);
String s2 = String.valueOf(new Customer());
System.out.println(s2);
//本质上System.out.println方法会先将数据转换成字符串再输出。
}
}
class Customer{
@Override
public String toString() {
return "Customer{}";
}
}
网友评论