我们知道String声明的字符串是不能被改变的。那么如果我们使用下面的语句:

String str = "Hello" ;

str = str + "World!" ;

你会发现,我们如果输出str,答案是:Hello World!

那么,从表面上看str被改变了,而实际上是这样的:

当我们执行上面的两条语句后,中间的过程用如下图来表示:

也就是说开始用String申请的空间保存的"Hello"在内存中是不变的,在连接“World!”的时候重新申请了空间。最后str重新指向str + "World!"。

可以发现,如果在一个程序中我们大量使用这样的语句将会使程序的效率变得非常低,因为一是在指向新的内存块之前要先断开原来的指向链接,二是这样会产生很多垃圾空间。

String类中的重要API

1.public char[] toCharArray()   将字符串转化为字符数组。

例:char c[] = str.toCharArray();

2.char charAt(int index)  返回字符串中下标为index的字符。

3.将字符数组转化为字符串

例:str1 = new String(c)             把字符数组的全部字符转化为字符串

str2 = new String(c,start,num)   把字符数组的部分字符转化为字符串

4.字符串与Byte数组的转换

byte数组(字节数组),在一般的IO操作中会经常使用到。

byte[] getBytes()  将字符串变为字节数组

5.查找指定的字符是否存在

public int indexOf(String str)    返回的是字符串的位置,如果不存在则返回-1

6.去掉字符串的多余的空格,只能去掉左右两边多余的空格,而中间的不能。 例如:str.trim()

7.字符串截取

例:str.substring(6)   从第七个位置开始截取到结尾。

str.sunstring(0,5)  0为起始位置,5为结束位置的子串。

综合应用:

public class StringAPI {public static void main(String[] args){String str = "HelloWorld!";char c[] = str.toCharArray();   // 把字符串转化为字符数组for(int i=0;i<c.length;i++){System.out.print(c[i]+" ");}System.out.println();String str1 = new String(c);    //把字符数组转化为字符串String str2 = new String(c,0,3);//把字符数组中的从0开始的3个字符转化为字符串System.out.println(str1);System.out.println(str2);System.out.println(str1.charAt(4)); //取出str1中下标为4的字符byte c1[] = str.getBytes();}
}


关于Java中的String类相关推荐

  1. Java中的String类占用多大的内存

    写在前面 对于Java中的String类占用多大的内存空间这个问题,是最近面试中问的比较多的一个问题.很多小伙伴的回答的都不是很正确,有说不占空间的,有说1个字节的,有说2个字节的,有说3个字节的,有 ...

  2. 【JAVA SE】java中的String类

    目录 String类 什么是String类? String类的定义方式 String的内部 如何求字符串长度呢? String类对象的比较 字符串查找 总结charAt 字符串转化 数字与字符串之间的 ...

  3. 搞定Java中的string类

    Copyright©Stonee String类在日常的编程工作中所用甚多,这里就string的常用方法和面试题做些记录和说明 1. 概述 看这么一行代码:String str = "abc ...

  4. 第五章 Java中的String类和StringBuffer(上)

    为什么不从第一章开始记录? 因为,博主最近在刷"蓝桥杯"的算法题,题目中遇到了许多和字符串相关的题目. 比如:要求程序对用户输入的串进行处理.具体规则如下: 1.  把每个单词的首 ...

  5. java中的string类和ArrayList常用方法

    Java中String类和ArrayList集合常用方法 String类常用方法 获取字符串的长度 方法很简单,很多数组都是使用这个方法来遍历数组中的元素,直接上代码: //获取字符串的长度 publ ...

  6. Java中的String类

    首先String对象的内容是不可变的,也就是说,String对象在创建出来以后,其中的内容就不可改变了. 1.int length():这个方法用来返回字符串的长度,` String str=&quo ...

  7. Java中的String类为什么不可变

    1.什么是不可变? java角度来讲就是说成final的. String不可变如下图: 假设给字符串s赋值为abcd,第二次重新赋值为abcdef,这时候并不是在原内存地址上修改数据,而是重新指向一个 ...

  8. Java中,String类字符串拼接 用concat方法 和直接用“+”连接符拼接的区别

    在String类中,字符串拼接既可以使用concat方法,也可以直接用连接符进行连接,那么两者有什么相同点和不同点呢,下面小编带大家通过代码一起来看一下. concat方法的使用:public Str ...

  9. 使用java中的String类操作复杂的字符串

    今天自己出了一道题差点把自己难住-- 题目是这样的: 已知有三条查询的sql语句,小明不小心写一块了,你帮他拆分开.sql语句为:"select * from books where bid ...

最新文章

  1. python多线程的使用(导入线程模块、创建子线程任务、启动子线程任务、获取当前执行的线程号)
  2. Linux 网络子系统之NAPI书签
  3. 程序步骤_小程序平台搭建步骤是什么?
  4. Hibernate 小结
  5. python 计算过程图片_[Python图像处理]九.图像形态学相关运算
  6. Java学习二:Javac Java的学习(原创)
  7. VS开发工具常用插件
  8. android长按非控件处,Android常用之Butterknife使用详解
  9. 工作分析文献综述_学术知识| 如何撰写文献综述
  10. php使用框架优缺点,PHP四大主流框架的优缺点总结(上)
  11. 自动驾驶1-6: 推动决策和行动Driving Decisions and Actions
  12. 2021道路运输企业主要负责人安全考核试题
  13. java绘图-绘制图片
  14. ufs 固态硬盘_东芝首发UFS 3.0闪存:性能媲美高端PC 固态硬盘
  15. hana服务器销售资质,hana认证服务器
  16. 动态代理 ---- 框架基础技术
  17. java npv,NPV,NPVR,PI和IRR存在数量关系。()
  18. dotnet 读 WPF 源代码笔记 WriteableBitmap 的渲染和更新是如何实现
  19. 数据社区推荐—恒有数(UData)
  20. 致我那终将逝去的青春——二十年后再相会

热门文章

  1. @AutoWired具体解释
  2. 用户操作-登录流程分析
  3. Servlet_生命周期方法
  4. 单例设计模式-容器单例
  5. SpringBoot整合 Shiro
  6. redis(11)--AOF持久化
  7. 不同服务器怎么响应ajax,如何从服务器获得响应而无需刷新和使用JQuery/AJAX?
  8. 201124阶段二sqlite3 API
  9. elasticsearch系列五:搜索详解(查询建议介绍、Suggester 介绍)
  10. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU启动那些事(8)- 从Raw NAND启动