标签:empty OLE 大小写 特性 change 对象存储 == 出现 匹配
JDK包含JRE,JRE包含JVM.
String的特性
String类:代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
String是一个final类,代表不可变的字符序列。
字符串是常量,用双引号引起来表示。它们的值在创建之后不能更改。
String对象的字符内容是存储在一个字符数组value[]中的。
String的定义方式
String s1 = "abc";//字面量的定义方式,数据存放在方法区字符常量池
//本质上this.value = new char[0];
String s1 = new String();
//this.value = original.value;
String s2 = new String(String original);
//this.value = Arrays.copyOf(value, value.length);
String s3 = new String(char[] a);
//Tom存放于字符常量池中
Person p1 = new Person("Tom",12);
Person p2 = new Person("Tom",12);
System.out.println(p1.name == p2.name);//true
字符串常量存储在字符串常量池,目的是共享
字符串非常量对象存储在堆中
String常见笔试题
String s1 = "hello";
String s2 ="world";
String s3 = "hello" + "world";
String s4 = s1 + "world";
String s5 = "hello" + s2;
String s6 = (s1 + s2).intern();
System.out.println(s3 == s4);//false
System.out.println(s3 == s5);//false
System.out.println(s4 == s5);//false
System.out.println(s3 == s6);//true
public class StringTest {
//str存放在了堆中
String str = new String("good");
//ch存放在了堆中
char[] ch = { ‘t‘, ‘e‘, ‘s‘, ‘t‘ };
//值传递,地址不可改变
public void change(String str, char ch[]) {
//str存放在了常量池,局部变量
str = "test ok";
//ch堆中的值变了
ch[0] = ‘b‘;
}
public static void main(String[] args) {
StringTest ex = new StringTest();
ex.change(ex.str, ex.ch);
System.out.print(ex.str);//good
System.out.println(ex.ch);//best
}
}
String的常用方法
############################################
#########################################
String replace(char oldChar, char newChar):返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
String replace(CharSequence target, CharSequence replacement):使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
String replaceAll(String regex, String replacement) : 使 用 给 定 的replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
String replaceFirst(String regex, String replacement) : 使 用 给 定 的replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。
String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。
String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中
String 常见算法题
//模拟一个trim方法,去除字符串两端的空格。
public String myTrim(String str) {
if (str != null) {
int start = 0;// 用于记录从前往后首次索引位置不是空格的位置的索引
int end = str.length() - 1;// 用于记录从后往前首次索引位置不是空格的位置的索引
while (start < end && str.charAt(start) ==‘ ‘{
start++;
}
while (start < end && str.charAt(end)== ‘ ‘) {
end--;
}
if (str.charAt(start) == ‘ ‘){
return "";
}
return str.substring(start, end + 1);
}
return null;
}
标签:empty OLE 大小写 特性 change 对象存储 == 出现 匹配
原文地址:https://www.cnblogs.com/shenlei-blog/p/13812392.html