资讯专栏INFORMATION COLUMN

浅谈Java字符串(操作)

tylin / 2540人阅读

摘要:由于实现了接口,它支持通过索引值去随机访问元素。第三种,循环遍历。如下效率分析遍历时,使用随机访问即,通过索引序号访问效率最高,而使用迭代器的效率最低类型转换如何实现与基本数据类型的装换将转换为基本的数据类型。

虽是读书笔记,但是如转载请注明出处 http://segmentfault.com/blog/exploring/
.. 拒绝伸手复制党

字符串遍历
String str = "asdfghjkl";

1.

for(int i=0;i

2.

char[] c=str.toCharArray(); 
for(char cc:c){ 
  ...//cc 直接用了
} 

3.

for(int i=0;i


类似的,arraylist 三种遍历方法:

ArrayList 支持 3 种遍历方式

(01) 第一种,通过迭代器遍历。即通过 Iterator 去遍历。

Integer value = null;
Iterator iter = list.iterator();
while (iter.hasNext()) {
    value = (Integer)iter.next();
}
(02) 第二种,随机访问,通过索引值去遍历。
由于 ArrayList 实现了 RandomAccess 接口,它支持通过索引值去随机访问元素。

Integer value = null;
int size = list.size();
for (int i=0; i

效率分析:遍历 ArrayList 时,使用随机访问 (即,通过索引序号访问) 效率最高,而使用迭代器的效率最低!

类型转换 如何实现 String 与基本数据类型的装换

将 String 转换为基本的数据类型。8 个 wrapper class(Integer,Double,...)提供了相对应的方法 parsexxx(String str)将字符串转换为基本的数据类型,如下:

String str1 = "123";
String str2 = "12.3";
String str3 = "true";
int a = Integer.parseInt(str1); //123
double d = Double.parseDouble(str2);    //12.3
boolean flag = Boolean.parseBoolean(str3);  //true
如何将基本数据类型转换为 String,可以使用 String.valueOf()方法进行转换,如下:
int a = 123;
double b = 13.05;
boolean flag = true;
String str1 = String.valueOf(a);    //123
String str2 = String.valueOf(b);    //13.05
String str3 = String.valueOf(flag); //true

同时还有着更为简单快捷的方式,直接在基本数据类型之后添加 “ ”,如下;
String str1 = a +""; //a
String str2 = flag + ""; //true

分割字符串

在 java 里分割字符串是通过正则表达式来分割

String str = "aa-bb-cc-dd";
String[] res = str.split("-");  //aa bb cc dd
取子串
String str = "abcdefg";
str = str.substring(2, 5);  //cde  
一个问题

在一些敏感信息上, 为什么倾向用 char[], 而不是 String?
当 String 一旦创建, 便不可再修改, 直到 gc 将它回收. 可 gc 的回收时间无法预测. 即使一个对象不存在引用, 也需要在未来的某个时间才会让给出回收. 所以 String 操作敏感信息, 有渗漏的风险. 可 char[] 就不一样了, 我们可以通过程序直接控制其元素, 一般敏感信息不再有用, 直接将数组即可, 因此更倾向使用 char[] 来保存密码等敏感信息

想更一进步的支持我,请扫描下方的二维码,你懂的~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64324.html

相关文章

  • Java学习路线总结,搬砖工逆袭Java架构师(全网最强)

    摘要:哪吒社区技能树打卡打卡贴函数式接口简介领域优质创作者哪吒公众号作者架构师奋斗者扫描主页左侧二维码,加入群聊,一起学习一起进步欢迎点赞收藏留言前情提要无意间听到领导们的谈话,现在公司的现状是码农太多,但能独立带队的人太少,简而言之,不缺干 ? 哪吒社区Java技能树打卡 【打卡贴 day2...

    Scorpion 评论0 收藏0
  • 浅谈Java中的同步

    摘要:在多线程的问题上面概念比较多,也需要慢慢理解,其实也在多线程的锁的上面做了很多优化,还有互斥同步和非互斥同步,还有很多概念,什么是自旋和自适应自旋,锁消除顺便提一下,上面的字符串拼接的例子就是用到了这种优化方式,锁粗化,我们下次再继续分享。 在我们平常的开发工作中,或多或少的都能接触到多线程编程或者一些并发问题,随着操作系统和系统硬件的升级,并发编程被越来越多的运用到我们的开发中,我们...

    YacaToy 评论0 收藏0
  • 后端语言选型浅谈

    摘要:再往后来,也就是这种以事件循环常驻内存为特点的后端平台,姑且能算是第四代后端平台。 前不久回答了一个关于后端语言选型的问题,写的回答也让笔者有了很多感触,因此在这里谈论下自己对后端语言选型的心得体会,姑且算是抛砖引玉,希望大家能分享各自的心得。 后端语言发展历史 Web 后端语言的兴起是从静态网页向动态网页的发展所产生的,最早的动态页面技术就是 CGI 技术,将客户端的输入交给 CGI...

    xcc3641 评论0 收藏0
  • 后端语言选型浅谈

    摘要:再往后来,也就是这种以事件循环常驻内存为特点的后端平台,姑且能算是第四代后端平台。 前不久回答了一个关于后端语言选型的问题,写的回答也让笔者有了很多感触,因此在这里谈论下自己对后端语言选型的心得体会,姑且算是抛砖引玉,希望大家能分享各自的心得。 后端语言发展历史 Web 后端语言的兴起是从静态网页向动态网页的发展所产生的,最早的动态页面技术就是 CGI 技术,将客户端的输入交给 CGI...

    alighters 评论0 收藏0
  • 浅谈cas

    摘要:在的包中,大神大量使用此技术,实现了多线程的安全性。我们将变量用修饰,保证线程间的可见性。线程也通过此方法获取当前值,进行操作,比较内存值相等进行修改。我们通过保证了对的并发线程安全,其安全的保证是通过调用的代码实现的。 前言 研究java并发编程有一段时间了, 在并发编程中cas出现的次数极为频繁。cas的英文全名叫做compare and swap,意思很简单就是比较并交换。在jd...

    琛h。 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<