Java学习笔记——字符串

2023-09-21 16:19:25

字符串(String)是用一对双引号括起来的零个或多个字符组成的有限序列。在Java中,字符串被当作对象/类来处理。

程序中需要用到的字符串可以分为:
String类:不可变字符串类,如果修改系统会自动创建新的对象;
StringBuffer类:可变字符串类,多线程;
StringBuilder类:可变字符串类,单线程;
串的两种最基本的存储方式是顺序存储方式和链接存储方式

String类字符串

字符串变量必须赋值后才可以使用,这称为字符串对象初始化。
字符串的创建和赋值的方式有三种:

String 字符串变量名;
字符串变量名="字符串常量";
String username="";
username="Tom"
 
或者
 
String 字符串变量名="字符串常量";
String SayHello="Hello world";
 
或者
 
String studentName=new String("周杰杰");
String对象的创建:

1、利用构造器:

String s=new String("Hello world");

2、直接创建:

String s="Hello world";

对字符串的操作函数或方法:

获取字符串的长度

length()方法是用来获取字符串长度的。它会返回字符串对象中所包含的字符的个数,例如:

public class myfirst {
	public static void main(String[] args) {
		String sayHello="Hello,Welcome to Java!!!";  //创建一个sayHello字符串并赋值
		int length=sayHello.length();                   //创建一个变量length存放所获取的字符串长度
		System.out.println(length);
	}
}

字符串连接

1. concat()函数

str1.concat(str2);

concat()方法返回一个字符串,是将字符串str2添加到str1后面之后形成新字符串,例如:

public class myfirst {
	public static void main(String[] args) {
		String sayHello1="Hello,";        //创建字符串sayHello1、sayHello2并赋值
		String sayHello2="Welcome to Java!!!";
		String sayHello3=sayHello1.concat(sayHello2);   //将合并后的字符串赋值给sayHello3
		System.out.println(sayHello3);
	}
}

运行结果为:Hello,Welcome to Java!!!

也可以直接使用字符串常量来调用concat()方法。例如:

String sayHello3="Hello,".concat("welcome to Java!!!")

2. 加号'+'运算符

连接字符串还可以使用加号“+”运算符。这是一个重载了的运算符,用来直观地连接两个字符串,它使用起来比concat()方法更加灵活。例如:

String 字符串3=字符串1+字符串2;

注意:

当表达式中包含多个加号,并且存在各种数据类型参与运算时,则按照加号运算符从左到右进行运算;

Java会根据加号运算符两边的操作数类型来决定是进行算术运算还是字符串连接的运算。

字符串比较

比较两个字符串是否相等

equals()方法:比较两个字符串是否相等,返回值boolean值;
equalsIgnoreCase()方法:同样返回值为boolean值;

字符串1.equals(字符串2);            //严格比较字符串是否相同
字符串1.equalsIgnoreCase(字符串2);  //忽略字母大小写来进行比较
public class myfirst {
	public static void main(String[] args) {
		String sayHello1="HELLO";          //创建两个字符串
		String sayHello2="hello";
		System.out.println(sayHello1.equals(sayHello2));  //使用equals方法进行严格比较
		System.out.println(sayHello1.equalsIgnoreCase(sayHello2));  //使用equalsIgnoreCase方法忽略大小写进行比较
	}
}


运行结果:

false
true

截取字符串:

  • str1.substring(int index):提取从位置索引开始的字符串部分
  • str2.substring(int beginindex, int endindex):提取beginindex到endindex-1为止的字符串部分
    public class myfirst {
    	public static void main(String[] args) {
    		String s1="abcdefg";
            #截取开始位置为3的字符串
    		System.out.println(s1.substring(3));       
            #截取开始索引为2,结束索引为5但不包含5的字符串
    		System.out.println(s1.substring(2, 5));    
    
    	}
    }
    
    运行结果:
    defg
    cde

返回指定索引处的字符:charAt()

charAt函数返回只包含一个字符的字符串,而不是一个字符本身。如果给定index超出字符串范围,则返回一个空字符串

如果需要直接输出字符串中的字符,如输出字符串s2中的字符,仅需将变量类型定义为char型

StringBuilder类字符串

StringBuilder和String的转换

String转StringBuilder

String a = new String("123");
StringBuilder s = new StringBuilder(a);

StringBuilder转String

String s2 = s.toString(s);

StringBuilder常用函数接口

1.字符串拼接 append()

StringBuilder s = new StringBuilder("hzy ");
//直接调用append();
s.append("aaa ");
//也可以如下拼接
s.append("bbb ").append("ccc ");

System.out.println(s);


运行结果:
hzy aaa bbb ccc

更多推荐

第一百五十回 自定义组件综合实例:游戏摇杆一

文章目录概念介绍实现方法示例代码我们在上一章回中介绍了自定义组件相关的内容,本章回中将综合使用这些内容自定义游戏摇杆组件.闲话休提,让我们一起TalkFlutter吧。概念介绍我们介绍的游戏摇杆就是一个内层的小圆嵌套一个外层的大圆,大圆的位置不变,小圆只能在大圆所在的范围进行移动,它移动的角度是360度,因此在游戏中使

LeetCode算法心得——连续数组(前缀和+HashMap)

大家好,我是晴天学长,公式的巧妙化简加上hashmap的灵活应用,需要的小伙伴可以关注支持一下哦!后续会继续更新的。1).连续数组给定一个二进制数组nums,找到含有相同数量的0和1的最长连续子数组,并返回该子数组的长度。示例1:输入:nums=[0,1]输出:2说明:[0,1]是具有相同数量0和1的最长连续子数组。示

C语言程序设计(第五版)书上习题及课后习题与答案汇总(只涉及程序编写部分)--持续更新

课后例题推荐B站视频:https://www.bilibili.com/video/BV1ih411y7gN第一章程序设计和C语言书上例题1.求两个整数之和#include<stdio.h>intmain(){inta,b,sum;a=123;b=456;sum=a+b;printf("sumis%d\n",sum);

[python 刷题] 242 Valid Anagram

[python刷题]242ValidAnagram题目:Giventwostringssandt,returntrueiftisananagramofs,andfalseotherwise.AnAnagramisawordorphraseformedbyrearrangingthelettersofadifferent

探索智能应用的基石:多模态大模型赋能文档图像处理

目录0写在前面1文档图像分析新重点2token荒:电子文档助力大模型3大模型赋能智能文档分析4文档图像大模型应用可能性4.1专有大模型4.2多模态模型4.3设计思路总结0写在前面中国智能产业高峰论坛(CIIS@2023)旨在为政企研学各界学者专家提供同台交流的机会,在成果分享、观点碰撞、经验互鉴中,共促智能科技引领行业

appium默认60秒关闭应用的问题

【软件测试行业现状】2023年了你还敢学软件测试?未来已寄..测试人该何去何从?【自动化测试、测试开发、性能测试】问题:appium默认启动一个应用的session过期时间是60秒到时间会自动停了刚启动的应用,工作台打印:info:[debug]Weshutdownbecausenonewcommandscamein的

<C++> 红黑树模拟实现map和set

使用一颗红黑树同时封装map和set。红黑树源码#pragmaonce#include<cassert>#include<iostream>#include<utility>usingnamespacestd;//红黑树结点颜色enumColour{RED,BLACK,};template<classK,classV>

【直播预约中】 腾讯大数据 x StarRocks|构建新一代实时湖仓

随着信息时代的兴起,数据已成为推动业务决策和创新的核心要素;结构化、半结构化等多种类型的数据呈现爆炸式增长,如何高效处理和分析海量数据已经成为关键挑战,结合传统数仓与数据湖优势的湖仓一体(Lakehouse)架构崭露头角,成为大数据领域势不可挡的趋势;基于湖仓一体架构,企业可以基于一份数据,满足BI报表、交互式数据探查

R语言STAN贝叶斯线性回归模型分析气候变化影响北半球海冰范围和可视化检查模型收敛性...

原文链接:http://tecdat.cn/?p=24334像任何统计建模一样,贝叶斯建模可能需要为你的研究问题设计合适的模型,然后开发该模型,使其符合你的数据假设并运行(点击文末“阅读原文”获取完整代码数据)。相关视频1.了解Stan统计模型可以在R或其他统计语言的各种包中进行拟合。但有时你在概念上可以设计的完美模型

Vue3为什么推荐使用ref而不是reactive

为什么推荐使用ref而不是reactivereactive本身具有很大局限性导致使用过程需要额外注意,如果忽视这些问题将对开发造成不小的麻烦;ref更像是vue2时代optionapi的data的替代,可以存放任何数据类型,而reactive声明的数据类型只能是对象;先抛出结论,再详细说原因:非必要不用reactive

Vue3.3 新特性 - 初体验

前言Vue3.3是Vue.js框架的最新版本,它带来了一些令人兴奋的新特性和改进。本文将对一些重要的新特性进行简要介绍,并通过示例代码进行说明。CompositionAPIVue3.3引入了CompositionAPI,这是一个全新的API风格,旨在提供更好的代码组织和可重用性。与之前的OptionsAPI相比,Com

热文推荐