String类介绍
本篇文章只适合刚学java的爱好者,讲解都是最基本的内容,对于那些大佬们,可以直接跳过去了.
1.String类介绍
在Java中,字符串是String类的对象,可以通过使用String类提供的方法来完成对字符串的基本操作
2.字符串注意事项:
a.字符串都是对象, String str = “abc”; 字符串是在方法区的常量池中 String str = new String(“abc”);此时有两个地址值,一个在方法区的常量池地址,一个是堆内存地址中
b.字符串一旦初始化以后么就不能在更改,因为字符串都是常量
c.字符串可以共享,即同一个常量可以被多个字符串变量指向,所有的地址值都相同
d.在引用数据类型中==代表的是对象地址是否相同,equals判断你的则是内容是否相同
3.String类常用的方法
这是自己写的方法的简单例子
String str = "abacde";
//获取字符串中有多少字符
int s1 = str.length();
//获取指定字符的位置
int s2 = str.indexOf('a'); //从字符串中找到第一个位置出现的位置
int s3 = str.indexOf('a', s2);//从下标为s2的位置查找
int s4 = str.lastIndexOf('a'); //从后往前找
//获取指定位置的字符
char s5 = str.charAt(3);
//获取部分字符串
String str1 = str.substring(1, 3);
System.out.println(str1);
//字符串中是否包含另一个字符
boolean str2 = str.contains("bc");
System.out.println(str2);
//将指定的字符串换成另一个字符串
String str3 = str.replace("bc", "true");
System.out.println(str3);
//字符串转换成字符数组或者字节数组
char[] str4 = str.toCharArray();
System.out.println(str4[1]);
byte[] str5 = str.getBytes();
System.out.println(str);
//将所有的字符串转换成大写
String str6 = str.toUpperCase();
System.out.println(str6);
//将所有的字符串转换成小写
String str7 = str6.toLowerCase();
System.out.println(str7);
//字符串切割 切割成数组
str = "明白,聪明,撒旦";
String[] str8 = str.split(",");
System.out.println(str8[0]);
//字符串之间的比较 负数表示比它小,正数表示比他大,相等则为0
int str9 = "a".compareTo("b");
System.out.println(str9);
4.StringBuffer的使用
StringBuffer:会把字符串缓冲区中的所有存储的元素都转成字符串,而且最终变成一个大的字符串
* 1.字符串缓冲区(容器,和数组类似)
* 2.长度课变化,并且任意数据类型都能够存,其实就是将其他的数据类型转换成字符串在进行存储
* 3.具有增删改的功能
* 4.必须所有的数据最终会变成字符串
StringBuffer sb = new StringBuffer();//默认初始化容量为16,如果超了可以自动扩容
//往容器中添加数据
sb.append("abc");//追加方法
sb.append(true);
sb.append("1").append("x").toString();//最后将数据变成toString
//添加完之后想要进行操作,组队中需要变成String
//在指定的位置添加
sb.insert(0, "xixi"); //往下标为0的位置上添加一个字符串,位置时可以变的
sb.insert(1, "hahh");
System.out.println(sb);
//删除数据
sb.delete(0, 2);//删除下标为0和1的字符串 包含头不包含尾
System.out.println(sb);
//修改数据----替换数据
sb.replace(0, 3, "coco"); //将下标为0-2的字符串替换为coco
String s = sb.toString(); //字符串最后都要调用toSting方法
System.out.println(s);
String s1 = "a"+6+true;//相当于下面的命令
new StringBuffer().append("a").append(6).append(true).toString();
5.SringBuilder的作用
*一个可变的字符序列
*该类被设计作用于StringBuffer的一个简单替换,用在字符串缓冲区被单个线程使用的时候
6.StringBuffer和StringBuilder的区别:
*StringBuffer 字符串变量(线程安全);同步的,多线程访问安全
*StringBuilder 字符串变量(非线程安全);不同步的,单线程访问 效率更高
*在大部分情况下 StringBuilder > StringBuffer;