Java初学者:String类
来源:互联网 发布:cisco查看端口流量 编辑:程序博客网 时间:2024/06/07 07:51
一、String类
在java语言中将字符串作为对象来处理,String类的对象表示由多个字符连接而成的字符串
(一)字符串的声明
String s="abc";
注意声明字符串变量必须经过初始化之后才可以使用
(二)创建字符串
方法一:String(char a[])
char a1[]={'a','b','c'};
String s1=new String(a1);
方法二:String(char a[],int offset,int length)
//offset表示开始截取字符串的位置,length表示截取字符串的长度
方法三:String(char[] value)
char[] a3={'a','b','c','d','e','f'};
String s3=new String(a3);
二、连接字符串
(一)连接字符串的方法
方法一:使用“+”连接
方法二:使用“concat”连接
方法三:使用“append”连接
运行之后发现后三种方法执行的时间较短,而第一种方法所花费的时间要远远多于后三种方法。
+
concat
StringBuffer
StringBuilder
MidOfadd=10709
MidOfconcat=9
MidOfBuffer=8
MidOfBuilder=8
(二)分析:
1、使用“+”连接字符串时,会调用StringBuilder的append方法,最终调用toString方法转换成字符串。但不足的是,每一趟循环都会创建一个StringBuilder对象,所以就耗费了较多的时间。
2、通过查看concat方法的源代码发现,原理是通过一个数组的拷贝,速度要优于上一种方法,但是最后的return语句返回一个新的String对象,所以每一次循环都会创建一个新的String对象,影响了字符串连接的效率
3、查看append方法的源代码发现,实现原理是字符数组的处理,整个方法实现的过程中没有生成新的对象,只是在最后返回一个toString对象,所以效率最高。
StringBuilder和StringBuffer都拥有append()方法.而二者不同之处在于,在做一次append操作的时候,StringBuffer是线程安全的,因为做append()操作的时候,在方法前增加了synchronized操作。对效率的影响很小。
三、获取字符串信息
(一)获取字符串长度
实现方法:
输出结果为:size=16
可见length()方法返回的字符串的长度包含字符串中的空格。
(二)字符串查找
String类提供了两种查找字符串的方法,即indexOf()、lastIndexOf()方法。其中indexOf()方法返回的是要搜索的字符(串)首次出现的位置;lastIndexOf()方法返回的是要搜索的字符(串)最后出现的位置,如果没有检索到该字符串,该方法返回-1。
实例:
int index=s1.indexOf('o');
System.out.println("index="+index);
输出结果:index=5
在计算机中String对象是用数组表示的
(三)获取指定索引位置的字符
String s1="hnu tongxin 1501";
char ch = s1.charAt(4);
System.out.println("s1.charAt(4)="+ch);
输出结果:
s1.charAt(4)=t
说明指定位置处的字符不包含空格
- Java初学者:String类
- 有关初学者对JAVA中的String的认识(1)
- java初学者
- Java初学者
- java初学者
- 初学者java
- java初学者
- java 初学者
- java初学者
- JAVA初学者
- java初学者
- Java初学者
- 【java】:java String类
- JAVA游戏设计核心类(初学者适用)
- 经典的Java数据库连接类(适合初学者)
- Java初学者之接口与抽象类
- java初学者:类与对象 技术文章
- java初学者(四)抽象类
- POI创建excel中的FileUtils.openOutputStream()
- IDEA启动配置列出项目列表
- Android生命周期中的onPause()和onStop()
- java 中 使用冒号 for 循环
- Java之下载word文档
- Java初学者:String类
- Android Material Design初步认识
- 计算机领域国内外刊物
- Python实现进程资源共享
- Intent不能传递超过40K的bitmap
- 韩信点兵算法
- HTML结构与语法
- jni-jobject操作对象
- VideoJS live RTMP stream, player and video size issue