String类

字符串:

  字符串是常量,值在创建之后就不能更改,一旦字符串确定,在内存区域中就会生成这个字符串,字符串本身不会改变,但存储它地址的变量的地址值可以改变,字符串的本质是一个字符的数组,一旦赋值,终身不变。

  "   "是java中唯一一个不需要new就可以创建的对象,它就相当于一个对象,相当于new String。

  通过new方式创建的对象与""的对象的不同:    

      String s3 = "abc";

      String s4 = new String("abc");

      System.out.println(s3==s4);//false

      System.out.println(s3.equals(s4));//true,

                在堆里面有一个常量池,char数组进常量池,但是常量池有一个特点,一旦发现一个一模一样的char数组组合方式,则不会在开辟内存,所以通过new的在常量池外边的堆内存中,所以s4存储的是s3的地址值,但是堆又分配给他一个新的地址值,所以s3==s4不相等,因为地址值不同,所以s3只有一个对象,而s4在内存中有2个对象,一个new的对象在堆中,一个字符串本身对象,在字符串常量池中。

  String s5="qq"+"123";则会有3个对象。

String类构造方法:

  

   字节数组转字符串:

   public class Demo02 {
      public static void main(String[] args) {
           byte bytes[]={66,67,68,69};
           byte bytes[] = { -34, -67, -68, -20 };
     字节数组转字符串 如果字节是正数,走的是ASCII码表,从0-127,则数字48代表字符   ' 0 ',数字65代表 ' A ' ,97代表 ' a ' 。

   数字0-9是由ASCII码48-57

   大写字母A-Z是由ASCII码65-90

   小写字母a-z是由ASCII码97-122


           字节是负数,走的是系统默认码表,GBK中文码表,一个汉字2个字节
           String s = new String(bytes);
           System.out.println(s);
            String s2=new String(bytes,1,2);             表示的是从byte的数组的下标1开始,转2个字节。
           System.out.println(s2);
           字符数组转字符串
           char[] ch={'你','a','0','好'};
           String s3=new String(ch);
           System.out.println(s3);
           String s4=new String(ch,2,2);
           System.out.println(s4);
        }

  }

String成员方法:

      获取字符串长度

           

      String str = "abcde";

      int len = str.length();

      System.out.println("len="+len);

      截取字符串:

     

    String str = "abcde";

    String s1 = str.substring(1); //返回一个新字符串,内容为指定位置开始到字符串末尾的所有字符

    String s2 = str.substring(2, 4);//返回一个新字符串,内容为指定位置开始到指定位置结束所有字符(包头不包尾,包含2不包含4)

    System.out.println("s1="+s1);

    System.out.println("s2="+s2);

    查找字符串:

    

    当我们判断文件是以java结尾,还是txt结尾时,多用endWith()方法。

     String str = "java你好,你好java,hellojava";

            // 判断字符串是否以java开头
            boolean f1 = str.startsWith("java");      不限定"个数"
            System.out.println(f1);
            boolean f2 = str.endsWith(".java");
            System.out.println(f2);

    字符串中是否包含另一个字符串:

    

         // 判断大字符串str中是否含有传入的小字符串
           boolean f3 = str.contains("你好");
            System.out.println("是否包含你好:" + f3);
            // 获取java在字符串中第一次出现的索引值
            int index = str.indexOf("java");
            System.out.println("java第一次现的下标:" + index);                     有就返回下标,没有就返回-1.

    将字符串转为字节数组,或字符数组。

    

         // 将字符串转为字节数组
            byte[] bytes = str.getBytes();
            for (int i = 0; i < bytes.length; i++) {
                System.out.print(bytes[i] + " ");
            }
            System.out.println();
            //将字符串转为字符数组
            char[] ch = str.toCharArray();
            for (int i = 0; i < bytes.length; i++) {
                System.out.print(ch);
            }

    判断2个字符串内容是否相等:

    

     System.out.println("abc".equals("ABC"));      两个字符串直接比较,因为"abc"是对象,可以直接调用方法
          System.out.println("abc".equalsIgnoreCase("ABC"));      忽略大小写比较

三个习题:

    1:获取指定字符串中,大写字母、小写字母、数字的个数:

    package com.oracle.demo01;
    public class Demo01 {
       public static void main(String[] args) {
       String str="javahello,HelloJava123";
       字符串转字符数组
       char[] ch=str.toCharArray();
       定义三个计数器
       int big=0;
       int small=0;
       int number=0;
        //遍历数组
       for(int i=0;i<ch.length;i++){
          //判断是否为大写字母
          if(ch[i]>=65&&ch[i]<=90){
             big++;
           }else if(ch[i]>=97&&ch[i]<=122){
           small++;
           }else if(ch[i]>=48&&ch[i]<=57){
             number++;
          }
        }
       System.out.println("大写字母:"+big);
       System.out.println("小写字母:"+small);
       System.out.println("数字:"+number);
       }

         }

    2:将字符串中,第一个字母转换成大写,其他字母转换成小写,并打印改变后的字符串。

        package com.oracle.demo01;
        public class Zuoye3 {
        public static void main(String[] args) {
        String str="Hello";
        String start=str.substring(0,1);
        String end=str.substring(1);
        String big=end.toUpperCase();
        String small=start.toLowerCase();
        String ss=small+big;
        System.out.println(ss);
        }
     }

     3:查询大字符串中,出现指定小字符串的次数。

      package com.oracle.demo01;
      public class Demo02 {
         public static void main(String[] args) {
            String str = "hellojava,nihaojava,javazhenbang";
            int num=0;
            int index=str.indexOf("java");
            while(index!=-1){
            num++;
               str=str.substring(index+"java".length());
                 index=str.indexOf("java");
            }
            System.out.println(num);
           }
      }

原文地址:https://www.cnblogs.com/maxuefeng/p/13754946.html