String 类的常用方法及其大概实现原理
2016-08-19 11:54
746 查看
Java String类是灰常常用的一个类,但是天天在用,也没管过。
今天就来看看哪些是常用方法,然后了解一下其大概实现
然后希望达到的效果是:
自从看了我的这个字符串类,让你忘了你的她(他)。
关于字符串函数(split、join、indexOf、substring),这些常用的方法可参考下链接;虽然总结的是js的,但是一样的,join是java 1.8d的
字符串函数(split、join、indexOf、substring)
估计看到那么多代码,新手都不想看了,先给个概览图先,如下:
今天就来看看哪些是常用方法,然后了解一下其大概实现
然后希望达到的效果是:
自从看了我的这个字符串类,让你忘了你的她(他)。
关于字符串函数(split、join、indexOf、substring),这些常用的方法可参考下链接;虽然总结的是js的,但是一样的,join是java 1.8d的
字符串函数(split、join、indexOf、substring)
估计看到那么多代码,新手都不想看了,先给个概览图先,如下:
public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** * The value is used for character storage. */ private final char value[]; ... ... ... public int length() { return value.length;//字符串长度就是这么来的,数组的长度。这下带不带括号的问题就明了啦. } public boolean isEmpty() { return value.length == 0; } public char charAt(int index) { if ((index < 0) || (index >= value.length)) { throw new StringIndexOutOfBoundsException(index); } return value[index]; } //"AAA"和"aaa" 走这个方法的返回结果是false public boolean equals(Object anObject) { //内部实现就是,先判断类型,再判断数组长度,相等了再继续 //循环2个数组,逐个比较,不等就返回false,要么最后返回true。 //新手注意:ss.equals("AAA");//ss可能为null。 // "AAA".equals(ss);//正确姿势。 } //"AAA"和"aaa" 走这个方法的返回结果是true public boolean equalsIgnoreCase(String anotherString) { //内部实现判断不等null,长度相等,再继续 //也是循环2个数组,先都转大写,比较之后相等,就继续下次循环 //要是意外不等,再都转小写,再比较,都失败的话,就不等啦。 } //是否以prefix 开头 public boolean startsWith(String prefix, int toffset) { //都是循环数组挨个比较 } public boolean startsWith(String prefix) { return startsWith(prefix, 0); } public boolean endsWith(String suffix) { return startsWith(suffix, value.length - suffix.value.length); } //返回在字符串中的位置,也就是数组的下标 public int indexOf(String str) { return indexOf(str, 0); } public int lastIndexOf(String str) { return lastIndexOf(str, value.length); } //字符串截取 public String substring(int beginIndex) { } //在原字符串后面串联上个str public String concat(String str) { } //替换字符串中的值 oldChar--->newChar public String replace(char oldChar, char newChar) { } //是否包含 s public boolean contains(CharSequence s) { } //将字符串以regex为标志,截取,返回个数组,不含标志位regex public String[] split(String regex) { } //全部转小写 public String toLowerCase() { return toLowerCase(Locale.getDefault()); } //全部转大写 public String toUpperCase() { return toUpperCase(Locale.getDefault()); } //去掉首尾的多余空格 public String trim() { } //static 直接类调用的方法 // 将几个字符串合并成一个返回 public static String join(CharSequence delimiter, CharSequence... elements) { } //Java 1.8 才有的这个方法, //有很多重载(方法名相同,参数列表不同) //参数可以是几个基本数据类型:int,long,float,double,char,boolean, //基本数据类型是没有方法可言的,所以对应的封装类型才有方法,Integer,Long,Float,Double public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } public static String valueOf(long l) { return Long.toString(l); } ... public static String valueOf(char c) { char data[] = {c}; return new String(data, true); } public static String valueOf(boolean b) { return b ? "true" : "false"; } }
//正儿八经的String的equal方法如下:就是挨个比较2个数组的值而已。 public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; }
相关文章推荐
- 【经验总结】C#常用线程同步方法应用场景和实现原理
- 高斯图像滤波原理及其编程离散化实现方法
- iOS-本地推送和远程推送,常用的三方推送和常用的测试方法,推送实现和原理详解
- 161207、高并发:java.util.concurrent.Semaphore实现字符串池及其常用方法介绍
- 高斯图像滤波原理及其编程离散化实现方法
- ARP原理及其实现方法
- Java Scanner类及其常用方法 和String常用方法
- 黑马程序员--Java笔记09--字符串String 及StringBuilder等及其常用方法
- String 常用方法最优算法实现总结 (一)
- String、StringBuffer和StringBuilder区别及其常用方法
- 【经验总结】C#常用线程同“.NET研究”步方法应用场景和实现原理
- 高斯图像滤波原理及其编程离散化实现方法
- 【JS基础回顾】String对象及其常用属性以及方法
- JS教程:String对象及其常用属性以及方法
- java双缓冲原理和实现 消除闪烁的常用方法
- 高斯图像滤波原理及其编程离散化实现方法
- 高斯图像滤波原理及其编程离散化实现方法
- 高斯图像滤波原理及其编程离散化实现方法
- iOS-本地推送和远程推送,常用的三方推送和常用的测试方法,推送实现和原理详解
- Java Collections Framework(JAVA集合框架)中的常用集合及其特点、适用场景、实现原理简介