string类的常用方法_java基础知识

string类的常用方法_java基础知识String类算是比较特殊的类型了,作为初学者我们甚至把这个引用类型时不时当成基本类型来用,而且发现,竟然差不多

目录

一、创建字符串的四种方式

1.直接赋值

2.通过构造方法创建对象

3.通过字符数组创建对象

4.通过String类的静态方法valueOf(任意数据类型)->转为字符串

二、字符串比较相等

.equals方法

.equalsIgnoreCase方法

判空处理

三、常量池问题

什么是常量池

常量池中的对象从何而来?

1.直接赋值产生

2.构造方法产生

手工入池:intern方法

例子:

1.

2.

3.

四、字符串的不可变性

 五、修改字符串的内容

1.通过反射破坏value数组的封装

2.使用StringBuilder类或者StringBuffer类

二者的区别

创建方法:

方法使用:

六、字符串的其他常见操作

1.字符串比较

 2.字符与字符串的相互转换

char->String

 String->char

 如何判断一个字符串是由纯数字组成的

3. 字符串和字节的相互转换

String->byte[]

 byte[] ->String

 4.字符串的查找操作

 5.字符串的替换操作

 6.字符串的拆分操作

以括号中的内容进行拆分,可指定拆分最大个数

 当用到特殊字符时,我们可以用\\进行转义处理

 7.字符串的截取操作

 8.字符串的其他常用方法

 写一个方法将字符串的首字母大写


String类算是比较特殊的类型了,作为初学者我们甚至把这个引用类型时不时当成基本类型来用,而且发现,竟然差不多。然而实际呢?我们太年轻,差的真的很多,今天就来详细讲一讲到底差在哪。

一、创建字符串的四种方式

1.直接赋值

直接赋值,在堆中的常量池中创建该字符串对象

String str1 = "HelloWorld";

2.通过构造方法创建对象

在堆中创建对象,并把该对象的拷贝放到常量池中

String str2 = new String("HelloWorld");

3.通过字符数组创建对象

首先创建字符数组,并且通过构造方法传入此数组来创建对象,此对象不入常量池

char[]data=new char[]{'a','b','c'};
String str3 = new String(data);

4.通过String类的静态方法valueOf(任意数据类型)->转为字符串

String str4 = String.valueOf(15);

二、字符串比较相等

字符串比较相等采用String内置的.equals方法

若非要是用等于号(==)则遵循此规律:若引用指向常量池中的对象,则相等;否则因为指向地址不同,均不相等。

.equals方法

正常比较两个字符串的方法

String str1 = new String("Hello");
String str2 = new String("hello");
//        System.out.println(str1==str2);
引用类型比较,用.equals方法
System.out.println(str1.equals(str2));

.equalsIgnoreCase方法

此方法可以忽略字符串的大小写

System.out.println(str1.equalsIgnoreCase(str2));

判空处理

当我们实际应用此方法时,要站在用户的角度考虑,用户什么牛鬼蛇神都会给你输进去,啥都不输也有可能,所以当我们涉及用户输入时,应该把准备好的字符串作为方法的调用者,避免空指针异常

//        //这个变量由用户从浏览器输入
//        String userName = null;
//        System.out.println(userName.equals("小王"));
//        //把给定的字符串放在前面,方便处理userName为空的问题
//        System.out.println("小王".equals(userName));

三、常量池问题

什么是常量池

眼尖的童鞋已经发现了,上面一直在提常量池,啥是个常量池,请看图。

string类的常用方法_java基础知识

 当我们创建一个字符串对象时,它可能会出现在常量池中或者堆中的空间。

常量池中的对象从何而来?

1.直接赋值产生

若此字面量为第一次产生,比如我想引入一个“name”字符串,那么我就直接 String name = “name”;name这个词在之前从未出现过,我就会把此字符串创建并且安放到常量池当中,但若是常量池已经存在过该字符串,那么就不会再创建新的字符串对象,而是直接引用常量池中旧的字符串对象。

2.构造方法产生

当我第一次通过构造方法产生字符串时,会在堆中和常量池中同时产生对象,也就是会产生两个对象,若不是第一次的话照旧在堆中产生新的对象。

手工入池:intern方法

调用intern方法可以将未入常量池的对象入池,并直接引用常量池中的对象。

若调用该方法发现此字符串已经存在于池中了,则返回常量池中的引用。

例子:

1.

该打印结果为true,因为全部为常量池中的同一地址引用

String str1 = "Hello";
String str2 = "Hello";
System.out.println(str1==str2);

2.

该打印结果为false,因为str1.intern() 虽然返回了常量池中的地址,但是没有接收

String str1 = new String("Hello");
str1.intern();
str1 = str1.intern();
String str2 = "Hello";
System.out.println(str1==str2);

3.

 该结果为ture 因为此场景下的intern方法,由于因字符数组产生的字符串是不会入池的,所以会直接将str1的引用入池,并且str1的地址就是常量池的地址。

char[] data = new char[]{'a','b','c'};
String str1 = new String(data);
str1.intern();
String str2 = "abc";
System.out.println(str1==str2);

四、字符串的不可变性

我们通过查找String类型的源代码可以得知,String类型本身是由一个叫做value[ ]的字符数组,存在String类中,而且由final修饰并且封装,不可变,而且也没有相关的getter和setter方法。

string类的常用方法_java基础知识

 五、修改字符串的内容

1.通过反射破坏value数组的封装

这种方法不推荐,目前来说了解即可。

2.使用StringBuilder类或者StringBuffer类

这两种类已经不是String类了

二者的区别

两种类型所包含的方法并无区别,StringBuilder的性能好,适合单线程,而StringBuffer更为安全,适合多线程。

创建方法:

有两种将String转换为StringBuilder类的方式

1.通过构造方法传入字符串

2.通过.append方法传入字符串

        StringBuilder sb = new StringBuilder("hello");
        sb.append("123");

若想转变回String类,则采用toString方法

String str1 = sb.toString();
System.out.println(str1);

方法使用:

1.拼接方法

sb.append("123");

2.反转方法

sb.reverse();

3.插入方法

指在索引index的位置,插入的元素

sb.insert(0,10);

4.删除方法

区域为[start,end)

sb.insert(0,10);

六、字符串的其他常见操作

1.字符串比较

比较是否相同采用.equals方法

.equalsIgnoreCase不区分字符串大小写

String类也实现了comparable接口,可以使用compareTo方法,比较两个字符串的ASCII码值

string类的常用方法_java基础知识

 2.字符与字符串的相互转换

char->String

1.通过构造方法转换

string类的常用方法_java基础知识

2. 也可以转换部分字符数组内容

string类的常用方法_java基础知识

 String->char

1.charAT方法可取出对应位置的字符

string类的常用方法_java基础知识

 2.toCharArray可将字符串转换为字符数组

string类的常用方法_java基础知识

 如何判断一个字符串是由纯数字组成的

直接上图 ,不多解释

string类的常用方法_java基础知识

3. 字符串和字节的相互转换

String->byte[]

byte会将String当前的字符编码转换为字节,且可以设定转码格式

string类的常用方法_java基础知识

 string类的常用方法_java基础知识

  可以设定gbk编码格式string类的常用方法_java基础知识

 byte[] ->String

将字节数组转换为字符串,按照byte中存储的ASCII码值转换为字符串中的字符

string类的常用方法_java基础知识

 4.字符串的查找操作

string类的常用方法_java基础知识

 string类的常用方法_java基础知识

 5.字符串的替换操作

string类的常用方法_java基础知识

 6.字符串的拆分操作

以括号中的内容进行拆分,可指定拆分最大个数

string类的常用方法_java基础知识

 当用到特殊字符时,我们可以用\\进行转义处理

string类的常用方法_java基础知识

 7.字符串的截取操作

如果不规定截取范围,会从指定位置截取到结尾。

或者指定截取范围,左闭右开 

string类的常用方法_java基础知识

 8.字符串的其他常用方法

string类的常用方法_java基础知识

 写一个方法将字符串的首字母大写

利用截取方法和转换大写方法相加即可

string类的常用方法_java基础知识

今天的文章string类的常用方法_java基础知识分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/78462.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注