侧边栏壁纸
  • 累计撰写 793 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

目 录CONTENT

文章目录

String

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 168 阅读 / 1,503 字
温馨提示:
本文最后更新于 2022-07-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
string 是缓存在常量池的,string的hashCode同时也缓存了,不用重复计算


//substring 是左index到右index ,substring(1,3)就相当于把指针放在对应index的左边,然后输出指针内容. 0|12|345
获取长度用length() 方法, javaScript中通过length属性获取长度.
split()里是正则,根据. 区分的话
例子:split("\\.") 分 a.gif
new StringBuffer("abcdefg").substring(2, 5) = cde
class StringEqualTest { 
  public static void main(String[] args) { 
       String s1 = "Programming"; 
       String s2 = new String("Programming"); 
       String s3 = "Program"; 
       String s4 = "ming"; 
       String s5 = "Program" + "ming"; 
       String s6 = s3 + s4; 
       System.out.println(s1 == s2);               //false 
      System.out.println(s1 == s5);               //true 
      System.out.println(s1 == s6);              //false 
      System.out.println(s1 == s6.intern());   //true 
     System.out.println(s2 == s2.intern());    //false 
}
'+' 实现是每一次+ 都创建一个StringBuilder 对象进行 append 操作.
String类
String(首字母大写,这是一个类,遵循命名规范就要大写)(引用类型)
string 之间是否相等用equals,不能用==,因为string里存的是引用是地址.
string1.equals(string2);

"abc"=="abc" 返回true;因为String有共享模式,左边"abc"是一个常量,申请右边的时候一看有"abc"常量就不声明了,直接地址指向了.用new实例化的字符串相互用==比较一定返回false,因为他们地址不相等.每一个字符串以常量保存,修改值的话就是再实例化一个常量替换.字符串重写了equal方法,让其比较的是string的内容而不是默认的地址.string放在常量池里都

final修饰的类不可继承

字符串拼接
+左右只要有一个是字符串,那么这个+就是拼接功能。得到一个新的字符串。
char加上int后是int
System.out.println("hello"+'a'+1);//helloa1
System.out.println('a'+1+"hello");//98hello
System.out.println("5+5="+5+5);//5+5=55
System.out.println(5+5+"=5+5");//10=5+5


平常我们定义的String str=”a”;其实和String str=new String(“a”)还是有差异的。
前者默认调用的是String.valueOf来返回String实例对象,至于调用哪个则取决于你的赋值,比如String num=1,调用的是 public static String valueOf(int i) { return Integer.toString(i); }
后者则是调用如下部分: public String(String original) { this.value = original.value; this.hash = original.hash; }
最后我们的变量都存储在一个char数组中 private final char value[];

当做参数传递是不会反噬,因为String是常量

状态 isEmpty,length
比较 equals,equalsIsIgnoreCase,startsWithString,endWithString
包含 contains
匹配 matchs
替换 replace,replaceAll,replaceFirst
分割 split
子串 subString,subSequence
转换
转出 toCharArray
转进 valueOf
charSequence 是一个接口,后面是实现类 : CharBuffer, Segment, String, StringBuffer, StringBuilder

boolean equalsIgnoreCase(String anotherString)
boolean contains(CharSequence s)
boolean startsWith(String prefix)
boolean endsWith(String prefix)
boolean isEmpty(String prefix)
int length()
bool matchs(String regex) //字符串是否匹配此正则。返回值是bool,String类里没有返回字符串数组的正则匹配。
String replace(char oldChar,char newChar)
String replace(charsequence target,charsequence replacement)
String replaceAll(String regex,String replacement) //这个还有一个replaceFirst()
String[] split(String regex [,int limit])
charSequence subSequence(int beginIndex, int endIndex)
String subString(int beginIndex[, int endIndex])
char[] toCharArray()
toLowCase([locale locale])//locale 是一个类,表明是什么语言什么国家。
trim()
staticStringvalueOf(boolean b) 返回 boolean 参数的字符串表示形式。
staticStringvalueOf(char c) 返回 char 参数的字符串表示形式。
staticStringvalueOf(char[] data) 返回 char 数组参数的字符串表示形式。
staticStringvalueOf(char[] data, int offset, int count) 返回 char 数组参数的特定子数组的字符串表示形式。staticStringvalueOf(double d) 返回 double 参数的字符串表示形式。
staticStringvalueOf(float f) 返回 float 参数的字符串表示形式。
staticStringvalueOf(int i) 返回 int 参数的字符串表示形式。
staticStringvalueOf(long l) 返回 long 参数的字符串表示形式。
staticStringvalueOf(Object obj) 返回 Object 参数的字符串表示形式。
StringBuffer类
线程安全,慢,
用于构造字符串,解决字符串构造慢的难题:String+String 会用new声明空间,所以会非常慢。
少了一些字符串的方法,比如split,replaceAll等。多了append,delete等。
构造:
public StringBuffer()
public StringBuffer(int capacity) :StringBuffer有容量和长度
public StringBuffer(String str)
public StringBuffer(CharSequence seq)
添加
StringBuffer append(boolean b)及其各种参数的重载方法重载方法,也能传Object类型参数,会转成字符串,可链式操作
插入
StringBuffer insert(int offset, boolean b)及其重载方法 //offset取值范围从0到length,插入到指向的左边。
StringBuffer delete(int start, int end)
StringBuffer deleteCharAt(int index) //参数是index,index是从0开始
void setCharAt(int index, char ch)
StringBuffer replace(int start, int end, String str) //把指定的串换成给的串,指定的串大就删掉剩下的,小就挤进去。
StringBuffer reverse()
int indexOf(String str [, int fromIndex])
int laseIndexOf(String str [, int fromIndex])
char charAt(int index)
状态
int capacity() //当前容量,已申请的空间大小
int length() //字符的长度
void setLength(int newLength) //长截短补null
void ensureCapacity(int minimumCapacity)
void trimToSize() //减少存储空间,影响capacity()的值,不影响length()的值。
子串
CharSequence subSequence(int start, int end)
String substring(int start [, int end])
转换
与String相互转换
String toString()
构造与toString方法
注意链式编程
new StringBuffer().append('a').append(1.3).append(100).append(10000) = a1.310010000
new StringBuffer("abcdefg").insert(7,'h') = abcdefgh
new StringBuffer("abcdefg").delete(1,3) = adefg
new StringBuffer("abcdefg").append(true).deleteCharAt(2) = abdefgtrue
new StringBuffer("abcdefg").replace(1, 2, "xxxx") = axxxxcdefg
new StringBuffer("abcdefg").replace(1, 6, "xxxx") = axxxxg
new StringBuffer("abcdefg").reverse() = gfedcba
new StringBuffer("abcdef").charAt(2) = c
new StringBuffer("abcdef").codePointAt(2) = 99
StringBuilder类
这个类跟StringBuffer一模一样,唯一不同:这个线程不安全,但是运行快。

0

评论区