`

6、java.lang.String字符串类

阅读更多

一、String类

 

  1. String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
  2. 字符串是一个特殊的对象
  3. 字符串是常量,一旦初始化就不可以被改变
  4. String str = “abc”;和String str1 = new String(“abc”);的区别在于:
  5. str==str1----false    str.equals(str1)----true
  6. str在内存中有一个对象“abc”
  7. str1在内存中有两对象“abc”和new String
  8. String类重写了Object类中的equals方法,该方法用于判断字符串内容是否相等
  9. “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.lang.NumberFormatException For inputstring 4294967295处理方法

    在Java编程中,`java.lang.NumberFormatException`是一个常见的运行时异常,它通常发生在尝试将一个字符串转换为数值类型(如int、long、float或double)时,但该字符串无法被解析为有效的数值。"For input string: ...

    Springmvc : Failed to convert property value of type 'java.lang.String' to int

    这个错误通常出现在尝试将一个字符串类型(String)的属性值转换为整型(int)时失败的情况。在Spring MVC中,数据绑定是一个关键功能,它允许用户输入的数据与模型对象的属性进行自动映射。当模型中的某个属性期望...

    Java类库复习——java.lang.String

    在Java编程语言中,`java.lang.String`是最重要的类之一,它是所有字符串操作的基础。这个类位于核心类库中,因此无需显式导入即可使用。本文将深入探讨`String`类的一些关键知识点,包括它的特性、构造方法、常用...

    java.lang包介绍

    - `Double`和`Float`类提供了对`double`和`float`类型的包装,它们有构造函数从数值或字符串创建对象,并定义了如`MAX_VALUE`和`MIN_VALUE`这样的常量。 3. **String**: 用来表示不可变的字符序列,是Java中非常...

    java中String类型转换方法.pdf

    在 Java 中,将整型变量转换为字符串可以使用以下两种方法: * 使用 `Integer.toString()` 方法:`int i = 42; String str = Integer.toString(i);` * 使用字符串连接操作:`int i = 42; String str = "" + i;` ...

    Java程序设计基础:创建String字符串.pptx

    创建String字符串 目录 课程导入 掌握String字符串对象的创建 掌握字符串对象的输入与输出 一般程序需要处理大量文本数据Java语言的文本数据被保存为字符或字符串类型。 若干个字符在计算机里面如何存储? 如何引用...

    java.lang包

    `String`类是`java.lang`包中的另一个重要组成部分,用于处理字符串。字符串在Java中是不可变的,这意味着一旦创建,就不能改变其内容。`String`类提供了许多操作字符串的方法,如`length()`获取字符串长度,`index...

    java.lang研究

    `String`类提供了大量的方法,用于字符串的操作,如拼接、查找、替换、分割等。`StringBuffer`类则提供线程安全的字符串操作,适用于多线程环境中的字符串构建。 `Character`类处理字符操作,包括判断字符类别、...

    深入研究java.lang.Runtime类.doc

    "深入研究java.lang.Runtime类" java.lang.Runtime 类是 Java 语言中一个非常重要的类,它提供了访问当前 Java 应用程序的 Runtime 环境的能力。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其...

    java_lang包详解.pdf

    String类提供了许多操作字符串的方法,如concat()、indexOf()、substring()等,使得字符串的处理变得方便。 Character类提供了处理Unicode字符的工具,包括判断字符类别、获取字符子集等。此外,Character类还定义...

    net.sf.json.JSONObject实现Object对象与Json字符串的互转

    `net.sf.json.JSONObject`是开源库Apache Commons Lang中的一个类,它提供了解决Java对象与JSON字符串之间转换的功能。这篇博客文章"net.sf.json.JSONObject实现Object对象与Json字符串的互转"深入探讨了如何使用`...

    北大青鸟Java.lang.rar经典例子

    2. **String类**:在`java.lang`包中,`String`类是最常用的数据类型之一,代表不可变的字符序列。它提供了许多操作字符串的方法,如`substring()`(提取子字符串)、`indexOf()`(查找子串首次出现的位置)和`...

    Java SE编程入门教程 String字符串(共27页).pptx

    这些只是Java SE编程入门中关于String类的冰山一角,实际上它还包括更多如字符串的分割、拷贝、查找、替换、格式化等方法。学习这些内容对于理解Java的基础编程和面向对象编程至关重要,同时也为更高级的Java特性,...

    org.apache.commons.lang3.StringUtils.jar.rar

    Apache Commons Lang 提供了大量静态方法,用于处理字符串,这些方法通常比 JDK 自带的 String 类提供的功能更加强大且灵活。下面是一些 `StringUtils` 类中的核心知识点: 1. **空值检查**:`StringUtils.isEmpty...

    java.lang.NullPointerException出现的几种原因及解决方案

    在比较字符串与文字时,如果文字可以是一个字符串或Enum的元素,也可能会抛出java.lang.NullPointerException异常。例如: String str = null; if (str.equals("Test")) { // 这里将抛出java.lang....

    【Java编程教程】详解Java String字符串.pdf

    首先,Java中的字符串实际上是一个表示`char`值序列的对象,它是由`java.lang.String`类定义的。字符串在内存中的处理非常特别,它们存储在称为“字符串常量池”的区域,这是一个优化内存使用的策略。当使用字符串...

    org.apache.commons.lang jar下载

    1. **字符串操作**: Commons Lang 提供了 `StringUtils` 类,它包含了一系列静态方法,用于执行复杂的字符串操作,如空白字符处理、分割、连接、替换、比较等,这些方法比Java内置的String类功能更加强大。...

    深入研究java.lang.ProcessBuilder类.doc

    `ProcessBuilder`类的核心是命令列表,这是一个字符串数组,用于指定要执行的外部程序及其参数。例如,如果你想要运行`ls`命令并传入一个参数`-l`,你可以创建`ProcessBuilder`实例如下: ```java ProcessBuilder...

    JBuider第六章:Java.lang包.rar

    1. **基础类和接口**:Java.lang包中的基础类包括`Object`、`String`、`Integer`、`Boolean`等,它们构成了Java类层次结构的基础。`Object`类是所有Java类的父类,包含了所有对象通用的方法,如`equals()`、`...

Global site tag (gtag.js) - Google Analytics