共同学习Java源码--常用数据类型--String(十六)
来源:互联网 发布:极速法术升级数据 编辑:程序博客网 时间:2024/05/22 00:37
int len = value.length;
int st = 0;
char[] val = value; /* avoid getfield opcode */
while ((st < len) && (val[st] <= ' ')) {
st++;
}
while ((st < len) && (val[len - 1] <= ' ')) {
len--;
}
return ((st > 0) || (len < value.length)) ? substring(st, len) : this;
}
这个方法非常重要,是去掉前后空格的方法。首先定义变量len,其值为本字符串的长度。定义变量st,其初始值为0,用来记录下标。定义变量val,引用本字符串的value。
进入第一个while循环,判断如果下标一直小于长度,且下标所在的字符元素是空字符,则下标自增。
第二个while循环判断如果下标一直小于长度,且长度减一也就是当前最后一个字符元素是空字符,则长度自减。
最后判断下标是否大于零或长度是否小于原字符串的长度,换句话说就是发生了截取与否,发生了就调用substring方法 ,否则返回原字符串。
public String toString() {
return this;
}
这个方法很简单,就是返回本对象。
public char[] toCharArray() {
// Cannot use Arrays.copyOf because of class initialization order issues
char result[] = new char[value.length];
System.arraycopy(value, 0, result, 0, value.length);
return result;
}
这个方法就是将本对象的value拷贝到一个新的char数组中,完完全全的拷贝。
public static String format(String format, Object... args) {
return new Formatter().format(format, args).toString();
}
这个方法就是将后面的无数量限制的参数按照第一个参数format规定的格式打印出来,很类似c语言的printf方法里的相关实现。举个例子
System.out.printf("年-月-日格式:%tF%n", new Date());就是按照年-月-日格式打印出new Date()
public static String format(Locale l, String format, Object... args) {
return new Formatter(l).format(format, args).toString();
}
这个方法和上面类似,就是需要手动输入locale,而上面的方法则采用默认的locale。
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
这个方法先判断参数是否为空,如果不为空则调用参数的toString方法。
public static String valueOf(char data[]) {
return new String(data);
}
这个方法的参数是一个char数组,将这个char数组传入String的构造方法中,返回一个新的String对象。
public static String valueOf(char data[], int offset, int count) {
return new String(data, offset, count);
}
这个方法和上一个方法类似,只是增加了offset和count参数,将char数组传入String的构造方法中,同时传入offset和count进行截取,最后返回新的String对象。
public static String valueOf(boolean b) {
return b ? "true" : "false";
}
public static String valueOf(char c) {
char data[] = {c};
return new String(data, true);
}
public static String valueOf(int i) {
return Integer.toString(i);
}
public static String valueOf(long l) {
return Long.toString(l);
}
public static String valueOf(float f) {
return Float.toString(f);
}
public static String valueOf(double d) {
return Double.toString(d);
}
这些方法就是将这些数据类型返回成String,不细讲了很简单。
至此,String类讲解完毕
- 共同学习Java源码--常用数据类型--String(十六)
- 共同学习Java源码--常用数据类型--String(一)
- 共同学习Java源码--常用数据类型--String(二)
- 共同学习Java源码--常用数据类型--String(三)
- 共同学习Java源码--常用数据类型--String(四)
- 共同学习Java源码--常用数据类型--String(五)
- 共同学习Java源码--常用数据类型--String(六)
- 共同学习Java源码--常用数据类型--String(七)
- 共同学习Java源码--常用数据类型--String(八)
- 共同学习Java源码--常用数据类型--String(九)
- 共同学习Java源码--常用数据类型--String(十)
- 共同学习Java源码--常用数据类型--String(十一)
- 共同学习Java源码--常用数据类型--String(十二)
- 共同学习Java源码--常用数据类型--String(十三)
- 共同学习Java源码--常用数据类型--String(十四)
- 共同学习Java源码--常用数据类型--String(十五)
- 共同学习Java源代码-数据结构-HashMap(十六)
- 共同学习Java源码--开篇语
- 浅谈内存管理
- 游戏引擎架构选摘之第五章 游戏支持系统
- 入门Android开发--第一行代码--笔记系列(Intent)
- 没事写个冒泡排序
- Windows 系统安装 Apache 服务器
- 共同学习Java源码--常用数据类型--String(十六)
- 【hdu1358】Period——KMP
- java学习笔记(从搭建环境到入门java)
- 一些Java中常用的定义(2)
- 记一次折腾之旅(兼 Classias 安装教程)
- Android API Guides---Toggle Buttons
- Oracle数据库--实用操作(6)触发器
- java枚举使用详解
- 谈谈你对面向对象的理解