您的位置 首页 > 数码极客

如何在类里传递字符串 字符串是如何传递的

  • 1.1 String分析

String类的分析

1、String类的底层使用char的数组保存数据

2、String类是一个final类,不允许被集成

3、String类是一个不可变类,该类的对象生成后,内存不会发生变化

4、Sring类中的所有返回String类型对象的成员方法都是返回一个新的String类

  • 1.2 String 比较

1)String类重写了equals方法,用来比较两个字符串的内容是否相同

2)String类的equals方法和==做区分,==比较的是两个字符串对象的地址

String类重写了equals方法,从底层代码分析:

  • 1.3 字符串类实例化机制

java中String类型的创建有以下两种方式:

1、创建的时候,JVM会先在字符串常量池中去查找是否存在该字符串,如果存在直接返回该字符串对象的地址,否则会在常量池中创建该字符串对象并返回地址

//第一种方式

String s1="hello world";

2、创建的时候,也会先查找常量池中是否存在该字符串,如果存在就会在堆里面复制一份这个字符串对象,然后把堆里面的独享地址返回个常量,不存在的话就在堆里和和常量各创建一个对象,并返回堆中对象的地址

//第二种方式

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


//只在常量池中创建了一个对象,

String s1="123";

//在常量池和堆中各创建了一个对象,创建了2个对象

String s2=new String("456");

  • 1.4 字符串的维护和参数传递

1、String类的+和concat都可以将2个字符串拼接到一块,形成新的字符串

2、String的+还可以将字符串和非字符串拼接在一起,成为新的字符串,concat不可以与费字符串拼接在一起


  • 1.5 字符串的常用API方法

String类的常用用法

1、equals方法 用来比较连个字符串内容是否相同

2、charAt方法 返回指定索引处的字符

3、contains方法 判断字符串中是否包含另一个字符串

4、indexOf方法 返回第一次出现某个字符串的位置

5、inEmpty方法 判断字符串是否是空字符串

6、split方法 将字符串分割,返回一个字符串数组

7、trim方法 返回去掉字符串开头和结尾的空格后的字符串

8、toCharArray方法 将字符串转换成字符数组

9、replace方法 替换原字符串中的某个字符或字字符串,全部替换

10、length方法 返回字符串的长度

package level2;

import java.u;

/**

*@author wly

*@version 创建时间:2022-3-1416:44:48

*/

public class Test32 {

public static void main(String[] args) {

String s1=" qunianmailegebiao ";

//charAt方法 返回指定索引处的字符,索引从0开始

Sy(0));

//contains方法 判断字符串中是否包含另一个字符串

Sy("mailege"));

//indexOf方法 返回第一次出现某个字符串的位置,索引为0

Sy("nian"));

//inEmpty方法 判断字符串是否是空字符串

Sy());

//split方法 将字符串分割,返回一个字符串数组

String[] s2=("a");

Sy(s2));

//trim方法 返回去掉字符串开头和结尾的空格后的字符串

Sy(s1);

Sy());

//toCharArray方法 将字符串转换成字符数组

char[] chars=();

Sy(chars));

//replace方法 替换原字符串中的某个字符或字字符串,全部替换

Sy("a", "###"));

//length方法 返回字符串的长度

Sy());

}

}

  • 1.6 StringBuffer类

StringBuffer又称为可变字符序列,它是一个类似于String的字符串缓冲区,可以改变该序列的长度和内容

StringBuffer是同步安全的


String、StringBuffer、StringBuilder的区别

1、String是内容不可变的

2、StringBuffer、StringBuilder都是内容可变的

3、StringBuffer是同步的,数据安全、效率低

4、StringBuilder是不同步的,数据不安全、效率高

  • 1.7 StringBulider类

StringBuilder类也是字符串缓冲区,非同步安全

package level2;

/**

*@author wly

*@version 创建时间:2022-3-1417:28:01

*/

public class Test35 {

StringBuffer sb=new StringBuffer();

StringBuilder sb1=new StringBuilder();

public Test35() {

//创建线程组来管理线程

ThreadGroup group=new ThreadGroup("testgroup");

//创建线程类对象

MyThread at=new MyThread();

//开启1000个线程

for (int i = 0; i < 1000; i++) {

Thread thread=new Thread(group,at,S(i));

();

}

while ()>0) {

try {

T(10);

} catch (Exception e) {

// TODO: handle exception

}

}

Sy());

Sy());

}

class MyThread implements Runnable{

@Override

public void run() {

try {

T(10);

} catch (Exception e) {

// TODO: handle exception

}

("1");

("1");

}

}

public static void main(String[] args) {

new Test35();

}

}

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何在类里传递字符串,字符串是如何传递的,无效类字符串如何解决”边界阅读