Java String函数的使用

Java String函数的使用

文章目录

在这里插入图片描述

String

  1. String 的构造方法

str本来是字符串常量的引用,应该打印地址,但是编译器重写了toString方法,所以打印hello

在这里插入图片描述
publicclasstest{publicstaticvoidmain(String[] args){// 用常量字符串构造 String s1 ="hello"; System.out.println(s1);// 用字符数组构造char[] array =newchar[]{'a','b','c'}; String s2 =newString(array); System.out.println(s2);char[] array1 =newchar[]{'a','b','c'}; String s4 =newString(array,0,2);// 从0位置后拿2个字符 System.out.println(s4);// 直接newSting对象构造 String s3 =newString("hello"); System.out.println(s3);}}
  1. String对象在内存中的情况
在这里插入图片描述
在这里插入图片描述


4. 空指针异常和空字符串,isEmpty()判断是否为空字符串

在这里插入图片描述

字符串比较

  1. s1 == s2 比较地址
  2. s1.equals(s2)比较是否相等,返回true或者false
  3. s1.compareTo(s2)比较大小
  4. s1.compareToIgonreCase(s2)忽略大小写比较
publicclass test {publicstaticvoidmain(String[] args){String s1 =newString("hello");String s2 =newString("Hello");System.out.println(s1 == s2);// 不等于,s1和s2表示对象的引用都存的是地址System.out.println(s1.equals(s2));System.out.println(s1.compareTo(s2));// s1 大于 s2 返回正数// s1 小于 s2 返回负数// s1 等于 s2 返回0System.out.println(s1.compareToIgnoreCase(s2));// 忽略大小写比较}}

字符串查找

  1. char charAt(int index),返回数组中下标对应的字符
publicstaticvoidmain(String[] args){String s1 =newString("hello");char ch = s1.charAt(1);System.out.println(ch);// e}
  1. int indexOf(char ch),返回第一次出现ch字符的下标
String s2 =newString("hello");int index = s1.indexOf('l');System.out.println(index);// 2
  1. int indexOf(char ch,int k),k表示下标,从指定位置开始查找
String s2 =newString("hello");int index = s1.indexOf('l',3);System.out.println(index);// 3
  1. int indexOf(String s),可以查找子串在主串中出现的位置,如果没有找到返回-1
String s3 ="ababcdeabcf";int index = s3.indexOf("abc");System.out.println(index);// 2int index1 = s3.indexOf("abc",3);System.out.println(index1);// 7 
  1. int lastIndexOf(String s),倒着往前找,返回第一个找到的下标
String s3 ="ababcabcd";int index = s3.lastIndexOf("abc");System.out.println(index);// 5int index1 = s3.lastIndexOf("abc",4);System.out.println(index1);// 2// 从4下标位置倒着往前找

转化

  1. 数字和字符串之间的转化
String s2 =String.valueOf(newStudent("zhangsan",20));System.out.println(s2);String s3 =String.valueOf(123);System.out.println(s3);String s4 =String.valueOf(123.34);System.out.println(s4);String s5 =String.valueOf(true);System.out.println(s5);// true
在这里插入图片描述


2. 字符串转数字

int a =Integer.parseInt("190");System.out.println(a);int b =Integer.parseInt("19.9");// 错误,给的要是整数的字符串
在这里插入图片描述
  1. 大小写转化

小写转大写:toUpperCase
转变为大写不是在原有字符串的基础上转换,而是转变为大写是一个新的对象,不会改变原有的字符串

String s ="hello";String ret = s.toUpperCase();System.out.println(ret);

大写转小写

String s ="HEllo";String ret = s.toLowerCase();System.out.println(ret);// hello
  1. 字符串转为数组
String s ="hello";char[] ret = s.toCharArray();System.out.println(Arrays.toString(ret));// [h,e,l,l,o]

数组转为字符串

char[] ret ={'a','b','c'};String s =newString(ret);System.out.println(s);// abc
  1. 格式转换
String s =String.format("%d-%d-%d",2019,9,20);System.out.println(s);// 2019-9-20

字符串替换

  1. 替换字符串
在这里插入图片描述
  1. 替换单个字符
在这里插入图片描述


3. 替换第一个ab

在这里插入图片描述


4. 把所有的ab都替换为123

在这里插入图片描述

字符串拆分

  1. s.split()以这里面的字符串为标准分割
publicstaticvoidmain(String[] args){String s ="hello world k";String[] array = s.split(" ");System.out.println(Arrays.toString(array));// [hello,world,k]String s1 ="hello world k";String[] array1 = s.split(" ",2);// 以空格分割最多分成两组System.out.println(Arrays.toString(array1));// [hello, world k]}
  1. 特殊的情况,使用转义字符
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

多次分割

在这里插入图片描述

字符串截取(常用)

  1. substring(a,b) [a,b) a和b均为下标
String str ="hello";String ret = str.substring(0,3);// hel
  1. 给一个参数,会把后面的全不截取
String str ="hello";String ret = str.substring(0);// hello
  1. trim(),去掉字符串的左右空格,中间的空格不可去掉
在这里插入图片描述

字符串的不可变性

  1. 字符串中的value[] 数组是被private修饰的,也没有提供get方法,在类外是无法拿到的,就无法修改该数组了
  2. 而被final修饰的,只是表明它是常量了,它的引用只能指向一个对象,不能被改变成指向别的对象
  3. 被final修饰的不能被继承
finalint[] array ={1,2,3};// array = new int[]{1,2};// 不能改变array的指向了  array[0]=2;// 可被修改
在这里插入图片描述

Read more

C++备忘录模式:优雅实现对象状态保存与恢复

C++备忘录模式:优雅实现对象状态保存与恢复

C++备忘录模式:优雅实现对象状态保存与恢复 * 引言 * 备忘录模式概述 * 核心角色解析 * 1. Originator(发起人) * 2. Memento(备忘录) * 3. Caretaker(管理者) * 设计原则体现 * C++实现示例 * 典型应用场景 * 高级特性与优化 * 1. 增量备忘录 * 2. 序列化支持 * 3. 线程安全考虑 * 与其他模式的协作 * 注意事项 * 总结 引言 在软件开发中,我们经常需要实现撤销操作、历史记录或状态回滚等功能。备忘录模式(Memento Pattern)正是为解决这类问题而生的设计模式。本文将深入探讨备忘录模式在C++中的实现与应用,帮助开发者掌握这一强大的设计工具。 备忘录模式概述 备忘录模式是一种行为设计模式,它允许在不破坏封装性的前提下捕获并外部化一个对象的内部状态,以便以后可以将该对象恢复到原先保存的状态【1†source】。该模式特别适合需要实现撤销操作、历史记录或快照功能的场景【1†source】

By Ne0inhk

c++最小生成树详讲

一、最小生成树(Minimum Spanning Tree)是什么? 1️⃣ 图论基础回顾 我们先明确研究对象: * 无向图 * 连通 * 带权图 设图 (G = (V, E)) * (V):点集,(|V| = n) * (E):边集,(|E| = m) * 每条边有权值 (w) 2️⃣ 生成树(Spanning Tree) 定义 一棵 生成树 满足: 1. 包含图中 所有顶点 2. 是一棵 树 * 连通 * 无环 3. 边数一定是: [ |E| = n - 1 ] 👉 一个连通图可能有 很多棵生成树

By Ne0inhk
C++ 入门全指南:从发展史到第一个程序,命名空间 + 输入输出手把手讲

C++ 入门全指南:从发展史到第一个程序,命名空间 + 输入输出手把手讲

目录 一、C++的发展历史 1.发展历史 2.C++的版本更新 3.C++的参考文档 二、C++的学习建议 1.C++的应用领域: 2.学习书籍推荐: 三、C++的第一个程序 四、命名空间 1.namespace的价值: 2.namespace的定义: 1)使用namespace来命名空间,以及使用命名空间(详解见注释): 2)命名空间的嵌套使用 3)多文件定义的命名空间问题 3.namespace命名空间的使用: 1)指定命名空间访问 2)using将命名空间中某个成员展开 3)展开命名空间中全部成员 五、C++输入&输出

By Ne0inhk
C++:set/multiset和map/multimap文档详细解析

C++:set/multiset和map/multimap文档详细解析

Hello大家好! 很高兴与大家见面! 给生活添点快乐,开始今天的编程之路。 我的博客:<但愿. 我的专栏:C语言、题目精讲、算法与数据结构、C++ 欢迎点赞,关注 目录   前言   一 容器的分类(根据容器中各个数据之间的关系)          1.1序列式容器                  1.1.1序列式容器的概念                  1.1.2序列式容器的例子           1.2关联式容器                  1.2.1关联式容器的概念                  1.2.2关联式容器的例子   二  set/multiset           2.1参考文档(multiset包在set中所以其没有头文件)           2.2set类的介绍                   2.2.1set类的实现的简单介绍                  2.2.2set类的接口介绍                           2.

By Ne0inhk