zoukankan      html  css  js  c++  java
  • String 的常用操作

    String 类,我可以不负责的说在 Java 中这个类应该是使用最频繁的类了。然而关于它的常用的操作,我却不甚了解。整理这个东西很反人性的,这些方法,你看到他的时候感觉很简单,但是真正用的时候还是不太会,还是会借助网络,今天我就来强行整理一波,不求全,但求精。

    先说说 String 对象的构造器,创建一个字符创可以使用如下方法

    String s = "123";
    
    String s1 = new String("123");
    
    char[] value = {'1','2','3'};
    String s2 = new String(value);
    System.out.println(s2); // 123
    
    char[] value1 = {'0','1','2','3','4'};
    String s3 = new String(value1,1,3); // 从哪里开始,取几位
    System.out.println(s3); //123
    
    StringBuilder sb = new StringBuilder("123");
    String s4 = new String(sb);
    System.out.println(s4); //123

    我就提一下,为什么人家类创建对象都用 new ,而 String 可以直接赋值呢?s 和 s1 的区别到底在哪呢?这样设计的思路还是因为 String 的超高使用频率,为了节省空间,s 的创建过程为在内存中创建一个 “123” 这个 String,然后将引用赋给 s ,如果这个时候还有一条语句 String s5 = “123”,那么 JVM 将不再创建 “123”,而是直接将第一个 “123” 的引用赋给 s5,也就是说 s 和 s5 使用同一块内存,但是使用 new 创建就不一样,不论之前有没有,照样在堆中开辟新的空间 。

    下面就看看常用的方法有那些吧!

    基础篇

    String s = "I don't like JAVA !";
    
    // 返回字符串的长度,注意和数组的length属性的区别呦 !
    int length = s.length(); 
    System.out.println(length); // 19
    
    // 返回某个字符在字符串中的位置,即数组下标
    int position = s.indexOf('!');
    System.out.println(position); // 18
    
    // 返回指定下标的字符
    char charAt = s.charAt(0);
    System.out.println(charAt); // I
    
    // 求子串 参数为下标的起止位置,含前不含后。尾下标可以默认不写
    String substring = s.substring(13, 19);
    System.out.println(substring); // JAVA !
    
    // 将字符串转换为 大写,相应的还有转换为小写 toLowerCase()
    String s1 = s.toUpperCase();
    System.out.println(s1); // I DON'T LIKE JAVA !

    提高篇

    // 字符串的替换,前为旧串,后为新串。
    String s2 = s.replace("don't", "do");
    System.out.println(s2); // I do like JAVA !
    
    // 去除前后空格
    String trim =s.trim();
    System.out.println(trim); // I don't like JAVA !
    
    // 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。
    String format = String.format("请说出真心话: %s", s);
    System.out.println(format); // 请说出真心话: I don't like JAVA !
    
    // 以指定字符串进行分割字符串,得到字符串数组。
    String[] split = s.split(" ");
    for (int i = 0; i < split.length; i++) {
        System.out.print(split[i]); // Idon'tlikeJAVA!
    }
    
    // 将一个字符串转换成字节数组,得到一个系统默认的编码格式的字节数组。
    byte[] bytes = s.getBytes();
    
    // 将一个字符串转换成字符数组 ,返回的数组中是一个个的字符。
    char[] array = s.toCharArray();

    郁闷篇

    不知道你们是怎么样的,我在写代码的时候总是会不自觉地使用 “==” 来比较两个字符串是否相等。虽然我明确的知道这是不对的,我想还是因为我代码写的少… ,所以你们记住了啊,要使用 equals 方法的!给个例子,自己感受感受区别。

    String s3 = "123";
    String s4 = new String("123");
    String s5 = "123";
    System.out.println(s3 == s4); // false
    System.out.println(s3 == s5); // true
    System.out.println(s3.equals(s4)); // true

    最后来看一看基本类型和字符串之间的相互转化。

    String s3 = "123";
    
    int num = Integer.parseInt(s3);
    System.out.println(num); // 123
    
    String string = String.valueOf(num);
    System.out.println(string); // 123

    套路就是想得到基本数据类型,就使用对应包装类调用包装类的 praseXXX() 方法。想得到字符串就使用 String 调用 String 类的静态重载方法 valueOf() 。

  • 相关阅读:
    JavaScript + Table 系列:排序
    asp.net 2.0中傻瓜式使用soap header
    Linq To Sql进阶系列(七)动态查询续及CLR与SQL在某些细节上的差别
    asp.net 2.0 导出DataTable到Excel中
    ASP.NET实用技巧(一)
    【ASP.NET】基础补习之FileUpload
    ASP.NET AJAX入门系列(8):自定义异常处理
    Linq To Sql进阶系列(五)Store Procedure篇
    Linq To Sql进阶系列(六)用object的动态查询与保存log篇
    深究“通过样式表实现固定表头和列”
  • 原文地址:https://www.cnblogs.com/YJK923/p/9479805.html
Copyright © 2011-2022 走看看