Java字符串详解(Java必备知识)

字符串是常量,它们可以显示任何文本信息,字符串的值在创建之后不能更改。在Java中,单引号的内容表示字符,例如: ‘S’,而双引号的内容则表示字符串。例如: “我是小阿giao哈哈”。

String类

在不给字符串变量赋值的情况下,其默认值为null,如果此时调用String的方法,则会发生空指针异常。

三种实例化方式

String a = "时间就是金钱,我的朋友。";		// 直接引用字符串常量
System.out.println("a = " + a);

String b = new String("我爱清汤小肥羊"); // 利用构造方法实例化
String c = new String(b);               // 利用已有字符串变量实例化
System.out.println("b = " + b);
System.out.println("c = " + c);

char[] d = {'t','i','m','e'};
String e = new String(d);               // 利用字符数组实例化
System.out.println("e = " + e);

运行截图:
在这里插入图片描述

提取数组中的一部分创建字符串对象

char[] d = {'t','i','m','e'};
String f = new String(d,2,2);			// 提取字符数组部分内容,从下标为2的元素开始,截取2个字符
System.out.println("f = " + f);

运行截图:
在这里插入图片描述

字符串的链接

链接字符串是比较简单的一种操作字符串的方式,可以连接任意多个字符串,也可以链接其他数据类型的变量或者常量。除了“+”运算符,"+="同样可以实现字符串的连接。

连接字符串

连接其他数据类型

当它们与字符串相连时会自动调用toString()方法,将其转换成字符串,然后参与连接。

提取字符串信息

字符串作为对象,可以通过相应的方法获取其有效信息。

获取字符串长度

长度是按1开始的,一般索引都是从0开始的。

获取指定位置的字符

获取字符串索引位置

判断字符串首尾内容

startsWith()方法和endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。

获取字符数组

toCharArray()方法可以将字符串转换为一个字符数组。

判断字符串是否存在

contains( )方法可以判断字符串是否包含指定内容。

字符串的操作

截取字符串

substring()方法返回一个新字符串,他是此字符串的一个子字符串。从子字符串指定的begin处字符开始,直到所有end-1处的字符串。

字符串替换

replace()方法可以实现指定字符序列替换新的字符序列。

字符串分割

split()方法可根据给定的分隔符对字符串进行拆分。

大小写转换

toUpperCase:按大写输入
toLowerCase:按小写输入

去除空白内容

trim()方法去掉字符串首尾处的空白内容。

比较字符串是否相等

比较字符串对象的内容是否相同,就需要用equals()方法。并且进行比较的字符串不为null,内容相同返回true。

切记比较时候前者不允许为null,否则直接报错,后者可以为null。

注意:以下示例经常面试的时候笔试经常出现!

String str = null;和String str = “”;是两个不同的概念。前者是空对象,没有指向任何引用地址,调用string相关方法都会报空指针,""是一个字符串,分配了内存空间,可以调用String相关方法,只是没有显示而已。

可变字符串StringBuffer类

StringBuffer类是线程安全的可变字符序列,一个类似于String类的字符串缓冲区,两者本质上是一样的,但StringBuffer比String效率快很多。

创建StringBuffer类

创建StringBuffer对象必须用关键字new,而不能像String对象那样直接引用字符串常量。

StringBuffer a = new StringBuffer(); // 创建一个对象,无初始值
StringBuffer b = new StringBuffer("abc"); // 创建一个对象,初始值为abc
StringBuffer c = new StringBuffer(32); // 创建一个对象,初始容量为32

append()方法

append()方法可将任意数据类型的对象转换成字符串,然后追加到此序列中。

setCharAt(int index,char ch)方法

指定索引位置修改字符。

insert(int offset,String str)方法

指定索引位置添加字符。

delete(int start,int end)方法

delete()方法可移除字符串中的字符,从指定索引start开始,一直到索引end-1处。

其他方法

难点解答

字符串与String类

字符串是常量,这句话说得是双引号之内的文字内容是常量,单String声明的变量则是String的对象,也就是说在如下代码中:

String s = "123";

"123"才是真正的常量,而s只是保存字符串内容的变量,s有着所有类对象共有的特点。

StringBuffer与String不同之处

String只能赋值一次,每一次内容发生改变都生成了一个新的对象,然后原有的对象引用新的对象,所以说String本身是不可改变的。每一次改变String字符串内容都是创建新的对象。每次新生成对象会降低虚拟机的工作效率。

而StringBuffer不同,每次都是操作自身对象,而不是新生成对象,其所占用空间会随着字符内容增加而扩充,做大量修改的操作时候,不会因生成大量匿名对象而影响系统性能。

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪 咖@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值