String 笔记总结
String 概念
String java中最常用用到的类 代表字符串,任何东西都可以是字符串,String是引用类型 不是基本类型,在java中操作字符串由两种方式 String类就是最常用的一种,创建String 有两种方式,下面我们来看
String str1 = "abc";
String str2 = new String("abc");
通过以上方式我们知道String有两种创建方式,一种为直接赋值,一种为new对象方式来创建String对象的实例
-
第一种种方式
直接赋值,String 变量名 = 内容 这样的方式也是最方便的 当str1等于abc时String会在字符串常量池中创建abc字符串 如果此时有一个str3也等于abc那么str3所指向的堆地址和str1是一样的这就是String中一种缓存机制 -
第二种种方式
通过new对象来创建String实例这个时候String会在字符串常量池中创建abc字符串同时也会在堆内存中开辟空间创建abc但是str2所指向的是堆内存中的abc并不是字符串常量池中的abc
String 和 StringBuffer 和 StringBuilder 的区别
String不可变字符串一旦创建不可修改,如果修改只是转换引用
StringBuffer 可变字符串线程安全 应用于经常变化的字符串
StringBuilder 也是可变字符串 非线程安全
字符串如何反转
String中是没有反转方法的。需要通过StringBuilder的reverse方法来实现反转
==与equals区别
双=用于基本数值类型比较大小,对于引用类型比较的是堆内存的地址
equals用于比较具体内容通过hashcode来确定
以下内容进行判断
String a = "abc";
String b = a;
a == b // true
String c = "abc";
a == c //true
String d = new String("abc");
a == d;//false
a.equals(d);//true//比较具体内容
d.intern().equals(a);//true//讲d的内存地址指向了字符串常量池中所以为true
String 中常用方法
方法 | 含义 |
---|---|
substring(start,end); | 拆分字符串 通过开始下标与结束下标截取 返回新的字符串 |
indexOf(Srting args) | 返回子字符串的下标位置 未找到返回-1 |
toLowerCase() | 转小写 |
toUpperCase() | 转大写 |
replaceAll(String a,String b) | 替换字符串中所有内容 |
startsWith(String a) | 判断字符串中首个下标是否为指定内容返回boolean值 |
endsWith(String a) | 判断字符串最后一位是否为指定内容返回boolean值 |
trim() | 去除字符串中前后空格 |
replaceFirst(String a,String b) | 替换字符串中shou首个字符串 |
intern() | 讲字符串指向字符串常量池地址 |