Java中String中常用方法整理


  读入字符串
  Scanner in = new Scanner(System.in);
  String s;
  s = in.nextLine();        //以换行为结束标志
  System.out.println(s);


  比较字符串大小
   ==
   .compareTo()
   .equals()

 
  String a=new String("abc");
  String b=new String("abc");
  System.out.println(a==b);  //返回false  注:对于对象的比较是对对象引用的比较
                             // 内存中对应的地址是不一样的,故a!=b
  String s1 = "abc";
  String s2 = "abc";
  System.out.println(s1==s2);             //返回true
  System.out.println(s1.compareTo(s2));   // s1>s2返回1     s1==s2返回0   s1<s2返回-1
  System.out.println(s1.equals(s2));      // 相同返回ture   不同false
 
  至于.compareTo()和.equals()和“ == ”的区别参见以下
  www.cnblogs.com/ycpanda/p/3637153.html
  https://blog.csdn.net/zzp_403184692/article/details/8094875 
  

  
  

  取字符串子串
   .substring
  String s3 = "01234";
  System.out.println(s3.substring(1, 4));
  String s4 = "hello";
  System.out.println(s4.substring(1, 3));
 注意:"hello".substring(1,3)的结果是
 正确答案:el
  
 
  
  
  找字符串中单个字符位置

   .indexOf  .lastIndexOf 等等

 
  String s3 = "0123A56389汉子";
  System.out.println(s3.indexOf('A'));
  System.out.println(s3.indexOf("A56"));             // 只找到A的位置
  
  int loc = s3.indexOf('3');
  System.out.println(s3.indexOf('3',loc+1));        //loc后的一个‘3’的位置
  System.out.println(s3.lastIndexOf('3'));          //从后往前找‘3‘

  
  该字符串 是否在 该子串 开始或结束

   .startsWint(该字符串子串)
   .endsWith(该字符串子串)

  String s3 = "0123A56389汉子";
  String s4 = "0123";
  String s5 = "汉子";
  String s6 = "汗子";
  System.out.println(s3.startsWith(s4));       // 是否为子字符串开始
  System.out.println(s3.endsWith(s5));         // 是否为子字符串结束
  System.out.println(s3.endsWith(s6));         // 非子字符串 -> false
 
  
  删去字符串中首尾多余的空格

  s.trim();
  String a=new String("  hello Java  ");
  System.out.println(a);     //输出:  hello Java  
  a = a.trim();
  System.out.println(a);     //输出:hello Java
  String.trim()究竟去掉了什么?参照以下
  https://blog.csdn.net/leeqihe/article/details/76316565?locationNum=2 
 
     
  没错,我就是一个突然冒出来的 分割线1
  
  用字符串里的 字符c2 代替 字符c1;

  s.replace(c1,c2);
  String a=new String("hello Jeve");
  System.out.println(a.replace('e','a'));
运行结果:hallo Java

  返回一个新的字符串,它是通过用 c2 替换此字符串中出现的所有 c1 得到的。
  如果 c1 在此 String 对象表示的字符序列中没有出现,则返回对此
  String 对象的引用。否则,创建一个新的 String 对象,它所表示的字符序列除了所有的
  c1 都被替换为 c2 之外,与此 String 对象表示的字符序列相同。
  
  
  s.toLowerCase(); 全部转小写
  s.toUpperCase(); 全部转大写
   
  
  我是 分割线2
  分割线1和分割线2之间的方法可能会创建一个新的字符串
  在栈内存中不改变 但是指向指向了新的堆内存   在堆内存中会开辟新的存储空间
(表达能力还待提升,请见谅)
  
  
  
  
  String s = "hello";
  s = "bye";
  能否说字符串"hello"被改成了"bye“呢?
  
  不能,不是修改,而是申请了一个新的内存空间来储存新的字符串,
  而s的指向从原来的指向"hello"变成了指向"hey",也可以看
  成是本来管理"hello"变成了管理"hey"。原来的hello因为没
  有被指向,会被系统回收机制释放内存。
  
  即一开始在堆上创建hello,并指向它,随后指向bye,“hello”被回收
  
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值