java笔记_String

字符串在java中需要经常处理,而在java中字符串作为String实例来进行处理,字符串处理的好坏,将直接影响到程序的效率。下面总结一些常用的字符串处理方法,已备查用。

创建

String s = new String("abcde");

String连接

String s1 = new String("hello");
String s2 = new String("world");
String s = s1 + " " + s2;
System.out.println(s); // hello world

获取长度

String str = "welcome to http://www.wjqixige.cn";
int size = str.length();

字符串查找

1)indexOf(String s) : 返回指定字符串首次出现的索引位置。

String str = "welcome to http://www.wjqixige.cn";
int size = str.indexOf("c");  // 3

2)lastIndexOf(String s):返回指定字符串最后一次出现的索引位置。

String str = "welcome to http://www.wjqixige.cn";
int size = str.lastIndexOf("c");  // 31

获取指定位置的字符

String str = "welcome to http://www.wjqixige.cn";
char c = str.charAt(6);  // e

获取子字符串

1)substring(int beginIndex):指定索引位置截取到最后

String str = "welcome to http://www.wjqixige.cn";
String subStr = str.substring(11);  // http://www.wjqixige.cn

2)subString(int beginIndex, int endIndex):指定截取的开始和结尾索引位置,含头不含尾

String str = "hello world";
String subStr = str.substring(0,3);  // hel

去除空格

返回去除字符串头部、尾部的空格后的字符串。

String str = "  hello  world  ";
String trimStr = str.trim();
System.out.println(str.length); // 16
System.out.println(trimStr.length); // 12

替换

String str = "wjqixige";
String newStr = str.replace("i","I"); // wjqIxIge

判断字符串开始和结尾

用于判断字符串是否是以指定的内容开始或结束。

1)startsWith(String prefix)

String str = "wjqixige";
boolean b = str.startsWith("wj"); // true
boolean b1 = str.startsWith("qi"); // false

2)endsWith(String suffix)

String str = "wjqixige";
boolean b2 = str.endsWith("ge"); // true
boolean b3 = str.endsWith("xi"); // false

判断是否相等

由于两个存储相同内容的String对象的地址值不同,所以用“==”会返回false。

1)equals()

2)equalsIgnoreCase(): 忽略大小写

String s1 = new String("abc");
String s2 = new String("ABC");
String s3 = new String("abc");
boolean b1 = s1.equals(s2);  // false
boolean b2 = s1.equals(s3); // true
boolwan b3 = s1.equalsIgnoreCase(s2); // true

按字典顺序比较

比较Unicode值,小的在前返回-1,大的在前返回1

String s1 = new String("b");
String s2 = new String("a");
String s2 = new String("c");
int num = s1.compareTo(s2); // 1
int num1 = s1.compareTo(s3); // -1

大小写转换

1)str.toLowerCase():转小写

2)str.toUpperCase():转大写

字符串分割

分割后存放数组,并返回

1) str.split(String sign)

2) split(String sign,int limit):按指定的方式拆分,并限定拆分的次数

String str = "192.168.1.203";
String[] strArr = str.split("\\.",2); // [192] [168.1.203]

时间日期格式化

1)时间格式化

Date date = new Date();
String s = String.format("%te", date); // 2


表14.1 常用的日期格式化转换符

转换符说明举例
%te一个月中的某一天(131)2
%tb月份简称Feb(英文)、二月(中文)
%tB月份全称February(英文)、星期一(中文)
%tA星期几全称Monday(英文)、星期二(中文)
%ta星期几简称Mon、星期一
%tc全部日期和时间信息星期二 四月 02 21:23:03 CST 2019
%tY4位年份2008
%tj一年中的第几天(011366)092
%tm月份04
%td一个月中的第几天(01~31)02
%ty2位年份09

2)日期格式化

表14.2 时间格式化转换符

转换符说明举例
%tH 或 %tk24小时制(0023)21
%tI 或 %tl12小时制(0112)09
%tp上午或下午标记上午、pm
%ts1970-01-01 00:00:00至现在经过的秒数1554212505
%tQ1970-01-01 00:00:00至现在经过的毫秒数1554212521495

3)常见格式化日期时间组合

表5.3 常见的日期和时间组合的格式

转换符说明举例
%tF“年-月-日”格式2019-04-02
%tD“月/日/年”格式03/25/08
%tc全部日期和时间信息星期二 四月 02 21:23:03 CST 2019
%tT“时:分:秒”(24时制)15:23:50
%tR“时:分”(24时制)15:25

字符串生成器

JDK1.5新增。与StringBuffer基本相似,不同在于StringBuffer是线程安全的,StringBuilder没有实现线程安全的功能,性能略高。如需要创建一个内容可变的字符串对象,优先考虑StringBuilder类。

public class Jerque{
    public static void main(String[] args){
        String str = "";
        long starTime = System.currentTimeMillis();
        for(int i=0; i<10000;i++){
            str = str + i; 
        }
        long endTime = System.currentTimeMillis();
        long time = endTime - starTime;
        System.out.println("string消耗时间:" + time);  // 147

        StringBuilder builder = new StringBuilder("");
        starTime = System.currentTimeMillis();
        for(int j=0;j<10000;j++){
            builder.append(j);
        }
        endTime = System.currentTimeMillis();
        time = endTime - starTime;
        System.out.println("stringBuider消耗时间:" + time); // 0
    }
}

StringBuilder()常用方法:

1) appeend()

2) insert(int offset,arg)

3) delete(int start, int end)

参考资料

《java从入门到精通》(第五版) 清华大学出版社

-------------本文结束感谢您的阅读-------------
Mr.wj wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!