- 浏览: 1248635 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (193)
- ant/maven (6)
- algorithm (5)
- tomcat/weblogic/jboss (6)
- javascript/jquery (13)
- java (33)
- flex/flash (0)
- JPA/Hibernate/myBatis (18)
- java concurrent (7)
- test (2)
- windows/linux (6)
- java collection (7)
- design pattern (2)
- life/health (3)
- database (12)
- IDE (4)
- spring/ejb (20)
- html/css/ckeditor (7)
- jsp/servlet (3)
- java io (13)
- java security (4)
- jni (0)
- svn/git (2)
- english (2)
- java jmx (1)
- xml (1)
- struts/springmvc (9)
- middleware (2)
- cache (1)
- cglib (3)
最新评论
-
jlotusYo:
博主,真感谢。
Java 密码扩展无限制权限策略文件 -
senninha:
这个。。是api说明吧。。
ScheduledExecutorService 源码分析 -
zoutao2008:
请问大文件如何处理?按你这种方式的话,文件超过200M时就会报 ...
hessian系列之二:上传文件 -
lwj1113:
lwj1113 写道谢谢博主这么细致的demo;在系列五中通过 ...
myBatis系列之五:与Spring3集成 -
lwj1113:
谢谢博主这么细致的demo;在系列五中通过testng测试类跑 ...
myBatis系列之五:与Spring3集成
1. split()
根据特定字符,把一个字符串分解成n个部分。
有两种形式:
split(regex)调用split(regex, 0)方法
limit控制着分解的次数,所以对结果有影响:
a. 如果limit是正数,分解最多(limit - 1)次
b. 如果limit是负数,分解次数没有限制
c. 如果limit是0,分解次数没有限制,但是会去除结果尾部空的部分
举例:
结果:
arrSplited0: [, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
arrSplitedA: [, 0, 1, 2,3,4,5,6,7,8,9,,]
arrSplitedB: [, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, , ]
arrSplitedC: [, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2. String是一个常量
String是不可被改变的,一旦创建某个String,其它地方只需对它进行引用; 通过new String(String str)方式会创建一个新的String对象:
如果是两个或两个以上的字符串组合,编译器会对它们进行优化,组成一个字符串,效果和上面相同:
但是运行时才知道的String除外:
3. intern()
该方法返回一个字符串对象的内部化引用。
String类维护一个初始为空的字符串的对象池,当intern方法被调用时,如果对象池中已经包含这一个相等的字符串对象则返回对象池中的实例,否则添加字符串到对象池并返回该字符串的引用。
szCanonicalA和szCanonicalB都是常量(szCanonicalB的值会在编译时候被优化)
4. concat()
把指定的字符串附加到当前字符串的末尾。str为null时会产生NullPointerException异常。
和strA + strB相比,strA.concat(strB)一定程度上提升了性能。
5. toString()
如果某Object对象为null,调用toString()会产生NullPointerException异常,可以通过两种方式来避免:
a. 判断:
b. 如果obj为null,强制转化后还是为null,不会产生异常:
6. equals()
比较当前String对象是否和指定的Object对象的String形式内容相同。参数anObject可以为null:
7. equalsIgnoreCase()
和equals()类似,区别是这里不区分大小写:
8. replace系列
例子:
9. matches
java.util.regex.Pattern的matches方法:
根据特定字符,把一个字符串分解成n个部分。
有两种形式:
split(String regex); split(String regex, int limit);
split(regex)调用split(regex, 0)方法
limit控制着分解的次数,所以对结果有影响:
a. 如果limit是正数,分解最多(limit - 1)次
b. 如果limit是负数,分解次数没有限制
c. 如果limit是0,分解次数没有限制,但是会去除结果尾部空的部分
举例:
String szToSplit = ",0,1,2,3,4,5,6,7,8,9,,"; String[] arrSplited0 = szToSplit.split(","); String[] arrSplitedA = szToSplit.split(",", 4); String[] arrSplitedB = szToSplit.split(",", -1); String[] arrSplitedC = szToSplit.split(",", 0);
结果:
arrSplited0: [, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
arrSplitedA: [, 0, 1, 2,3,4,5,6,7,8,9,,]
arrSplitedB: [, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, , ]
arrSplitedC: [, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2. String是一个常量
String是不可被改变的,一旦创建某个String,其它地方只需对它进行引用; 通过new String(String str)方式会创建一个新的String对象:
String heaven1 = "paradise"; String heaven2 = "paradise"; String heaven3 = new String("paradise"); System.out.println(heaven1 == heaven2); // true System.out.println(heaven1 == heaven3); // false
如果是两个或两个以上的字符串组合,编译器会对它们进行优化,组成一个字符串,效果和上面相同:
String heaven4 = "discriminator" + "paradise"; String heaven5 = "discriminator" + "paradise"; System.out.println(heaven4 == heaven5); // true
但是运行时才知道的String除外:
public class StringParadise { private String key; private String value; // Getters and setters are omitted public StringParadise(String key1, String key2, String value) { this.key = key1 + key2; this.value = value; } public static void main(String[] args) { StringParadise test1 = new StringParadise("a", "", "paradise"); StringParadise test2 = new StringParadise("a", "", "heaven"); System.out.println(test1.getKey() == test2.getKey()); // false } }
3. intern()
该方法返回一个字符串对象的内部化引用。
String类维护一个初始为空的字符串的对象池,当intern方法被调用时,如果对象池中已经包含这一个相等的字符串对象则返回对象池中的实例,否则添加字符串到对象池并返回该字符串的引用。
String strCanonicalA = "Hello, Inteference"; String strCanonicalB = new String("Hello, Inteference"); System.out.println(strCanonicalA == strCanonicalB); // false String strInternB = strCanonicalB.intern(); System.out.println(strCanonicalA == strInternB);
szCanonicalA和szCanonicalB都是常量(szCanonicalB的值会在编译时候被优化)
4. concat()
把指定的字符串附加到当前字符串的末尾。str为null时会产生NullPointerException异常。
public String concat(String str) { int otherLen = str.length(); if (otherLen == 0) { return this; } char buf[] = new char[count + otherLen]; // 实例化字符数组 getChars(0, count, buf, 0); // 把当前字符串的字符序列放到数组上 str.getChars(0, otherLen, buf, count); // 把参数字符串的字符序列附加到数组上 return new String(0, count + otherLen, buf); // 构建新的字符串 }
和strA + strB相比,strA.concat(strB)一定程度上提升了性能。
5. toString()
如果某Object对象为null,调用toString()会产生NullPointerException异常,可以通过两种方式来避免:
a. 判断:
Object obj = null; if (obj != null) { String str = obj.toString(); }
b. 如果obj为null,强制转化后还是为null,不会产生异常:
Object obj = null; String str = (String)obj;
6. equals()
比较当前String对象是否和指定的Object对象的String形式内容相同。参数anObject可以为null:
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = count; if (n == anotherString.count) { char v1[] = value; char v2[] = anotherString.value; int i = offset; int j = anotherString.offset; while (n-- != 0) { if (v1[i++] != v2[j++]) return false; } return true; } } return false; }
7. equalsIgnoreCase()
和equals()类似,区别是这里不区分大小写:
public boolean equalsIgnoreCase(String anotherString) { return (this == anotherString) ? true : (anotherString != null) && (anotherString.count == count) && regionMatches(true, 0, anotherString, 0, count); }
8. replace系列
// regex为正则表达式,替换第一个匹配的字符串 // replacement中含有'\'或'$',会当成转义或特殊含义处理而被忽略。 public String replaceFirst(String regex, String replacement) { return Pattern.compile(regex).matcher(this).replaceFirst(replacement); } // 同上,替换所有匹配的字符串 public String replaceAll(String regex, String replacement) { return Pattern.compile(regex).matcher(this).replaceAll(replacement); } // 替换所有匹配的字符序列 // Pattern.LITERAL指定target只是普通字符串,不是正则表达式。 // 因为调用了Matcher的quoteReplacement方法,所以'\'或'$'会当作普通字符处理。 public String replace(CharSequence target, CharSequence replacement) { return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(this).replaceAll(Matcher.quoteReplacement(replacement.toString())); } // 替换所有匹配的字符 public String replace(char oldChar, char newChar) { if (oldChar != newChar) { int len = count; int i = -1; char[] val = value; /* avoid getfield opcode */ int off = offset; /* avoid getfield opcode */ while (++i < len) { if (val[off + i] == oldChar) { // 寻找第1个匹配 break; } } if (i < len) { char buf[] = new char[len]; // 创建字符数组 for (int j = 0 ; j < i ; j++) { buf[j] = val[off+j]; // 拷贝第1个匹配之前的字符 } while (i < len) { // 拷贝第1个匹配(包括)后面的字符 char c = val[off + i]; buf[i] = (c == oldChar) ? newChar : c; // 匹配就替换,反之拷贝 i++; } return new String(0, len, buf); // 转化为字符串 } } return this; }
例子:
String str = "玉立gorgeous_%520"; //str = str.replace('r', '*'); // 玉立go*geous_%520 //str = str.replaceFirst("\\w", "*"); // 玉立*orgeous_%520 //str = str.replaceAll("\\w", "*"); // 玉立*********%*** //str = str.replaceAll("[\\w\u4e00-\u9fa5]", "*"); // ***********%*** //str = str.replaceAll("\\w", "$"); // StringIndexOutOfBoundsException str = str.replace("\r|\n", ""); // 去除回车换行符
9. matches
public boolean matches(String regex) { return Pattern.matches(regex, this); }
java.util.regex.Pattern的matches方法:
public static boolean matches(String regex, CharSequence input) { Pattern p = Pattern.compile(regex); Matcher m = p.matcher(input); return m.matches(); }
发表评论
-
Netty系列之二、Netty组件
2014-10-12 19:55 0Netty主要由以下几个组件构成: Bootstrap o ... -
Netty系列之二:传输方式
2014-09-17 22:35 0NIO (Non-blocking I/O) io.netty ... -
Java正则表达式实例
2014-08-25 22:50 1935题目: 有两个文件context.txt和words ... -
quartz系列之九:存储
2014-08-05 13:16 0这里以1.8.x为例: 任务 ... -
JVM 四种引用
2014-04-24 19:56 17651. 强引用 指通过普通 ... -
Proxy 源码分析
2014-04-21 10:47 0public class Proxy implements ... -
NIO UDP 编程
2014-04-17 23:18 4252和TCP的SocketChannel类似,UDP的Dat ... -
Matcher 源码分析
2014-04-15 14:45 0首先看下接口: public interface Matc ... -
BTrace 使用
2014-03-20 18:03 0简介 Btrace (Byte Trace)是Sun推出的一款 ... -
NIO Socket 编程
2014-04-11 22:48 1661Java NIO (Nonblocking IO)解决了常规I ... -
hessian系列之二:上传文件
2014-02-17 17:16 6222hessian较早版本通过 byte[] 进行文件传输;4.0 ... -
hessian系列之三:与Spring集成
2014-02-17 20:21 17889Spring封装了hessian客户端和服务端的通用代码,把实 ... -
hessian系列之一:Hello world
2014-01-06 20:51 2297Hessian是一个Web Service的轻量级二进制协议, ... -
XStream:自定义转换器
2013-12-30 22:47 0XStream是一款不错的oxm (Object-XML ma ... -
Http连接工具类
2013-12-28 16:13 0public class HttpConnUtil { ... -
Integer源码分析
2013-12-26 19:59 0private static String toU ... -
全排序
2013-12-23 21:02 0写一个函数, 如 foo(String str), 打印出 s ... -
logback系列之四:输出日志到不同文件
2013-12-03 16:25 69001logback系列之一:输出日志到控制台 logback系列之 ... -
Properties 源码分析
2013-11-26 10:32 01. Properties类扩展了Hashtable,用来保存 ... -
logback系列之三:输出日志到文件(滚动)
2013-11-16 23:37 64413logback系列之一:输出日志到控制台 logback系列之 ...
相关推荐
这里我们将深入探讨`String`类的一些重要方法及其在Android开发中的应用。 1. **创建与初始化String对象** - `new String()`: 使用此构造函数创建新的字符串对象。 - `""`: 字符串字面量,如`String str = "Hello...
在Java编程语言中,`String`类是使用最频繁的类之一,它代表不可变的字符序列。这个压缩包文件“TestString”很可能包含了多个示例,用于展示`String`类的各种方法及其用法。下面我们将详细探讨`String`类的一些关键...
String类的常用方法 String类是Java语言中最基本的类之一,用于处理字符串。字符串是一个字符序列,Java中字符串是不可变的,即创建后不能被修改。下面是String类的常用方法: 1. equals()方法:用于判断两个字符...
扩展String功能方法:一直好忙,没有时间写属于自己的东西,但是看着一天天不更新心情也不是个滋味,只有从网上收罗一些比较好的东东贴上。
在Java编程语言中,`String` 类是处理字符串的核心类,它包含了大量的方法,使得对字符串的操作变得简单而高效。本篇文章将详细讲解`String`类的一些常用方法,并通过具体的例子来展示它们的用法。 1. **创建String...
Java String 使用详解是 Java 编程语言中最基础也是最重要的一部分,对于 Java 程序员来说,了解 String 类的使用方法是必不可少的。本文将详细介绍 Java String 的使用方法,包括 String 对象的初始化、字符串的...
它的内部机制与`String`类似,但是提供了`append()`和`insert()`等方法来改变字符串内容,而不会每次都创建新对象。例如: ```java StringBuffer sb = new StringBuffer("Hello"); sb.append(" World"); // 不会...
### 标题解读:“String.split()方法使用总结” 标题明确指出本文将围绕`String.split()`方法的使用进行深入探讨,旨在总结其功能、用法以及一些实践中的注意事项。这表明文章的目标读者是对Java编程有一定了解,...
在C#编程语言中,String类是用于处理文本字符...通过理解和熟练使用这些方法,你可以高效地处理C#中的字符串,提高代码的可读性和性能。在实际开发中,根据需求选择合适的方法组合,可以轻松完成各种复杂的字符串操作。
在本教程中,我们将深入探讨STRING数据库的主要功能、使用方法以及在生物信息学研究中的应用。 STRING数据库的核心功能是提供蛋白质之间的相互作用信息。这些相互作用包括物理相互作用和功能关联,涵盖了多种物种,...
* 使用 `Double.parseDouble()` 方法:`String str = "3.14"; double d = Double.parseDouble(str);` * 使用 `Double.valueOf()` 方法:`String str = "3.14"; double d = Double.valueOf(str).doubleValue();` ...
在用C++操纵字符串的时候,我一直使用很笨的遍历的方法。为此,我问候过很多次C++标准委员会。直到某一天,我做了一个处理绝对路径的题目。 首先,我要把‘/’作为分隔符,把输入字符串split一下。下面是我的代码:...
String类的intern、split方法 String 类的 intern 方法是一个本地方法,定义如下:public native String intern();该方法返回一个字符串对象的内部化引用,由 String 类维护一个初始为空的字符串的对象池,当 ...
在JDK1.5中,String类增加了一个非常有用的静态函数format(String format, Objece... argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是一...
例如,你可以使用.c_str()成员函数将string对象转换为C风格的字符指针,而std::strcpy或std::strncpy可以用来复制C字符串到string对象。 2.2 大小和容量函数 `size()`返回字符串的长度,`length()`与之相同。`...
### C++ `string` 类型的使用总结 在C++编程语言中,`string` 类是一种非常重要的数据结构,用于处理文本数据。本篇总结旨在详细介绍`string` 类的构造方法、常用操作方法及其功能特性。 #### 一、`string` 类对象...
总结了String的常用方法,能让你更好的熟练应用String
Java 中 String 作为方法参数的传递机制详解 在 Java 语言中,String 类型的变量作为方法参数时,表现出了“非对象”的特性。下面将从实现原理的角度上阐述和剖析 String 作为方法参数的传递机制。 一、 String ...
Java String.format 方法使用介绍 Java 中的 String.format 方法是一种功能强大且灵活的字符串格式化工具。它可以将各种类型的数据转换为字符串,并且提供了多种格式化选项以满足不同场景下的需求。 整数格式化 ...
83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中...