Java中的字符串由String类描述,并且是静态的,即 在现有行中,您无法更改字符及其数量。除了通过 new 运算符进行标准创建之外,还可以直接从字符串文字创建字符串。同时,为了优化目的,以这种方式创建的对象额外存储在一个单独的区域——字符串池中。
String s1 = "d" // строка будет сохранена в пуле // строка не будет сохранена в пуле // будет уничтожена сборщиком мусора String s2 = new String("a");
将字符串分为静态和动态的优点之一是,它可以提高使用字符串作为参数的安全性(例如,打开数据库、Internet 连接、类加载机制)。
操作+
+ 操作可用于字符串,允许您将多个字符串合并为一个。如果其中一个操作数不是字符串,则会自动转换为字符串。对于对象,toString 方法就是用于此目的。每个操作内部都使用动态 StringBuilder 或 StringBuffer 对象。因此,要将多个字符串组装成一个字符串,最好一次使用一个 StringBuilder/StringBuffer。子串选择
关于 substring 方法有一个注释 - 返回的字符串使用与原始字符串相同的字节数组。例如,您从 1MB 文件中下载了 A 行。他们在那里发现了一些东西,并将其分成单独的 B 行,3 个字符长。B线实际上也占用同样的1MB。String s ="very .... long string from file"; // совместно использует ту же память что и s String sub1 = s.substring(2,4); // этот an object использует отдельный массив на 4 символа String sub2 = new String(s.substring(2,4));
基本方法
- compareTo (String anotherString) - 字符串的词典比较;
- CompareToIgnoreCase (String str) - 字符串的不区分大小写的词典比较;
- RegionMatches (booleanignoreCase, int toffset, String other, int ooffset, int len) - 测试字符串区域的标识,可以指定区分大小写;
- RegionMatches (int toffset, String other, int ooffset, int len) - 测试字符串区域的标识;
- concat (String str) - 返回两个字符串的串联;
- contains (CharSequence s) - 检查指定的字符序列是否包含在字符串中;
- endsWith (String suffix) - 检查字符串是否以指定后缀结尾;
- startsWith (String prefix) - 检查字符串是否以指定的前缀开头;
- startsWith (String prefix, int toffset) - 检查指定位置的字符串是否以指定前缀开头;
- equals (Object anObject) - 检查字符串是否与指定对象相同;
- getBytes ()——返回字符串的字节表示形式;
- getChars (int srcBegin, int srcEnd, char[] dst, int dstBegin) - 返回字符串的一部分的字符表示形式;
- hashCode () - 字符串的哈希码;
- indexOf (int ch) - 搜索字符串中第一次出现的字符;
- indexOf (int ch, int fromIndex) - 从指定位置开始搜索字符串中第一次出现的字符;
- indexOf (String str) - 搜索指定子字符串的第一次出现;
- indexOf (String str, int fromIndex) - 从指定位置搜索指定子字符串的第一次出现;
- lastIndexOf (int ch) - 搜索最后一次出现的符号;
- lastIndexOf (int ch, int fromIndex) - 从指定位置开始搜索最后一次出现的字符;
- lastIndexOf (String str) - 搜索字符串最后一次出现的位置;
- lastIndexOf (String str, int fromIndex) - 从指定位置搜索最后一次出现的字符串;
- Replace (char oldChar, char newChar) - 将字符串中的一个字符替换为另一个字符;
- Replace (CharSequence target, CharSequence replacement) - 将一个子字符串替换为另一个子字符串;
- substring (int beginIndex, int endIndex) - 以字符串形式返回子字符串;
- toLowerCase ()——将字符串转换为小写;
- toLowerCase (Locale locale) - 使用指定的区域设置将字符串转换为小写;
- toUpperCase() - 将字符串转换为大写;
- toUpperCase (Locale locale) - 使用指定的区域设置将字符串转换为大写;
- Trim() - 修剪字符串末尾的空字符;
- valueOf(a) - 用于将各种类型转换为字符串的静态方法。
- matches (String regex) - 字符串是否与指定的正则表达式匹配;
- ReplaceAll (String regex, String rplс) - 将所有出现的满足正则表达式的字符串替换为指定字符串;
- ReplaceFirst (String regex, String rplс) - 用指定字符串替换第一次出现的与正则表达式匹配的字符串;
- split (String regex) - 将字符串拆分为多个部分,拆分的边界是满足正则表达式的字符串的出现次数;
- split (String regex, int limit) - 与前一个类似,但限制是将正则表达式应用于字符串到限制值。如果limit>0,则返回的字符串数组的大小不会超过limit。如果 limit<=0,则正则表达式将无限次应用于字符串。
GO TO FULL VERSION