简单了解Java字符串(操作)
作者:SecondLife 发布时间:2022-04-22 18:37:29
标签:java,字符串,操作
字符串遍历
String str = "asdfghjkl";
1.
for(int i=0;i<str.length();i++){
char ch = str.charAt(i);
}
2.
char[] c=str.toCharArray();
for(char cc:c){
...//cc 直接用了
}
3.
for(int i=0;i<str.length();i++){
String subStr = str.substring(i, i+1)
}
类似的,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<size; i++) {
value = (Integer)list.get(i);
}
(03) 第三种,for 循环遍历。如下:
Integer value = null;
for (Integer integ:list) {
value = integ;
}
效率分析:遍历 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://segmentfault.com/a/1190000002646215


猜你喜欢
- 前言最近跟着视频在做一个分布式项目练练手,然后那个老师就说了下freemakker生成静态页面后,然后讲了下思路:添加商品时生成对应的商品静
- 题目描述已知鸡的数量为n只,兔的数量为m只,鸡兔的总头数为H个鸡兔的总脚数为Y只for循环语法for(表达式1;表达式2;表达式3 ){&n
- 这其实是去年校招时我遇到的一道阿里巴巴的笔试题(承认有点久远了-。-),嗯,如果我没记错的话,当时是作为Java方向的一道选做大题。当然题意
- 我们知道HashMap集合是允许存放null值的hashMap是根据key的hashCode来寻找存放位置的,那当key为null时, 怎么
- java获取map中value最大值public static void main(String[] args) throws Interr
- 一、async和await特性的结构1. 异步和同步同步方法:如果一个方法被调用了,等待其执行所有处理后调用方法才继续执行的方法。异步方法:
- 1.导入pom依赖<!-- mybatis-->  
- 本文实例讲述了C#实现winform中RichTextBox在指定光标位置插入图片的方法。分享给大家供大家参考,具体如下://获取RichT
- 在WinForm程序中,实现TextBox文本输入框占位符的方式也很多,最常用的是方式基于Windows Api SendMessage函数
- 前言RxJava 在 GitHub 主页上的自我介绍是 "a library for composing asynchronous
- springboot开启一个监听线程执行任务public class StartApplicationListener implements
- 我就废话不多说了,大家还是直接看代码吧~private LineRenderer line;//画线line = this.gameObje
- 前言本文主要给大家介绍了关于Spring Boot集成之异步调用Async的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细
- 问题在Android开发中,遇到一个问题,是ListView嵌套GridView,需要点击整个ListView的Item进行跳转。但是在点击
- 这篇文章是博主在通过学习Android Studio的同时,实现service项目中用于背景音乐的实现,邮件的发送用于随堂小测的发送邮件功能
- 引言这是一篇基于Socket进行网络编程的入门文章,我对于网络编程的学习并不够深入,这篇文章是对于自己知识的一个巩固,同时希望能为初学的朋友
- MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。spri
- 本文包含3种隐藏顶部状态栏及标题栏和一种隐藏Android 4.0平板底部状态栏的方法,分享给大家供大家参考,具体内容如下方法一public
- 解决Android调用系统分享图片给微信,出现分享失败,分享多文件必须为图片格式近期应公司需求,分享多图片到微信的功能,之前一直是用微信自己
- 本文实例讲述了Java编程实现统计一个字符串中各个字符出现次数的方法。分享给大家供大家参考,具体如下:import java.util.It