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 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
160 57
|
26天前
|
存储 JavaScript Java
Java 中的 String Pool 简介
本文介绍了 Java 中 String 对象及其存储机制 String Pool 的基本概念,包括字符串引用、构造方法中的内存分配、字符串文字与对象的区别、手工引用、垃圾清理、性能优化,以及 Java 9 中的压缩字符串特性。文章详细解析了 String 对象的初始化、内存使用及优化方法,帮助开发者更好地理解和使用 Java 中的字符串。
Java 中的 String Pool 简介
|
12天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
1月前
|
缓存 安全 Java
java 为什么 String 在 java 中是不可变的?
本文探讨了Java中String为何设计为不可变类型,从字符串池的高效利用、哈希码缓存、支持其他对象的安全使用、增强安全性以及线程安全等方面阐述了不可变性的优势。文中还通过具体代码示例解释了这些优点的实际应用。
java 为什么 String 在 java 中是不可变的?
|
2月前
|
JSON Java 关系型数据库
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
118 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
26天前
|
存储 Java
Java 11 的String是如何优化存储的?
本文介绍了Java中字符串存储优化的原理和实现。通过判断字符串是否全为拉丁字符,使用`byte`代替`char`存储,以节省空间。具体实现涉及`compress`和`toBytes`方法,前者用于尝试压缩字符串,后者则按常规方式存储。代码示例展示了如何根据配置决定使用哪种存储方式。
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
65 8
|
2月前
|
Java
在Java中如何将基本数据类型转换为String
在Java中,可使用多种方法将基本数据类型(如int、char等)转换为String:1. 使用String.valueOf()方法;2. 利用+运算符与空字符串连接;3. 对于数字类型,也可使用Integer.toString()等特定类型的方法。这些方法简单高效,适用于不同场景。
63 7
|
2月前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
63 2
|
2月前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
76 17