Java初学者:String类

简介: 笔记

一、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);



二、连接字符串


(一)连接字符串的方法


方法一:使用“+”连接


70.png


方法二:使用“concat”连接

71.png

方法三:使用“append”连接

72.png

73.png

运行之后发现后三种方法执行的时间较短,而第一种方法所花费的时间要远远多于后三种方法。


74.png

(二)分析:


1、使用“+”连接字符串时,会调用StringBuilder的append方法,最终调用toString方法转换成字符串。但不足的是,每一趟循环都会创建一个StringBuilder对象,所以就耗费了较多的时间。


2、通过查看concat方法的源代码发现,原理是通过一个数组的拷贝,速度要优于上一种方法,但是最后的return语句返回一个新的String对象,所以每一次循环都会创建一个新的String对象,影响了字符串连接的效率


3、查看append方法的源代码发现,实现原理是字符数组的处理,整个方法实现的过程中没有生成新的对象,只是在最后返回一个toString对象,所以效率最高。



StringBuilder和StringBuffer都拥有append()方法.而二者不同之处在于,在做一次append操作的时候,StringBuffer是线程安全的,因为做append()操作的时候,在方法前增加了synchronized操作。对效率的影响很小。



三、获取字符串信息


(一)获取字符串长度

实现方法:

76.png


输出结果为:size=16


可见length()方法返回的字符串的长度包含字符串中的空格。


(二)字符串查找

String类提供了两种查找字符串的方法,即indexOf()、lastIndexOf()方法。其中indexOf()方法返回的是要搜索的字符(串)首次出现的位置;lastIndexOf()方法返回的是要搜索的字符(串)最后出现的位置,如果没有检索到该字符串,该方法返回-1。



实例:


int index=s1.indexOf('o');


System.out.println("index="+index);


输出结果:index=5



在计算机中String对象是用数组表示的

77.png

(三)获取指定索引位置的字符


String s1="hnu tongxin 1501";


char ch = s1.charAt(4);


System.out.println("s1.charAt(4)="+ch);



输出结果:


s1.charAt(4)=t


说明指定位置处的字符不包含空格



相关文章
|
2月前
|
Java 编译器 API
Java 密封类:精细化控制继承关系
Java 密封类:精细化控制继承关系
274 83
|
8天前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
161 101
|
8天前
|
安全 Java 开发者
Java记录类:简化数据载体的新方式
Java记录类:简化数据载体的新方式
171 100
|
1月前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
296 120
|
3月前
|
IDE Java 数据挖掘
Java 基础类从入门到精通实操指南
这份指南专注于**Java 17+**的新特性和基础类库的现代化用法,涵盖开发环境配置、数据类型增强(如文本块)、字符串与集合处理进阶、异常改进(如密封类)、IO操作及实战案例。通过具体代码示例,如CSV数据分析工具,帮助开发者掌握高效编程技巧。同时提供性能优化建议和常用第三方库推荐,适合从入门到精通的Java学习者。资源链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
182 35
|
4月前
|
存储 安全 Java
【高薪程序员必看】万字长文拆解Java并发编程!(7):不可变类设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中Java不可变类设计指南,废话不多说让我们直接开始。
79 0
|
1月前
|
缓存 安全 Java
Java反射机制:动态操作类与对象
Java反射机制是运行时动态操作类与对象的强大工具,支持获取类信息、动态创建实例、调用方法、访问字段等。它在框架开发、依赖注入、动态代理等方面有广泛应用,但也存在性能开销和安全风险。本文详解反射核心API、实战案例及性能优化策略,助你掌握Java动态编程精髓。
|
1月前
|
存储 安全 Java
Java集合框架(一):List接口及其实现类剖析
本文深入解析Java中List集合的实现原理,涵盖ArrayList的动态数组机制、LinkedList的链表结构、Vector与Stack的线程安全性及其不推荐使用的原因,对比了不同实现的性能与适用场景,帮助开发者根据实际需求选择合适的List实现。
|
2月前
|
自然语言处理 Java Apache
在Java中将String字符串转换为算术表达式并计算
具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
218 14

热门文章

最新文章