zoukankan      html  css  js  c++  java
  • 黑马程序员_<<String类>>

    --------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------


    1. String类

            1.概述

             String是一个特殊的类,一旦被初始化,那么就不能被改变,String类是一个被final修饰的类。

           2.String的初始化

              String s1=”abc”;这个表示的是一个对象,但是不是在内存中创建的,而是在内存的缓冲区(常量池)中创建了一个“abc”对象,只有通过new关键字创建的,才在堆中申请了内存空间,并且在栈中有声明的变量名称。

        当有Strings1=”abc”,String s2=”abc”;都执行的话,当执行了s1后,会在内存的缓冲区(常量池)中创建了”abc”字符串对象,然后在执行s2的时候,那么先去内存缓冲区查找,要是存在了,那么就直接指向此对象,直接使用,所以,这两句话也就纯创建了一个”abc”字符串。

        String str=new String(“xyz”);这是创建了两个对象,一个是先在内存中通过new创建了一个对象,然后在内存缓冲区中又创建了一个字符串“xyz”,然后在内存中的指向了内存缓冲区(常量池)中的对象。

     

       在常量池中只有一个相等的字符串,但是在内存中可以有多个相等的字符串。



           3.一道面试题

               String str=new String(“xyz”);此语句产生几个对象,

               如果常量池中已经有“xyz”字符串的话,那么就产生一个对象,要是常量池中没有”xyz”,那么就产生两个对象,一个是咋内存中,一个是在常量池中(内存缓冲区)

        

    2. 字符串比较

               有两种比较方法:==和equals。

          ==:比较的是内存地址,equals比较的内容

     

        

      public class Text {
      public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "abc";
        String str1 = new String("abc");
        String str2 = new String("abc");
        System.out.println(s1 == s2);// true 地址相等
        System.out.println(s1.equals(s2));// true 内容相同
        System.out.println(str1 == str2);// false 地址不相等
        System.out.println(str1.equals(str2));// true 内容相同
        System.out.println(s1 == str2);// false 地址不相等
        System.out.println(s1.equals(str2));// true 内容相同
      }
    }
     

    3. 获取

         下面举了一些常用的方法,这些方法还有很多重载的,小想查看全面的,请查看API文档 java.lang.String包,里面方法很全

      

     

    public class getString {
      public static void main(String[] args) {
        String str = "abcdasdfgh";
        // 获取长度
        System.out.println(str.length());
        // 通过位置获取字符
        System.out.println(str.charAt(3));
     
        // 通过字符获取位置
        System.out.println(str.indexOf('d'));// 从首位置开始查找,第一个字符d
        System.out.println(str.indexOf('d', 5));// 从位置5开始查找,遇到的第一个字符d
        // 获取子字符串的位置
        System.out.println(str.indexOf("asd"));// 获取字符串asd在str中的位置
      }
     
    }
    结果:
    10
    d
    3
    6
    4


    4. 判断

    下面举了一些常用的判断方法,还有很多重载和其他的方法都不一一举例了,有疑问参考API文档

     

    public class judgeString {
      public static void main(String[] agrs) {
        String str = "zhangsan.java";
        // 判断字符串是否为空
        System.out.println(str.isEmpty());// false
        // 判断字符串是否包含某内容
        System.out.println(str.contains("."));// true
        // 判断字符串是否是以指定前缀开始
        System.out.println(str.startsWith("zhang"));// true
        // 判断字符串是否是以指定后缀结束
        System.out.println(str.endsWith(".java"));// true
      }
    }
     


    5. 转换

          1.将字符数组转换成字符串

        构造函数:String(char [] values); String(char []values,start,end);将一部分字符数组转换成字符串

            Static String copyValuesof(char [] );

          2.将字符串转换成字符数组

         toChatArray();

          3.将字节数组转换成字符换

                 String(byte [] ); String(byte []values,start,end);

          4.将字符串转换成字节数组

        getBytes();

          5.将基本数据类型转换成字符串

         valuesOf(int  a);

     

    public class ZhuanString {
      public static void main(String[] args) {
        String str="abcdef";
            char [] cs={'h','e','l','l','o'};
            //将字符串转换成字符数组
             char [] newcs=str.toCharArray();
            //将字符数组转换成字符串
             System.out.println(new String(cs));
             //将字符串转换成字节数组
             byte [] bs=str.getBytes();
             //将字节数组转换成字符串
             System.out.println(new String(bs));
             //将基本数据类型转换成字符串
             System.out.println(String.valueOf(4));
      }
     
    }


    6. 分割,替换,截取

       

        

     public class Text {
      public static void main(String[] args) {
        String str="zhangsan,lisi,wangwu";
        //分割
        String [] ss=str.split(",");
        for(String t:ss)
          System.out.print(t+" ");
        //替换
        String s=str.replace('w', 'y');
        String s1=str.replace("zhangsan", "sa");
        //截取
        String s3=str.substring(4);
        String s4=str.substring(2,8);
       
        System.out.println("
    s="+s);
        System.out.println("s1="+s1);
        System.out.println("s3="+s3);
        System.out.println("s4="+s4);
      }
    }
     
    结果:
     
    zhangsanlisi wangwu
    s=zhangsan,lisi,yangyu
    s1=sa,lisi,wangwu
    s3=gsan,lisi,wangwu
    s4=angsan

    7.去除空格,大小写转换,比较

        

     public class Text {
      public static void main(String[] args) {
        String str="  abc ";
        //取出两边空格
        String  s1=str.trim();
        //大小写转换
        String s2=s1.toUpperCase();//转换成大写
        String s3=s2.toLowerCase();//转换成小写
        //比较
         
        System.out.println("s1="+s1);
        System.out.println("s2="+s2);
        System.out.println("s3="+s3);
          System.out.println(s2+"和"+s3+"比较大小="+s2.compareTo(s3));
          //比较的时候是根据字符的ASCII进行的比较
          //小于0表示s2小于s2 
          //等于0  表示s2和s3相等  
          //大于0  表示s2比s3大  
      }
    }
    结果:
    s1=abc
    s2=ABC
    s3=abc
    ABC和abc比较大小=-32
     
    
    
    -------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------
  • 相关阅读:
    JIRA 6.3.6安装
    Mac安装Protobuf
    Linux 磁盘测速
    rsync快速删除海量文件
    Linux 修改主机名
    查看java进程中哪个线程在消耗系统资源
    redis安装
    springmvc返回中文乱码问题
    java.lang.NumberFormatException: multiple points问题
    谈谈java多线程(一)
  • 原文地址:https://www.cnblogs.com/pangblog/p/3327555.html
Copyright © 2011-2022 走看看