Java字符串使用小结

摘要:

笔者近期在学习Java字符串这一部分的时候,Get到了一些比较新奇的点,准确的说,是和Python相比较而言的,因为笔者第一语言接触的是C和C++,而后便是Python,目前来说较为熟悉的就是这个Python了。所以,在学习Java的时候,会不自觉地联想到之前学过的语言在这一块的用法,而后在小脑袋里简单的对比一下,本篇文章就是对于字符串这一部分的一个小结,不准确的地方还望读者批评指正。


(一)单引号与双引号情结

在学Java字符串这一部分的时候,遇到的第一个比较有意思的就是单双引号的问题。比如下面这串代码,就会报出错误。

String str = 'hello';
System.out.println(str);

如果将上述代码的单引号改为双引号,就正确了。这个现象确实比较有意思,因为在Python里,单双引号都可以包字符串,可能是因为这门语言本就是弱类型语言的缘故,用起来也是贼方便,不用声明类型,即定义即用。但是,现在是Java,现在这种情况原因究竟何在?查了一下,全明白了,简单总结起来就两句话:

  1. 单引号的数据,属于char类型,单引号只能引一个字符(表示单个字符);
  2. 双引号的数据,属于String类型,双引号可以引任意数量字符的字符串(包括0个和1个字符的字符串)

原来Java对于引号还有这么严格的要求,个人感觉,有利有弊吧,一方面使用起来稍微麻烦了些,将字符型和字符串型区分开,意味着有一批的方法二者不能共用(见下方代码),对于编程人员来说,需要费点脑力;另一方面,更精确的定义一般意味着实现更精细的需求,其功能和性能在某种程度上肯定要占优不少。

//对于单引号char类型的大小写转换
System.out.println(Character.toUpperCase('n'));

//对于双引号String类型的大小写转换
System.out.println("hello".toUpperCase());

(二)Java String Buffer与Python Array

在需要对字符串进行修改的时候,就需要用到Java String Buffer和Java String Builder类。两者各有千秋,后者在速度上占据优势,但不是线程安全的;而前者是线程安全的,也就是可以被同步访问。由于现在的机器在计算性能上的表现是比较令人满意的,综合同步性和速度,最终Java String Buffer更胜一筹,目前使用较为广泛。

这两个类实现了一个什么功能呢?很简单,就是可以对原字符串进行修改,这一点是非常方便且非常重要的。具体的使用方法和效果,我们还是贴出代码吧,比较直观。

StringBuffer sBuffer = new StringBuffer("hello");
System.out.println(sBuffer.reverse());  //此处输出:olleh
sBuffer.append(" world.");
System.out.println(sBuffer);  //String Buffer会改变原字符串变量的内容,此处输出:olleh world.
sBuffer.replace(0, 5, "hello");
System.out.println(sBuffer);  //注意,替换字符串的时候,位置是左闭右开的,此处输出:hello world.

看到这个append,笔者又不自觉地联想到了Python中Array的用法(见下方代码)。

### 代码基于Python3
arr = []
print(arr)  # 此处输出:[]
arr.append("hello")
arr.append("world")
print(arr)  # 此处输出:['hello', 'world']

小结:

其实,会用这个,对学习Java String Buffer有着不小的帮助,因为在Python中,Array的append方法也是改变了原数组的内容,这一点和Java有着异曲同工之妙。虽然一个是对字符串,一个是对数组,但并不影响两种语言在思想上的连通性。

小编目前只是博客新人,在校生一名,如果读者对小编写的还比较满意,欢迎关注支持啊!

如果有什么问题,也可以加小编的QQ进行交流,不过,记得在备注里介绍自己哦。(QQ:1329924827)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值