String中的方法

这里只是总结一些我觉得有用可能会用到的;

详细api:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh

1.str.getChars(int strBegin,  int strEnd,  char[] dst,  int  dstBegin):将str的一部分(下标从strBegin到strEnd-1)复制到字符数组dst从dstBegin开始到des[dstBegin+(复制的长度)]将会覆盖原来的字符。。注意控制下标。。

        String s1="abcdefgh";
        char[] s2={‘1‘,‘2‘,‘3‘};
        s1.getChars(1, 3, s2, 0);
        System.out.print(s2);

//输出"bc3"
        String s1="abcdefgh";
        char[] s2={‘1‘,‘2‘,‘3‘};
        s1.getChars(1, 3, s2, 1);
        System.out.print(s2);
//输出"1bc"
          

2.str.equals(Object obj):将str和obj比较,当且仅当obj不为null,并且与str是相同字符序列,返回true,**覆写了Object类equals()方法**

3.str.equalsIgnoreCase(String anotherString):不考虑大小写比较字符串是否相同

4.s1.compareTo(String s2):按序一次比较对应位置的字符是否相等,不等返回他们ASCII码的差,相等继续比较下一位,若其中一个到了最后一位并且另一个没到,返回s1.length()-s2.length();

     String s1="abcdefgh";
        String s2="abcde";
        String s3="c";
        System.out.println(s1.compareTo(s2));//3:s1.length()-s2.length()    8-5=3
        System.out.println(s1.compareTo(s3));//-2:‘a‘-‘c‘
        System.out.println(s3.compareTo(s1));//2:‘c‘-‘a‘

5.s1.compareToIgnoreCase(String   s2):忽略大小写,其他用法同compareTo();

     String s1="abcdefgh";
        String s2="Abcde";
        String s3="C";
        System.out.println(s1.compareToIgnoreCase(s2));//3:s1.length()-s2.length()    8-5=3
        System.out.println(s1.compareToIgnoreCase(s3));//-2:‘a‘-‘c‘
        System.out.println(s3.compareToIgnoreCase(s1));//2:‘c‘-‘a‘

6.s1.startsWith(String prefix,  int toffset),    s1.startsWith(String prefix):s1是否以指定前缀prefix开始,toffset是偏移量,从该位置开始的子串。。。

        String s1="abcdefgh";
        System.out.println(s1.startsWith("c",2 ));//true
        System.out.println(s1.startsWith("cd",2 ));//true
        System.out.println(s1.startsWith("cde",2 ));//true
        System.out.println(s1.startsWith("ce",2 ));//false
        System.out.println(s1.startsWith("a"));//true
        System.out.println(s1.startsWith("ab"));//true
        System.out.println(s1.startsWith("b"));//false        

7.s1.indexOf(int ch),s1.indexOf(int ch,int fromIndex), s1.indexOf(String s2), s1.indexOf(String  s2, int fromIndex)返回s2在s1中第一次出现位置的index,,ch代表字符的ASCII码

        String s1="abcdefga";
        System.out.println(s1.indexOf(97));//97是‘a‘  返回0
        System.out.println(s1.indexOf(98));//98是‘b‘  返回1
        System.out.println(s1.indexOf(99));//99是‘c‘  返回2
        System.out.println(s1.indexOf(105));//105是‘i’,,,没出现
        System.out.println(s1.indexOf("d"));//返回3
        System.out.println(s1.indexOf("a",7));//返回7        

8.s1.subString(int beginIndex).    s1.subString(int beginIndex,  int endIndex);截取字符串,注意“前闭后开”,【beginIndex,endIndex)

9.s1.replace(char oldChar,  char  newChar):代替所有   s1.replaceAll(Strng regex,  String replacement) :第一个参数是正则表达式,关于正则我后面会专门总结一章。。。replaceFirst(String regex,  String  replacement)

     String s1="abcdefga";
        System.out.println(s1.replace(‘a‘, ‘d‘));//  "dbcdefgd"
        System.out.println(s1.replace("ab", "#"));//   "#cdefga"
        System.out.println(s1.replaceAll("[a-z]", "#"));//   "########"

10.s1.matches(Srting regex):返回s1是否匹配此正则式

11.s1.split(String regex):返回的是一个字符串数组,,,参数是正则!!!

    String s1="1a2b3c4d5e6f7g8a";
        String[] res=s1.split("[a-z]");
        for(String item:res){
            System.out.println(item);
        }
        //res={"1","2","3","4","5","6","7","8"}

12.s1.format();  这里有一篇总结不错 http://blog.csdn.net/lonely_fireworks/article/details/7962171,有两个方法,format(String format, Object ..args):可以实现类似c语言里的格式化,主要记几个 %s---字符串  %d---十进制   %x---十六进制 %o----八进制  %f----浮点型。。注意有两种使用方式,,System.out.println(String.format("%s",100))和System.out.printf("%s  %n",100);更有用的是可以指定位数,,("%+d",15):+15   ("%-d",15):左对齐15  ("%.3f",9.0):9.000

 System.out.println(String.format("%f", 100.0));//100.000000默认六位
    System.out.printf("%f %n", 100.0);    //100.000000

13.s.copyValueOf(char[] data,  int offset,  int count)    s.copyValueOf(char[]  data):  貌似就是截取字符串。。

时间: 2024-08-09 14:41:15

String中的方法的相关文章

java String 中 intern方法的概念

1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null: 3. String str=”kvill”:String str=new String (“kvill”);的区别: 在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念. 常量池(const

String中intern方法的作用

前言 读完这篇文章你可以了解,String对象在虚拟机内存中的存放,intern的作用,这么多String对象的创建到底有什么区别,String 创建的对象有几个!! 正题 先科普几个知识点1.常量池存放于方法区中 2.jdk1.6 方法区放在永久代(java堆的一部分),jdk1.7 特别将字符串常量池移动到了的堆内存中(使用参数-XX:PermSize 和-XX:MaxPermSize指定大小),jdk1.8放在单独的元空间里面(-XX:MaxMetaspaceSzie设定大小),和堆相独立

C++中 string 中的方法的使用详解(心得)

string 字符串在所有的语言中都非常重要,c++也不例外,接下来我们将介绍string中的常用方法 1. size() 和 length() 函数 : 他们返回字符串的真实长度,且不会因为空格而截断,这两个方法完全等价,使用及输出如下: #include<iostream> #include<string> using namespace std; int main(void) { string s = "dasddasd"; printf("si

30天C#基础巩固------this,base,string中的方法,StringBuilder性能

这里主要是记录下自己学习笔记,希望有个地方在以后可以看到自己走过的路. 关于之前多态的知识有一个口诀,很好理解里面的override和new,virtual关键字. "new则隐藏,over重写,隐藏看类型,重写只管新" 面向对象的三大特征:封装,继承,多态. 非面向对象的特征---静态 静态一般的是使用的是方法,很少有字段. 下面是修饰符的图片,关于修饰符这个要在项目中使用,慢慢的理解. 一:this和base的区别. 这两个都是在我们进行开发经常使用的,关于this代表类的本身,我

String中substring方法内存泄漏问题

众所周知,JDK中以前String类中的substring方法存在内存泄漏问题,之所以说是以前,是因为JDK1.7及以后的版本已经修复了,我看都说JDK1.6的版本也存在这个问题,但是我本机上安装的1.6看了看源码不存在内存泄漏问题啊,又看了1.7的源码,和我本机的1.6的一样,是不是我的1.6版版其实是1.7的?!唉,不管了,反正1.7版本肯定没有这个问题(1.5及更老版本肯定有)了,大家就放心的用吧. 之所以存在内存泄漏的问题,是因为原先的版本中,substring是这样实现的: publi

String中各方法多数情况下返回新的String对象

(1)subString是否始终返回一个新串? 事实并非如此,subString只有在截取的子串是真子串(真子串指子串与原串不相同)时才会返回一个新声明的子串.当截取的是整个字符串时,则返回自身,具体可参考源码: subString方法用来截取子串,方法的使用有两种形式String subString(int begin)和String subString(int begin, int end).具体可参考JDK文档. public String substring(int beginIndex

String中hashCode方法的线程安全

class String{ //默认值是0 int hash; public int hashCode() { //将成员变量hash缓存到局部变量 int h = hash; //这里使用的是局部变量,没有多线程修改的风险 if (h == 0 && value.length > 0) { char val[] = value; //求hashcode过程使用局部h变量防止产生静态条件 for (int i = 0; i < value.length; i++) { h =

【转载】Java基础之String中equals,声明方式,等大总结

转载请注明出处:http://blog.csdn.net/dmk877/article/details/49420141 无论你是一个编程新手还是老手,提到String你肯定感觉特别熟悉,因为String类我们在学习java基础的时候就已经学过,但是String类型有我们想象的那么简单吗?其实不然,String类型的知识点还是比较多的.今天就和大家来一起讨论一下,关于String的一些容易让人疑惑的地方,废话不多说进入正题...如有谬误请批评指正,如果有疑问请留言.我会在第一时间修改或回答 通过

正则,String中用法,Pattern Matcher

package com.正则表达式; import java.util.Scanner; /** * * 校验qq号码 * 1:要求必须是5-15位数字 * 2: 0不能开头 * 分析: * A:键盘录入qq号码 * B:写一个功能 * C:调用功能,输出结果 * */ public class RegexDemo { public static void main(String[] args){ Scanner sc=new Scanner(System.in); System.out.pri