1. String是什么?
很多萌新(我也是个菜鸡)会问String是八大数据类型中的类型吗?当然不是了,String的话它是一个引用类型的对象,对象大家应该都知道,可以new出来的 我们写String也是可以new出来的,像下面这样
public class StringTest(){
public static void main(String[] args){
String str = new String("a");
System.out.println(str);
}
}
那么这边的输出结果就是 a 通过上面的代码大家应该就可以理解String它并不是java的数据类型,它是个对象,其实很多时候我们会用到new String();来做事情,这边我就举个例子,因为我比较喜欢这样写
public class StringTest(){
public static String testaa(){
/**
* 首先我们有个String类型的变量 a
* 然后我们需要在aaa后面追加一个bbb
*/
String a = "aaa";
/**
* 这边我们用StringBuffer
* 当然了有的同学可能会说我可以a + "bbb"呀,为什么还要用StringBuffer呢?
* 首先这只是个例子,其次当你需要读取一个大文件的时候,String是存不了的,只能用StringBuffer来进行追加
* 所以大家看好StringBuffer转换为String就好了,不要纠结太多!以前我学Spring的时候就是,老师举一个很简单的例子
* 我想有很多方法都可以这样干,为什么要这么麻烦呢?还要写配置文件什么的,后来到了需要用到的场景才知道,还是写配置
* 文件简单多了....废话就说到这!
*/
StringBuffer sb = new StringBuffer(a);
sb.append("bbb");//追加字符bbb
//我们这边就可以用到new String(sb);将StringBuffer转换为String类型,然后返回出数据
return new String(sb);//这样子返回的就是String类型了
}
public static void main(String[] args) {
System.out.println(testaa());
}
}
输出结果 aaabbb,注意上面的代码是不能用String c = sb;这样来进行赋值的,会出错,不兼容类型!
2. String的常用方法
2.1 String str = new String();
初始化一个新的创建的String对象
char[] c = {'a','b','c','d','e','f','g'};
String str = new String(c);
//或者可以这样
System.out.println(new String(c));
//返回也可以这样
return nwe String(c);
//输出结果都为
abcdefg
2.2 compareTo();
根据字符串的顺序来比较字符串
String a = "abcd";
String b = "abcd";
System.out.println(a.compareTo(b));
//返回结果为0,说明字符串顺序一样
String a = "abcd";
String b = "abcde";
System.out.println(a.compareTo(b));
//返回结果为-1,说明这两个字符串中有一处不同,我在b变量中加了一个e
我感觉有的童鞋会绕进去啊,我这边画个图来说明一下具体是如何比较的
我先简单的说明一下,首先我们有两个变量 a = "abcd" b = "abcd" 然后我们使用compareTo();来进行对比
a.compareTo(b); 它首先是a b变量中的字符串拆分出来(是不是拆分了我不知道,不过我是这样理解的,嘻嘻)就形成了以下这样,注意以下表格第一列是a变量中的数据,第二列是b变量中的数据
A 变量中的数据 B变量中的数据
a | a |
b | b |
c | c |
d | d |
compareTo();方法首先判断a == a 然后判断 b == b然后在判断cd,判断完了过后,如果都一致,那么就返回0
如果a b某个变量中有一处不同,返回-1,两处不同返回-2,以此类推
2.3 compareToIanoreCose()
判断两个字符串是否相同,不考虑大小写
String a = "ABCD";
String b = "abcD";
System.out.println(a.compareToIgnoreCase(b));
//返回结果为0
compareToIgnoreCose();方法的返回结果我就不在详细介绍了,和上面的返回结果一样,如果两个字符串相同则返回0,有一处不同则返回-1,以此类推
2.4 hashCode();
返回字符串的哈希码,具体什么是哈希码我也没有具体了解过..
String a = "abcd";
System.out.pritnln(a.hashCode());
//返回2987074
大家可以去百度一下什么是哈希码..键盘没去了解过,所以这边不能给大家解释了 T T
2.5 replace() 和replaceAll();
String a = "aaabbb";
System.out.println(a.replace("aaab","b"));
//输出结果为bbb,它将最前面的aaab给换成了b,所以输出结果为bbb
replaceAll();这个方法的话我这边就不演示了,因为需要好多好多的字符,我也不清楚,replaceAll();这个方法我只在大量的字符串中用过,少数的我都没用过,抱歉啦!
其实String还有超多方法,大家兴趣的可以去看api中的String类
那String我就讲到这了,下一张将八大数据类型的封装类,如:Integer