String:
编译器会将其进行运算然后将结果写进字节码文件中。
表达式中有一个变量,编译器不会处理
字符串若是以字面量形式赋值,jvm会重用内容相同的字符串对象。过程如下:
常量池中是否已经创建过该字符串的对象,若有,则直接使用该对象做重用,
若没有,则重建一个对象,然后存入常量池并将该对象的地址返回。
indexOf
查看给定字符串在当前字符串中的位置。
若当前字符串中包含给定字符串,会返回给定字符串第一个字符在当前字符串中的位置,若当前字符串不含有给定字符串, 则返回-1.
重载方法:从当前字符串给定的位置处开始检索第一次出现给定字符串的位置。
index = str.indexOf("in",3);
//从第四个字符开始寻找第一次出现in的位置。
System.out.println(index);
int lastIndexOf(String str)查找最后一次出现给定字符串的位置。
通常用来解决检查一个字符串中是否含有要求的字符串,可以通过位置来得知。
甚至可以要求具体出现的位置。
subString 子串
在javaAPI中,有一个特点,用两个数字表述范围,通常都是含头不含尾的。
下面的参数就是:包含11位置的字符,但是不包括17位置的字符、
String
str1
=
"http://www.oracle.com"
;
String
sub
=
str1
.
substring
(
11
,
17
)
;
System
.
out
.
println
(
sub
)
;
输出结果为oracle.
String substring (int start)从当前字符串的指定位置处开始,一直截取到字符串末尾、
获取一个URL的域名:
思路:截取地址中的第一个“.”与第二个点“.”之间的字符串即可。
步骤:1:找到第一个“.”的位置
2:找到第二个“.”的位置
3:截取第一个“.”后面的第一个字符开始,到第二个“.“的位置的所有字符、
String
url
=
"http://www.tarena.com.cn"
;
int
start
=
url
.
indexOf
(
"."
)
;
int
end
=
url
.
indexOf
(
"."
,
start
+
1
)
;
String
name
=
url
.
substring
(
start
+
1
,
end
)
;
System
.
out
.
println
(
name
)
;
**String trim()
* 该方法会将当前字符串中左右两边的“空白”去除。
public
static
void
main
(
String
[]
args
)
{
String
str
=
" hello "
;
String
trim
=
str
.
trim
()
;
System
.
out
.
println
(
str
)
;
System
.
out
.
println
(
trim
)
;
}
char charAt(int i)
该方法用于返回字符串中给定的位置处对应的字符。
public
static
void
main
(
String
[]
args
)
{
String
str
=
"thinking in java"
;
char
c
=
str
.
charAt
(
9
)
;
System
.
out
.
println
(
c
)
;
}
}
检查一个字符串是否为回文。
思路:只要判断字符串中正数位置的字符与倒数位置上的字符都一样,就是回文了
for(int i = 0;i<str.length/2;i++){
if(str.charAt(i) != str.charAt(str.length()-i-1)){
System.out.println("不是回文");
break;
}
}
System.out.println("是回文");
boolean startsWith(String str)
判断当前字符串是否是以字符串开始的
boolean endsWith(String str)
判断当前字符串是否是以字符串结尾的
String str = "thinking in java";
boolean starts = str.startWith("th");
System.out.println("starts:"+starts);
boolean ends = str.endWith("va");
System.out.println("ends:"+ends);
String toUpperCase()
将当前字符串中英文部分转换位全大写;
String toLowerCase()
将当前字符串中英文部分转换位全小写;
public static void main(String[]args){
String str = "我爱Java";
String upper = str.toUpperCase();
System.out.println(upper);
String lower = str.toLowerCase();
System.out.println(lower);
}
字符串提供了若干的重载静态方法valueOf()
通常用来将其他类型数据转换为字符串形式
public static void main(String[]args){
int i = 100;
String s1 = String.valueOf(i);
System.out.println(s1);
double d = 100.123;
String s2 = String.valueOf(d);
System.out.println(s2);
StringBuilder 用来解决修改字符串导致的内存消耗问题。
StringBuilder内部维护一个可变的字符数组,所以修改的字符串内容都是在当前对象中完成,而不会创建新对象
StringBuilder 提供可修改字符串的相关方法:增删改插
public static void main(String[]args){
String str = "好好学习java";
StringBuilder sb = new StringBuilder(str);
str = builder.toString();
//获取StringBuilder表示的字符串String toString()
//好好学习java
System.out.println(str);
//好好学习java,为了改变世界!
//StringBuilder append(String str)
// 该方法用于向当前字符串末尾追加给定字符串,返回值还是当前的StringBuilder.
StringBuilder insert (int i,String str)
在当前字符串的指定位置插入给定字符串,原位置及后续字符串顺序向后移动
bulider.insert(9,”就是“);
str = builder.toString();
System.out.println(str);
StringBuilder replace(int start,int end,String s)
将当前字符串中指定范围内的字符串替换为给定的字符串
builder.replace(0,8,"活着");
str.builder.toString();
System.out.println(str);
StringBuilder delete()
将当前字符串中删除指定位置的字符串。
StringBuilder reverse()
将当前字符串内容反转将当前字符串中指定范围内的字符串替换为给定的字符串