10.String类

String类

  • 字符串是常量,创建之后不可改变。

  • 字符串字面值存储在字符串池中,可以共享。

  • String s = "Hello";// 产生一个对象,字符串池中存储。
    String s = new String("Hello"); // 产生两个对象,堆、池各存储一个。
    
    package String;
    
    public class Test01 {
        public static void main(String[] args) {
            String name = "Hello";// “Hello”常量存储在字符串常量池中
            name = "zhangsan";// 把“zhangsan”赋值给name,给字符串赋值时,并没有修改数据,而是重新开辟空间。
            String name2 = "zhangsan";
           // 字符串的另一种创建方式
            String str = new String("java");// 创建了两个对象
            String str1 = new String("java");// 创建了两个对象
            System.out.println(str == str1);// 输出false
            System.out.println(str.equals(str1));// 比较的是数据,输出true
    
        }
    }
    

    常用方法

    • public int length(); // 返回字符串的长度。
      
    • public char charAt(int index);// 根据下标获取字符
      
    • public boolean contains(String str);// 判断当前字符串中是否包含str。
      
      • package String;
        
        public class Test01 {
            public static void main(String[] args) {
                    String content = "java好";
                System.out.println(content.length());// 结果为:5
                System.out.println(content.charAt(3));// 结果为:a
                System.out.println(content.contains("java"));// 结果为:true
                System.out.println(content.contains("php"));// 结果为:false
        
            }
        }
        
    • public char[] toCharArray();// 将字符串转换为数组
      
    • public int indexOf(String str);//查找str首次出现的下标,存在,则返回该下标;不存在,则返回—1.
      
    • public int lastIndexOf(String str);// 查找字符串中最后一次出现的下标索引。
      
      • package String;
        
        import java.util.Arrays;
        
        public class Test01 {
            public static void main(String[] args) {
                String content = "java好啊!,java真香";
                        // 字符串方法的使用
                //4.toCharArray();// 将字符串转换为数组
                //5.indexOf(); 返回子字符串中首次出现的位置
                //6.lastIndexOf();返回字符串最后一次出现的位置
                System.out.println(Arrays.toString(content.toCharArray()));
                System.out.println(content.indexOf("java",4));
                System.out.println(content.lastIndexOf("java"));
            }
        }
        
    • public String trim();// 去掉字符串前后的空格
      
    • public String toUpperCase();// 将小写转成大写。
      
    • public boolean endWith(String str);// 判断字符串是否以str结尾
      
      package String;
      
      import java.util.Arrays;
      
      public class Test01 {
          public static void main(String[] args) {
                  //7.trim();去掉字符串前后的空格
              //8.toUpperCase();把小写转成大写,//toLowerCase();把大写转成小写
              //9.endWith(str);判断是否以str结尾,startWith(str);判断是否以str开头
      
              String content2 = "   Hello World   ";
              System.out.println(content2.trim());// 输出结果为:Hello World
              System.out.println(content2.toUpperCase());//输出结果为:   HELLO WORLD
              System.out.println(content2.toLowerCase());//输出结果为:   hello world
              String filename = "hello.java";
              System.out.println(filename.endsWith(".java"));//输出结果为:true
              System.out.println(filename.startsWith("hello"));//输出结果为:true
          }
      }
      

    案例演示

    • 需求:

      • 已知:

        String str = "this is a text";
        
        1. 将str中的单词提取出来
        2. 将str中的text替换为practice
        3. 在text前面插入一个easy
        4. 将每个单词的首字母改为大写
      • package String;
        
        public class Case {
            public static void main(String[] args) {
                String str = "this is a text";
                //1.将str中的单词提取出来
                String[] arr = str.split(" ");
        //        for (int i = 0; i <arr.length ; i++) {
        //            System.out.println(arr[i]);
        //        }
                // 遍 历
                for (String s : arr) {
                    System.out.println(s);
                }
        
                //2.将str中的text替换为practice
                String str2 = str.replace("text","pratice");
                System.out.println(str2);
        
                // 3.在text前面插入一个easy
                String str3 = str.replace("text","easy text");
                System.out.println(str3);
        
                // 4.将每个单词的首字母改为大写
                for (int i = 0; i <arr.length ; i++) {
                    char first = arr[i].charAt(0);
                    // 把第一个字符转成大写
                    char upperfirst = Character.toUpperCase(first);
                    String news = upperfirst+arr[i].substring(1);
                    System.out.println(news);
                }
            }
        }
        

    可变字符串

    • StringBuffer:可变长字符串,JDK1.0提供,运行效率缓慢、线程安全。

    • StringBuilder:可变长字符串,JDK5.0提供,运行效率快、线程不安全。

    • package String;
      
      /*
      StringBuffer和StringBuilder的使用
      与String区别:1.效率比String高 2.比String节省内存
       */
      public class Test02 {
          public static void main(String[] args) {
              StringBuffer sb = new StringBuffer();
              //1.append();追 加
              sb.append("Java世界第一");
              System.out.println(sb.toString());//ava世界第一
              sb.append("java真香");
              System.out.println(sb.toString());//Java世界第一java真香
              sb.append("java真不错");
              System.out.println(sb.toString());//Java世界第一java真香ava真不错
              // 2.insert(); 添加
              sb.insert(0,"我在最前面");
              System.out.println(sb.toString());//我在最前面Java世界第一java真香java真不错
              //3.replace();//能指定位置的替换
              sb.replace(0,5,"Hello");
              System.out.println(sb.toString());//HelloJava世界第一java真香java真不错
              //4.delete(); 删除
              sb.delete(0,5);
              System.out.println(sb.toString());//Java世界第一java真香java真不错
              // 清空
              sb.delete(3,sb.length());
              System.out.println(sb.toString());//jav
              sb.delete(0,sb.length());//清空
              System.out.println(sb.toString());
          }
      }
      
      

    案例:

    package String;
    
    /*
    验证StringBuilder效率高于String
     */
    public class Test03 {
        public static void main(String[] args) {
        // 开始时间
            long start = System.currentTimeMillis();
    //        String string = "";
    //        for(int i = 0;i<99999;i++) {
    //            string += i;
    //        }
    //        System.out.println(string);
    //        long end = System.currentTimeMillis();
    //        System.out.println("用时:"+(end-start));//String 用时4964
    //
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i <99999 ; i++) {
                sb.append(i);
            }
            System.out.println(sb.toString());
            long end = System.currentTimeMillis();
            System.out.println("用时:"+(end-start));//StringBuilder用时53
    
        }
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值