一、String类
- String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
- 字符串是一个特殊的对象
- 字符串是常量,一旦初始化就不可以被改变
- String str = “abc”;和String str1 = new String(“abc”);的区别在于:
- str==str1----false str.equals(str1)----true
- str在内存中有一个对象“abc”
- str1在内存中有两对象“abc”和new String
- String类重写了Object类中的equals方法,该方法用于判断字符串内容是否相等
- “abc”是一个常量,存放于方法区的常量池
二、常用方法
/** * */ public final class String implements java.io.Serializable, Comparable<String>, CharSequence { private final char value[];//字符数组 private final int offset; private final int count;//length private int hash; private static final long serialVersionUID = -6849794470754667710L; //构造函数 //初始化一个新创建的 String 对象,使其表示一个空字符序列。 public String() { this.offset = 0; this.count = 0; this.value = new char[0]; } //初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。 public String(String original) { int size = original.count; char[] originalValue = original.value; char[] v; if (originalValue.length > size) { int off = original.offset; v = Arrays.copyOfRange(originalValue, off, off+size); } else { v = originalValue; } this.offset = 0; this.count = size; this.value = v; } //分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。 public String(char value[]) { this.offset = 0; this.count = value.length; this.value = StringValue.from(value); } //分配一个新的 String,它包含取自字符数组参数一个子数组的字符。 public String(char value[], int offset, int count) { if (offset < 0) { throw new StringIndexOutOfBoundsException(offset); } if (count < 0) { throw new StringIndexOutOfBoundsException(count); } if (offset > value.length - count) { throw new StringIndexOutOfBoundsException(offset + count); } this.offset = 0; this.count = count; this.value = Arrays.copyOfRange(value, offset, offset+count); } //通过使用指定的字符集解码指定的 byte 子数组,构造一个新的 String。 public String(byte bytes[], int offset, int length, String charsetName)throws UnsupportedEncodingException { if (charsetName == null) throw new NullPointerException("charsetName"); checkBounds(bytes, offset, length); char[] v = StringCoding.decode(charsetName, bytes, offset, length); this.offset = 0; this.count = v.length; this.value = v; } //通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。 public String(byte bytes[], String charsetName)throws UnsupportedEncodingException { this(bytes, 0, bytes.length, charsetName); } public String(byte bytes[], int offset, int length) { } public String(byte bytes[]) { this(bytes, 0, bytes.length); } public String(StringBuffer buffer) { String result = buffer.toString(); this.value = result.value; this.count = result.count; this.offset = result.offset; } public String(StringBuilder builder) { String result = builder.toString(); this.value = result.value; this.count = result.count; this.offset = result.offset; } //获取方法************************************ //1,返回此字符串的长度 public int length() { return count; } //2,返回指定索引处的 char 值 public char charAt(int index) { if ((index < 0) || (index >= count)) { throw new StringIndexOutOfBoundsException(index); } return value[index + offset]; } //3,返回指定字符在此字符串中第一次出现处的索引。 public int indexOf(int ch) { return indexOf(ch, 0); } //4,返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索 public int indexOf(int ch, int fromIndex) { //.... } //5,返回指定子字符串在此字符串中第一次出现处的索引 public int indexOf(String str) //6,返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始 public int indexOf(String str, int fromIndex) //7,返回指定字符在此字符串中最后一次出现处的索引。 public int lastIndexOf(int ch) //8,返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。 public int lastIndexOf(int ch, int fromIndex) //9,返回指定子字符串在此字符串中最右边出现处的索引 public int lastIndexOf(String str) //10,返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。 public int lastIndexOf(String str, int fromIndex) /** *所有查找字符或字符串位置的如果没有,则返回-1 *charAt函数中的index如果超过字符串的长度则会出现字符串角标越界异常IndexOutOfBoundsException是RuntimeException的子类 */ }
{ //判断方法***************************************** //测试此字符串是否以指定的前缀开始。 public boolean startsWith(String prefix) //测试此字符串从指定索引开始的子字符串是否以指定前缀开始。 public boolean startsWith(String prefix, int toffset) //测试此字符串是否以指定的后缀结束。 public boolean endsWith(String suffix) //当且仅当 length() 为 0 时返回 true。 即可以判断字符串是否为空 public boolean isEmpty() //当且仅当此字符串包含指定的 char 值序列时,返回 true。 即可以判断字符串中是否包含指定字符串,也可以用indexOf(String str)来判断 //接口 java.lang.CharSequence //所有已知子接口:Name //所有已知实现类:CharBuffer, Segment, String, StringBuffer, StringBuilder public boolean contains(CharSequence s) //判断两个字符串内容是否相同 public boolean equals(Object anObject) //将此 String 与另一个 String 比较,不考虑大小写 public boolean equalsIgnoreCase(String anotherString) }
{ //转换方法*********** //1,将字符数组,转换成字符串 public String(char[] value) 分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。该字符数组的内容已被复制;后续对字符数组的修改不会影响新创建的字符串-----将字符数组,转换成字符串 public String(char[] value, int offset,int count) //2,将字符数组的一部分,转换成字符串offset是起始位置,count是长度 public static String copyValueOf(char[] data) //3,返回指定数组中表示该字符序列的 String。 public static String copyValueOf(char[] data, int offset, int count) //4,返回指定数组中表示该字符序列的 String public static String valueOf(char[] data,int offset, int count) public static String valueOf(char[] data) //5,将字符串转换成字符数组 public char[] toCharArray() //6,将字节数组转换成字符串 public String(byte[] bytes) public String(byte[] bytes, int offset,int length) //7,将字符串转换成字节数组,使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中 public byte[] getBytes() //8,使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 public byte[] getBytes(String charsetName) //9,将基本数据类型转换成字符串 public static String valueOf(int i)。。。。。 注意:字符串和字节数组在转换过程中,是可以指定编码表的 }
{ //替换方法********************* //返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 public String replace(char oldChar,char newChar) //用新字符串替换原有字符串,如果要替换的部分不存在就返回原字符串 public String replace(CharSequence target,CharSequence replacement) //使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串 public String replaceAll(String regex, String replacement) }
//切割方法******************** //根据给定规则的匹配拆分此字符串。 public String[] split(String regex)
//获取字符串中子串******************* //返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。 public String substring(int beginIndex) //包含头不包含尾 public String substring(int beginIndex,int endIndex)
//转换,去除空格,比较******************* //1,将字符串转换成大写小写 public String toLowerCase()//转成小写 public String toUpperCase()//转成大写 //2,将字符串两端多余的空格去除 public String trim() //3,对两个字符串进行自然顺序的比较 public int compareTo(String anotherString) 大于就返回正数 小于返回负数 等于返回0 //比较时不考虑大小写 public int compareToIgnoreCase(String str)
相关推荐
在Java编程中,`java.lang.NumberFormatException`是一个常见的运行时异常,它通常发生在尝试将一个字符串转换为数值类型(如int、long、float或double)时,但该字符串无法被解析为有效的数值。"For input string: ...
这个错误通常出现在尝试将一个字符串类型(String)的属性值转换为整型(int)时失败的情况。在Spring MVC中,数据绑定是一个关键功能,它允许用户输入的数据与模型对象的属性进行自动映射。当模型中的某个属性期望...
在Java编程语言中,`java.lang.String`是最重要的类之一,它是所有字符串操作的基础。这个类位于核心类库中,因此无需显式导入即可使用。本文将深入探讨`String`类的一些关键知识点,包括它的特性、构造方法、常用...
- `Double`和`Float`类提供了对`double`和`float`类型的包装,它们有构造函数从数值或字符串创建对象,并定义了如`MAX_VALUE`和`MIN_VALUE`这样的常量。 3. **String**: 用来表示不可变的字符序列,是Java中非常...
`String`类是`java.lang`包中的另一个重要组成部分,用于处理字符串。字符串在Java中是不可变的,这意味着一旦创建,就不能改变其内容。`String`类提供了许多操作字符串的方法,如`length()`获取字符串长度,`index...
在 Java 中,将整型变量转换为字符串可以使用以下两种方法: * 使用 `Integer.toString()` 方法:`int i = 42; String str = Integer.toString(i);` * 使用字符串连接操作:`int i = 42; String str = "" + i;` ...
创建String字符串 目录 课程导入 掌握String字符串对象的创建 掌握字符串对象的输入与输出 一般程序需要处理大量文本数据Java语言的文本数据被保存为字符或字符串类型。 若干个字符在计算机里面如何存储? 如何引用...
`String`类提供了大量的方法,用于字符串的操作,如拼接、查找、替换、分割等。`StringBuffer`类则提供线程安全的字符串操作,适用于多线程环境中的字符串构建。 `Character`类处理字符操作,包括判断字符类别、...
"深入研究java.lang.Runtime类" java.lang.Runtime 类是 Java 语言中一个非常重要的类,它提供了访问当前 Java 应用程序的 Runtime 环境的能力。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其...
String类提供了许多操作字符串的方法,如concat()、indexOf()、substring()等,使得字符串的处理变得方便。 Character类提供了处理Unicode字符的工具,包括判断字符类别、获取字符子集等。此外,Character类还定义...
2. **String类**:在`java.lang`包中,`String`类是最常用的数据类型之一,代表不可变的字符序列。它提供了许多操作字符串的方法,如`substring()`(提取子字符串)、`indexOf()`(查找子串首次出现的位置)和`...
`net.sf.json.JSONObject`是开源库Apache Commons Lang中的一个类,它提供了解决Java对象与JSON字符串之间转换的功能。这篇博客文章"net.sf.json.JSONObject实现Object对象与Json字符串的互转"深入探讨了如何使用`...
这些只是Java SE编程入门中关于String类的冰山一角,实际上它还包括更多如字符串的分割、拷贝、查找、替换、格式化等方法。学习这些内容对于理解Java的基础编程和面向对象编程至关重要,同时也为更高级的Java特性,...
Apache Commons Lang 提供了大量静态方法,用于处理字符串,这些方法通常比 JDK 自带的 String 类提供的功能更加强大且灵活。下面是一些 `StringUtils` 类中的核心知识点: 1. **空值检查**:`StringUtils.isEmpty...
1. **字符串操作**: Commons Lang 提供了 `StringUtils` 类,它包含了一系列静态方法,用于执行复杂的字符串操作,如空白字符处理、分割、连接、替换、比较等,这些方法比Java内置的String类功能更加强大。...
7. JSON串与对象的互转:Fastjson还提供了将JSON字符串转换为JSONObject以及将JSONObject转换为JSON字符串的功能。例如: ```java String jsonString = jsonObject.toJSONString(); JSONObject anotherJson = ...
在比较字符串与文字时,如果文字可以是一个字符串或Enum的元素,也可能会抛出java.lang.NullPointerException异常。例如: String str = null; if (str.equals("Test")) { // 这里将抛出java.lang....
首先,Java中的字符串实际上是一个表示`char`值序列的对象,它是由`java.lang.String`类定义的。字符串在内存中的处理非常特别,它们存储在称为“字符串常量池”的区域,这是一个优化内存使用的策略。当使用字符串...
`ProcessBuilder`类的核心是命令列表,这是一个字符串数组,用于指定要执行的外部程序及其参数。例如,如果你想要运行`ls`命令并传入一个参数`-l`,你可以创建`ProcessBuilder`实例如下: ```java ProcessBuilder...