JavaString类的常见方法-创新互联

一、String类型的创建
  1. 直接通过String创建的变量不可修改(栈内存)

    成都网站建设、成都做网站介绍好的网站是理念、设计和技术的结合。成都创新互联拥有的网站设计理念、多方位的设计风格、经验丰富的设计团队。提供PC端+手机端网站建设,用营销思维进行网站设计、采用先进技术开源代码、注重用户体验与SEO基础,将技术与创意整合到网站之中,以契合客户的方式做到创意性的视觉化效果。
如果前一个String变量被覆盖了,依然会存在,例如
String s1 = "abc"; Sring s1 = "def"; System.out.println(s1+s2);
这里相当于产生了三个String类型的变量放在栈内存(串池)中
如果在栈内存(串池)中定义重复的String类型变量,系统不会重新
  1. 直接创建String对象 new出来的对象可随意修改(堆内存)

创建方法 : String s = new String(字符串参数);
可以使用多种传入参数构建字符串对象
String s1 = new String("abc");//直接创建字符串 String s2 = new String(char[]);//传入字符数组 String s2 = new String(char[],start,end); //从start开始到end创建字符串对象 String s3 = new String(byte[]);//传入字节数组 String s3 = new String(byte[],start,end); //从start开始到end创建字符串对象


二、String类型的的存储结构
  • $\color{Goldenrod}{直接创建的String变量是创建在串池中的,串池位于栈内存中,栈内存中不允许重复数据}$

  • $\color{Pink}{通过创建的String对象是位于堆内存中的,允许重复,每一个创建的String对象都会新增一个对应的地址,每new一个对象都会出现一个新的地址空间}$

  • $\color{Orange}{一般使用直接创建的String变量,String对象会浪费内存空间}$

三、String类型的比较
  • 直接通过String创建的变量比较可以用 “==” 来比较是否相等

String str1 、 str2;
str1 == str2;
  • String类型的创建对象不能用“==” 比较相等 , 必须调用String类里重写的 equals 方法

str1 = new("str");
str2 = new("str");
str1.equals(str2);


四、String常用方法

1. char charAt( index );

返回String索引处的 char类型

char c = str.charAt(1);

2. int compareTo( str );

根据字典顺序比较两个字符串的大小 只有 -1 0 1 三种返回值

int result = "abcde".compareTo("abcda");
//result =1

返回值

含义

-1

前者小于后者

0

两两相等

1

前者大于后者

3. boolean contains( str );

判断是否包含字符串 str

boolean result = "hello world.java".contains(hello world);  
//result = true

4. boolean endsWith( str );

>判断是否以字符串 str 结尾

startsWith( str )
判断字符串是否以 str 开始
boolean result = "hello world".endsWith("world"); 
//result = true

boolean result = "hello world".startsWith("hello");
//result = true;

5. boolean equals( str );

>判断字符串是否相等

equalsIgnoreCase()
无视大小的写判断字符串是否相等
boolean result = "hello".equals"hello"; 
//result = true

boolean result = "hello".equalsIgnoreCase"hello"; 
//result = true

6. void getChars( begin , end , char[] , 偏移量 );

>复制字符串的 start - end 内容到 给定的数组内

- void getByte ( begin , end , byte[] , 偏移量 ); 同理
String str = new String("hello world");

byte [] bytes; 

str.getBytes( 0, 4, bytes, 0);
//bytes[] =  h e l l o

7. int indexOf( str );

>返回 str 在字符串中第一次出现的索引

String str = new String("hello world");
int index = str.indexOf("el");
//index = 1

8. int lastIndexOf( str );

>返回 str 在字符串中最后一次出现的索引

String str = new String("hello world");
int index = str.lastIndexOf("l");
//index = 9

9. boolean isEmpty( );

>判断字符串是否为空

10. int length( );

>返回字符串长度

warning
  • 字符串的 length 是方法

  • 数组的length 是数组自带的属性

11. String replace( oldStr , newStr );

>将 newStr 替换 oldStr 并返回一个新的String对象

String str = "hello world".replace("hello","hi");
// str = "hi world"
  • replaceAll( oldstr , replacement);

使用正则表达式 replacement 替换所有的 oldstr
  • replaceFirst( oldstr , replacement);

12. String split( str );

>以 str 作为分割线切割字符串

str 可以是 字符串 也可以是 正则表达式
String str = new String("h-e-l-l-o");
str.split("-");
System.out.println(str);
// str = "hello"

13. String substring( start , end );

>从start开始到end结束 左闭右开: [start , end) 切割字符串

不带end 自动切割到最后一个字符
String str = new String("hello world");
str.substring(0,6);
//str = "world"

str.substring(5)
//str = "hello"

14. char[] toCharArray( );

>将字符串转换为 字符数组

String str = new String("hello world");
char[] chars = str.toCharArray();

15. String toLowerCase( );

>所有字符转换成小写

String toUpperCase( );
所有字符转换成大写

16. String trim( );

>去除字符串的前后空白

17.static String valueOf( Object obj );

>将非字String类型转换为String类型

    • Valueof 方法是静态的 直接用 String.valueOf( obj ) 调用

  • valueOf 方法在执行时 会调用传入参数对象的 toSting 方法 , 这时需要 重写参数对象的 toString 方法

class Person{
  public String toString(){
    return "我变成Sting类型对象了";
  }
}

Person p = new Person();
String str = String.valueOf(p);
System.out.println( str ); //自动调用str的toString 方法

1. 直接通过String创建的变量不可修改(栈内存)

>如果前一个String变量被覆盖了,依然会存在,例如

>```java

>String s1 = "abc";

>Sring s1 = "def";

>System.out.println(s1+s2);

>```

>这里相当于产生了三个String类型的变量放在栈内存(串池)中

>如果在栈内存(串池)中定义重复的String类型变量,系统不会重新

2. 直接创建String对象 new出来的对象可随意修改(堆内存)

>创建方法 :*`String s = new String(字符串参数);`*

>可以使用多种传入参数构建字符串对象

>```java

>String s1 = new String("abc");//直接创建字符串

>String s2 = new String(char[]);//传入字符数组

>String s2 = new String(char[],start,end); //从start开始到end创建字符串对象

>String s3 = new String(byte[]);//传入字节数组

>String s3 = new String(byte[],start,end); //从start开始到end创建字符串对象

>```


-------

# 二、String类型的的存储结构

- $\color{Goldenrod}{直接创建的String变量是创建在串池中的,串池位于栈内存中,栈内存中不允许重复数据}$

- $\color{Pink}{通过创建的String对象是位于堆内存中的,允许重复,每一个创建的String对象都会新增一个对应的地址,每new一个对象都会出现一个新的地址空间}$

- $\color{Orange}{一般使用直接创建的String变量,String对象会浪费内存空间}$



# 三、String类型的比较

- 直接通过String创建的变量比较可以用 “==” 来比较是否相等

```java

String str1 、 str2;

str1 == str2;

```

- String类型的创建对象不能用“==” 比较相等 , **必须调用String类里重写的 equals 方法**

```java

str1 = new("str");

str2 = new("str");

str1.equals(str2);

```


------

# 四、String常用方法


## ***1. char charAt( index );***

***返回String索引处的 char类型***

```java

char c = str.charAt(1);

```



## ***2. int compareTo( str );***

***根据字典顺序比较两个字符串的大小 只有 -1 0 1 三种返回值***

```java

int result = "abcde".compareTo("abcda");

//result =1

```


|返回值|含义|

|:---:|:---:|

|-1|前者小于后者|

|0|两两相等|

|1|前者大于后者|


## ***3. boolean contains( str );***

***判断是否包含字符串 str***

```java

boolean result = "hello world.java".contains(hello world);

//result = true

```



## ***4. boolean endsWith( str );***

***>判断是否以字符串 str 结尾***

>- ### ***startsWith( str )***

>

>***判断字符串是否以 str 开始***

```java

boolean result = "hello world".endsWith("world");

//result = true

boolean result = "hello world".startsWith("hello");

//result = true;

```



## ***5. boolean equals( str );***


***>判断字符串是否相等***

>- ### ***equalsIgnoreCase()***

>

>***无视大小的写判断字符串是否相等***

```java

boolean result = "hello".equals"hello";

//result = true

boolean result = "hello".equalsIgnoreCase"hello";

//result = true

```


## ***6. void getChars( begin , end , char[] , 偏移量 );***

***>复制字符串的 start - end 内容到 给定的数组内***

>-***void getByte ( begin , end , byte[] , 偏移量 ); 同理***

```java

String str = new String("hello world");

byte [] bytes;

str.getBytes( 0, 4, bytes, 0);

//bytes[] = h e l l o

```


## ***7. int indexOf( str );***

***>返回 str 在字符串中第一次出现的索引***

```java

String str = new String("hello world");

int index = str.indexOf("el");

//index = 1

```


## ***8. int lastIndexOf( str );***

***>返回 str 在字符串中最后一次出现的索引***

```java

String str = new String("hello world");

int index = str.lastIndexOf("l");

//index = 9

```


## ***9. boolean isEmpty( );***

***>判断字符串是否为空***


## ***10. int length( );***

***>返回字符串长度***

## **warning**

- 字符串的 length 是方法

- 数组的length 是数组自带的属性


## ***11. String replace( oldStr , newStr );***

***>将 newStr 替换 oldStr 并返回一个新的String对象***

```java

String str = "hello world".replace("hello","hi");

// str = "hi world"

```

- ***replaceAll( oldstr , replacement);***

>使用正则表达式 replacement 替换所有的 oldstr

- ***replaceFirst( oldstr , replacement);***


>使用正则表达式 replacement 替换第一个 oldstr


## ***12. String split( str );***

***>以 str 作为分割线切割字符串***

>str 可以是 字符串 也可以是 正则表达式

```java

String str = new String("h-e-l-l-o");

str.split("-");

System.out.println(str);

// str = "hello"

```


## ***13. String substring( start , end );***

***>从start开始到end结束 左闭右开: [start , end) 切割字符串***

>不带end 自动切割到最后一个字符

```java

String str = new String("hello world");

str.substring(0,6);

//str = "world"

str.substring(5)

//str = "hello"

```


## ***14. char[] toCharArray( );***

***>将字符串转换为 字符数组***

```java

String str = new String("hello world");

char[] chars = str.toCharArray();

```


## ***15. String toLowerCase( );***

***>所有字符转换成小写***

>- ***String toUpperCase( );***

>

>***所有字符转换成大写***


## ***16. String trim( );***

***>去除字符串的前后空白***


## ***17.static String valueOf( Object obj );***

***>将非字String类型转换为String类型***

- ### ***Valueof 方法是静态的 直接用 String.valueOf( obj ) 调用***


- **valueOf 方法在执行时 会调用传入参数对象的 toSting 方法 , 这时需要 重写参数对象的 toString 方法**

```java

class Person{

public String toString(){

return "我变成Sting类型对象了";

}

}

Person p = new Person();

String str = String.valueOf(p);

System.out.println( str ); //自动调用str的toString 方法

```

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文标题:JavaString类的常见方法-创新互联
链接地址:http://pwwzsj.com/article/gcdhh.html