String类的方法


String类

字符串如果直接赋值,在字符串常量池中找有没有该值,如果有就直接使用;

如果没有,在常量池中增加该值。


方法执行的时候在栈区。

通过new开辟的空间都在堆区  GC值管理堆区的内存。

如果是new赋值的,现在堆区开辟空间存放值,接着会查看字符串池中是否有这个值。如果没有,会将该值在字符串池中添加上。


"=="比较的是内存地址  "equals"比较的是值

比较两个字符串的值:

1、先比较内存地址(如果内存地址一样说明他俩是同一个)

2、当内存地址不同时,判断参数对象的数据类型是否是字符串,如果不是返回false

3、当内存不同,并且都是字符串,将两个字符串都转换成字符串数组

4、比较字符串数组的长度

5、长度一样就挨个比较数组的字符元素,只要有一个不一样就说明不相等,返回false


String是不可变字符串,当字符串内容发生了改变就会产生新的字符串

拼接concat  拼接完毕会产生一个新的字符串

String a = "ab";a = a.concat("cde");
System.out.println(a);// concat可以用 "+" 代替
a = a+01+"拼接"+02+"字符串"; //加号更好用、灵活,不过出问题的可能性也大一点
a = a+(5+6)+"加法"; //虽然是拼接,不过也遵循四则运算

得到字符串的长度
length()  返回值是int

int x = a.length();
System.out.println(a.length());

根据下标获取字符串所在位置
charAt()  返回值是char

char x = a.charAt(6);         //下标从0开始

根据字符获取所在下标
indexOf()     返回值是int 

找到了返回下标,找不到返回-1,里面的字符或者字符串可以写成对象名
String a = "abcdefg123hhhoohh";
int x = a.indexOf("fg12");x = 5; 
//从左到右找,起始位置下标为0,显示的是找到的第一个//第一个参数:要查找的字符或者字符串 第二个参数:要开始查找的起始位置
int y = a.indexOf("12",5);y = 7; //从下标为5的地方向右找(包含起始下标) 显示的是找到的第一个
// 方法里面的字符串可以用对象名来代替
int i = a.listIndexOf("h");i = 16; //寻找的字符出现的最后一次的位置
//listIndexOf也可以理解成从右往左找
int j = a.listIndexOf("h",14);j = 12; //寻找的字符 截止到当前指定下标为止 出现的最后一次的位置 
//如果找不到 返回-1 找到了 就返回下标
获取字符串
subString   返回值是String
String a ="abcdefg";
String b = a.subString(2,4);
b = "cd";
 //第一个参数是开始获取的位置 第二个位置是结束的位置(不包含) [ n,m )左包含右不包含,获取到的字符串长度是m-n
String c = a.subString(2);
c = "bcdefg"; //如果只输入一个参数 就从输入的位置开始一直获取到最后
判断字符串的开头/结尾
startWith   endWith  返回值是boolean
//比如判断开头是不是网站、后缀是啥格式啊啥的
String a = "www.baidu.com";
boolean x = a.startWith"www"; //判断开头 字符串长度不限
boolean y = a.endWith"com"; //判断结尾,字符串长度不限
//返回true说明符合, 返回false说明不正确
整体转换大/小写
toUpperCase / toLowerCase
String x = "Bian cheng da xiAo Xie";
String a = x.toUpperCase();
String b = x.toLowerCase();
//执行方法以后会产生一个新的字符串,但是原先字符串不会发生改变,一定要记得把新字符串赋给对象
字符串切割
split 返回值是字符串数组 String[]
String a = "小明 大明 小红 小刚 小白"; 
//按照某一个字符分割String [] b =a.split(" ");        
// 把字符串a按照空格分割成字符串数组 把得到的值赋给b
//输出b
[小明,大明,小红,小刚,小白]
把字符串直接变成字符数组
toCharArray  返回值是char []
String a = "红蓝绿白123 , ~";
char [] b = a.toCharArray();
//用Array.toString方式输出b就会得到数组,如果直接遍历还是会得到字符串
for( char c:b ){
Syste,.out.println(c);
}
红蓝绿白123 , ~
//用Arrays.toString方法输出
String x ==Array.toString(b);
System.out.println(x);
[红, 蓝, 绿, 白, 1, 2, 3,  , ,,  , ~]
//一个字符一个字符的分开啦


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值