java String对象

一、String 实例话

         String 本身就是一个类,String 构造函数是:public String (String original);

         所以就有 String tmp = new String("new string");实例化一个String对象;另外String也可以通过直接赋值的方式实例化一个对像例如:String tmp = "new string";

          两中实例化方式的区别:

         1.直接赋值法: 会在堆内存空间中,只开辟一个空间,不会产生多余的内容。

         2.new String对象:会在内存中会开辟两个空间,所以直接赋值的方式比new的方式会用更少的堆内存的开销。

              String str1 = "hello" ;
              String str2 = "hello" ;
              String str3= "hello" ;
              System.out.println("str1 == str2 -->" + (str1==str2));   //true
              System.out.println("str1 == str3 -->" + (str1==str3));  //true
              System.out.println("str2 == str3 -->" + (str2==str3));  //true

          实际上,以上的三个对象表示的都是同一个空间的引用,因为对于String来讲使用直接赋值的方式会在字符串池中保存内容。如果之后在声明字符串的时候发现内容一样,则不会重新开辟空间,而是从内存池中取出数据继续使用。

二、String 比较

       String 比较一般概念不清楚的化,就会用 == 来进行比较(虽然很简单,初学者通常也很容易犯这样的错误),用“==”比较的是两个对象的地址是否相等,具体来讲实际上比较的是地址的值,因为地址是以数值的形式存在的。

      实际上字符串比较真正要比较的不是地址的值,而是两个字符串的内容,用String类中的equals()方法完成比较,方法定义: Public Boolean equals(String str)。

三、String的匿名对象

       其实一个字符串(使用“”括起来的)就是一个String的匿名对象,例如有见过这样的写法:

    String tmp = "hello ";   

    “hello”.equals(tmp);

四、字符串的内容一旦声明就不能被更改

     String tmp = “hello”;

      tmp += " world";

      System.out.println(tmp);

     虽然最终输出的结果改变了,但是字符串的内容真的改变了吗?
     实际上来讲,字符串变量的改变改变的是内存空间的地址指向,而本身的字符串内容没有任何改变。所以,在开发中以下的操作代码绝对要避免。

       String str1 = "hello" ;

        for (int i = 0 ; i< 100 ; i ++ ) {
                str1 += i ;
          }    
          System.out.println(str1); 
五、Sting[]数组对象转化为ArrayList
         通常我们最先想到的就是创建一个list对象,然后遍历String[],把其中的内容add到list中,现在我们有了
         public List Arrays.asList(String[] tp)
         例如:String[] arr={"a","b","c"};
                     List l = Arrays.asList(arr);

六、字符与字符串
       在String类中提供了以下的方法操作字符与字符串间的转换关系:
|-根据字符串中提供的索引找到指定位置的字符:public char charAt(int index)
|-将字符串变为字符数组:public char[] toCharArray()
|-将字符数组变为字符串:
|-将全部的字符数组变为String类型:public String(char[] value)
|-将部分的字符数组变为String类型:” public String(char[] value,int offset,int count)
        例如:取出字符串中制定位置的字符

               String str = "hello" ;
               char c = str.charAt(2) ;
               System.out.println(c) ;
         例如:字符串 –-> 字符数组
              String str = "hello world !!!!!#@" ;
              char c[] = str.toCharArray() ;
              for (int i = 0 ; i < c.length ; i++ ){
                     System.out.print(c[i] + "、" ) ;
              }
              String str1 = new String(c) ;
              String str2 = new String (c,0,5) ;
              System.out.println("\n"+str1) ;
              System.out.println(str2) ;
七、字节与字符串
       与字符数组的操作一致,一个字符串也可以变为字节数组,一个字节数组也可以变为字符串:

|-String 字节数组:public byte[] getBytes()

|-字节数组 String
|-全部:public String(byte[] bytes)
|-部分:public String(byte[] bytes,int offset,int length)
        例如:字节数组 字符串
        String str = "hello world !!!!!#@" ;
        byte b[] = str.getBytes() ;  //将字符串变为字节数组
        String str1 = new String(b) ;
        String str2 = new String (b,0,5) ;
        System.out.println("\n"+str1) ;
        System.out.println(str2) ;
八、判断是否以指定的字符串开头或结尾
|-判断是否以指定的字符串开头:public boolean startsWith(String prefix)
|-判断是否以指定的字符串结尾public boolean endsWith(String suffix):
        例如:验证操作
        String str = "**hello world ##" ;
        System.out.println(str.startsWith("**")) ;
        System.out.println(str.endsWith("##")) ;
九、替换操作
       使用以下的方法可以完成替换的操作:
 |-public String replaceAll(String regex,String replacement)
        例如:替换内容
        String str = "hello world " ;
        String newStr = str.replaceAll("l","x") ;
        System.out.println(newStr) ;
十、字符串的截取
       使用以下两种方法可以完成字符串的截取操作:
|-全部截取:public String substring(int beginIndex)
|-部分截取:public String substring(int beginIndex,int endIndex)
例如:验证操作
        String str = "hello world " ;
        String sub1 = str.substring(6) ;   //从第六个字符开始截取
        String sub2 = str.substring(0,5) ;  //从第一个字符截取到第五个字符
        System.out.println(sub1) ;
        System.out.println(sub2) ;
十一、字符串的拆分
         可以将字符串按照指定的内容进行拆分操作:
|-public String[] split(String regex)
        例如:拆分字符串
        String str = "hello world " ;
        String s[] = str.split(" ") ;
        for (String st :s){
            System.out.println(st) ;
        }
十二、字符串查找
       如果需要在一个字符串中查找是否存在指定的内容,可以使用以下的两个方法:
|-取得指定字符串的位置:public int indexOf(int ch),public int indexOf(int ch, int fromIndex)
|-此方法返回int型数据,如果查到了则返回位置,查不到,返回-1 ;
|-直接查找:public boolean contains(String s)
       例如:查找操作
        String str = "hello world " ;
        System.out.println(str.contains("hello")) ;    //ture
        System.out.println(str.contains("aust")) ;      //false
        例如:查找位置
        String str = "hello world " ;
        System.out.println(str.indexOf("hello")) ;
        System.out.println(str.indexOf("aust")) ;
        if((str.indexOf("aust")) != -1){
            System.out.println("查找到所需的内容。");
        }
        例如:指定查找的开始位置
        String str = "hello world " ;
        System.out.println(str.indexOf("hello")) ;
        System.out.println(str.indexOf("hello " , 6)) ;
十三、字符串的其他操作
       去掉左右空格:public String trim()
       取的字符串长度:public int length()
       转大写:public String toUpperCase()
       转小写:public String toLowerCase()
        例如:
        String str = " hello world " ;
        System.out.println(str.trim()) ;
        System.out.println(str.trim().length());
        System.out.println(str.trim().toUpperCase()) ;


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值