重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
直接通过String创建的变量不可修改(栈内存)
成都网站建设、成都做网站介绍好的网站是理念、设计和技术的结合。成都创新互联拥有的网站设计理念、多方位的设计风格、经验丰富的设计团队。提供PC端+手机端网站建设,用营销思维进行网站设计、采用先进技术开源代码、注重用户体验与SEO基础,将技术与创意整合到网站之中,以契合客户的方式做到创意性的视觉化效果。如果前一个String变量被覆盖了,依然会存在,例如
String s1 = "abc"; Sring s1 = "def"; System.out.println(s1+s2);
这里相当于产生了三个String类型的变量放在栈内存(串池)中
如果在栈内存(串池)中定义重复的String类型变量,系统不会重新
直接创建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创建字符串对象
$\color{Goldenrod}{直接创建的String变量是创建在串池中的,串池位于栈内存中,栈内存中不允许重复数据}$
$\color{Pink}{通过创建的String对象是位于堆内存中的,允许重复,每一个创建的String对象都会新增一个对应的地址,每new一个对象都会出现一个新的地址空间}$
$\color{Orange}{一般使用直接创建的String变量,String对象会浪费内存空间}$
直接通过String创建的变量比较可以用 “==” 来比较是否相等
String str1 、 str2;
str1 == str2;
String类型的创建对象不能用“==” 比较相等 , 必须调用String类里重写的 equals 方法
str1 = new("str");
str2 = new("str");
str1.equals(str2);
返回String索引处的 char类型
char c = str.charAt(1);
2. int compareTo( str );根据字典顺序比较两个字符串的大小 只有 -1 0 1 三种返回值
int result = "abcde".compareTo("abcda");
//result =1
返回值 | 含义 |
-1 | 前者小于后者 |
0 | 两两相等 |
1 | 前者大于后者 |
判断是否包含字符串 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 是数组自带的属性
>将 newStr 替换 oldStr 并返回一个新的String对象
String str = "hello world".replace("hello","hi");
// str = "hi world"
replaceAll( oldstr , replacement);
使用正则表达式 replacement 替换所有的 oldstr
replaceFirst( oldstr , replacement);
>以 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 方法在执行时 会调用传入参数对象的 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元起,快前往官网查看详情吧