首页 > 编程语言 >关于Java中的String类

关于Java中的String类

时间:2023-05-31 16:35:00浏览次数:47  
标签:字符 Java String 数组 关于 str 字符串 World


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


String str = "Hello" ;

str = str + "World!" ;


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


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


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


关于Java中的String类_字符串



也就是说开始用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,数组,关于,str,字符串,World
From: https://blog.51cto.com/u_16146153/6388090

相关文章

  • JavaScript中的Hook技术:特性、优点、缺点和使用场景
    引言:随着JavaScript的不断发展,开发者们正在寻找更灵活和可扩展的方式来修改或扩展现有的代码。其中一种广泛应用的技术是"Hook",它允许开发者拦截和修改现有的函数或方法的行为。本文将详细介绍JavaScript中的Hook技术,包括其特性、优点、缺点和使用场景,并提供示例代码进行说明。什么......
  • (动力节点)老杜零基础Java笔记-第一章 学前准备
    Java零基础教程视频(零基础学Java必刷,适合Java0基础,Java初学入门)课堂截图为什么使用截图工具在听课的过程中,有的时候老师操作的比较快,通过截图的方式将老师的操作保存下来,以便后期的操作。另外截图之后的图片也可以用于笔记的记录,在笔记当中最好采用图文并茂的方式,这样更加利于......
  • java的包和权限
    注:同一个文件夹下不能有相同的类包的作用:1.区分形同名字的类2.当有很多类时,可以很好的额管理类(如javaAPI文档)3.控制访问范围包的本质:创建不同的文件夹来保存类文件。语法:packagecom.douyin;package是关键字,表示打包com.douyin表示包名。相......
  • Mybatis-plus关于代码生成器的使用
    1、添加依赖 2、在test包下创建一个CodeGet类,实现生成代码的功能。注意:全局配置、数据源配置一定要和自己的电脑配置一致! 3、执行CodeGet类中的main方法。打印台有如下图提示字样,即自动生成成功。 4、对比两张图。在wechat文件夹下有controller、entity、mapper、s......
  • java.lang.ClassCastException: com.alibaba.fastjson2.JSONArray cannot be cast to
    是这样的,今天跟着写springboot项目的时候,前端登录的时候报403错误。检查了半天,是后端的问题报错代码: 第二句报错提示如下 说是JSONArray不能转String,但我这也不是JSONArry转String而是Object转String啊。网上搜了半天,用了好多种方法也没什么用最后索性死马当活马医,让它......
  • Java中的List
    Java中的List有ArrayList和LinkdList,前者底层是数组,后者底层是链表,前者适合遍历查找,后者适合插入删除1.List的add方法有两种情况,第一种就是默认添加,在末尾往List里添加元素,第二种就是指定位置添加内容,原来位置的内容就会向后移动一位。2.List的set方法也有两种情况,第一种就......
  • 思考-关于格物致知,致良知
    问题描述为减少自己的思想内耗,也是为了尽快的闭环自己的价值体系,近期需要大量的写作和重复性的练习强化思考过程。主要问题是还是没能太过于清晰的认知到世故圆滑和直率的分寸,很多人劝我要圆滑,讲究人情世故,说我太过直,不会与他人打交道。我的观点:1.是真的不会与人打交道嘛?自......
  • Java的12种常用注解!
    1.声明bean的注解......
  • Java实战-基于JDK的LRU算法实现、优雅的实现代码耗时统计(Spring AOP、AutoCloseable
    场景Java中基于JDK的LRU算法实现LRU算法-缓存淘汰算法-Leastrecentlyused,最近最少使用算法根据数据的历史访问记录来进行淘汰数据,其核心思想是:如果有数据最近被访问过,那么将来被访问的几率也更高在Java中可以利用LinkedHashMap容器简单实现LRU算法LinkedHashMap底层就是用......
  • java 第七日 吃货联盟系统
    项目需求运用Java开发网上订餐系统,需要实现”我要订餐“、”查看餐袋“、”签收订单“、”删除订单“、”我要点赞“和”退出系统“六个功能。项目覆盖技能点1.程序基本概念----程序、变量、数据类型;2.使用顺序,选择、循环、跳转语句编写程序;3.数组的使用。项目实现思路1.数......