zoukankan      html  css  js  c++  java
  • 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);
               }
          }

  • 相关阅读:
    面试题:表示数值的字符串
    面试题:两个链表的第一个公共节点
    面试题:构建乘积数组
    面试题:二叉搜索树的第K个节点
    面试题:机器人的运动范围
    面试题:矩阵中的路径
    面试题:删除链表中的重复节点
    面试题:环形链表的入口节点
    python学习笔记——捌 ScoketServer
    python学习笔记——捌 scoket 例子
  • 原文地址:https://www.cnblogs.com/maxuefeng/p/13754946.html
Copyright © 2011-2022 走看看