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


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



相关文章
|
3天前
|
Java 索引
String字符串常用函数以及示例 JAVA基础
String字符串常用函数以及示例 JAVA基础
|
4天前
|
Java 编译器 ice
【Java开发指南 | 第十五篇】Java Character 类、String 类
【Java开发指南 | 第十五篇】Java Character 类、String 类
24 1
|
2天前
|
自然语言处理 Java API
Java 8的Stream API和Optional类:概念与实战应用
【5月更文挑战第17天】Java 8引入了许多重要的新特性,其中Stream API和Optional类是最引人注目的两个。这些特性不仅简化了集合操作,还提供了更好的方式来处理可能为空的情况,从而提高了代码的健壮性和可读性。
24 7
|
2天前
|
存储 安全 Java
Java中的这些String特性可能需要了解下
Java中的String特性你知道哪些?虽然String很常见,通过源码可以看到String的值传递、字符串表和不可变性。本文基于JDK17说明。
9 1
|
2天前
|
存储 Java
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
|
2天前
|
设计模式 算法 Java
Java的前景如何,好不好自学?,万字Java技术类校招面试题汇总
Java的前景如何,好不好自学?,万字Java技术类校招面试题汇总
|
4天前
|
Java
Java String 避免空指针的方法
Java String 避免空指针的方法
5 0
|
4天前
|
C语言 C++ 容器
C++ string类
C++ string类
9 0
|
4天前
|
安全 Java 开发者
Java一分钟之-文件与目录操作:Path与Files类
【5月更文挑战第13天】Java 7 引入`java.nio.file`包,`Path`和`Files`类提供文件和目录操作。`Path`表示路径,不可变。`Files`包含静态方法,支持创建、删除、读写文件和目录。常见问题包括:忽略异常处理、路径解析错误和权限问题。在使用时,注意异常处理、正确格式化路径和考虑权限,以保证代码稳定和安全。结合具体需求,这些方法将使文件操作更高效。
11 2
|
4天前
|
安全 Java 开发者
Java一分钟之-Optional类:优雅处理null值
【5月更文挑战第13天】Java 8的`Optional`类旨在减少`NullPointerException`,提供优雅的空值处理。本文介绍`Optional`的基本用法、创建、常见操作,以及如何避免错误,如直接调用`get()`、误用`if (optional != null)`检查和过度使用`Optional`。正确使用`Optional`能提高代码可读性和健壮性,建议结合实际场景灵活应用。
21 3