Java String类及其常用方法总结(持续更新)

匿名 (未验证) 提交于 2019-12-02 21:53:52

1.了解Java String类:

1.1 String类:

String类代表字符串。Java程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。 字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。 java字符串在内存中采用unicode编码方式,任何一个字符对应两个字节的定长编码,即任何一个字符(无论中文还是英文)都算一个字符长度,占用两个字节。

java.lang.String     java.lang.String类使用了final修饰,不能被继承。 

1.3 String类所有已实现的接口:

Serializable, CharSequence, Comparable<String>

1.4 创建字符串对象的两种方式及区别:

(1)直接赋值创建:     String str="hello";//直接赋值的方式     直接赋值方式创建对象是在方法区的常量池。 (2)构造方法创建:     String str=new String("hello");//实例化的方式     通过构造方法创建字符串对象是在堆内存。
String的构造方法: String()            初始化一个新创建的 String 对象,使其表示一个空字符序列。  String(byte[] bytes)            通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。  String(byte[] bytes, Charset charset)            通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。   String(byte[] bytes, int offset, int length)            通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。  String(byte[] bytes, int offset, int length, Charset charset)            通过使用指定的 charset 解码指定的 byte 子数组,构造一个新的 String。  String(byte[] bytes, int offset, int length, String charsetName)            通过使用指定的字符集解码指定的 byte 子数组,构造一个新的 String。  String(byte[] bytes, String charsetName)            通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。  String(char[] value)            分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。  String(char[] value, int offset, int count)            分配一个新的 String,它包含取自字符数组参数一个子数组的字符。  String(int[] codePoints, int offset, int count)            分配一个新的 String,它包含 Unicode 代码点数组参数一个子数组的字符。  String(String original)            初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。  String(StringBuffer buffer)            分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列。  String(StringBuilder builder)            分配一个新的字符串,它包含字符串生成器参数中当前包含的字符序列。
当我们再一次的new一个String对象时:  

1.5 String是不可变对象:

public final class String     implements java.io.Serializable, Comparable<String>, CharSequence {     /** The value is used for character storage. */     private final char value[];




例2:
public class Immutable {       public static String upcase(String s) {            return s.toUpperCase();       }       public static void main(String[ ] args) {            String str1= "Hello World";            System.out.println(str1);  //Hello World            String str2 = upcase(str1);            System.out.println(str2);  //HELLO WORLD            System.out.println(str1);  //Hello World      } }



例3:





//Hello World !!!



内存分析:

通过以上的分析可以发现:字符串内容的更改,实际上改变的是字符串对象的引用过程,并且会伴随有大量的垃圾出现,在实际开发中应该避免。

1.6 String的相等问题(== 和 equals):

(1)使用String类经常需要对两个字符串进行对比,看是否相等有==和equals两种选择,这两者方法区别很大: 
//fasle ;   
;   //true  ;    temp=1;   //false   
 例4: ;    int temp=1;   //true  
//falseString的intern()方法://+的用法//flase// true (intern的含义)//flase//false//true

1.7 String常量池:

 classpublic static void= "Hello"//不会创建新的String对象,而是使用常量池中已有的"Hello",== str2); ////使用new关键字会创建新的String对象new String("Hello"== str3); //false  

1.8 创建了几个对象的问题:

1 String str1 = "abc"; 2 String str2 = new
2.Java String 类常用方法总结:





易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!