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);// 直接newString对象构造 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

Linux MAT高效分析超大Java堆dump:实战步骤与避坑指南

1. 为什么要在Linux上用MAT分析超大堆dump文件 遇到Java应用内存溢出(OOM)问题时,拿到一个几GB甚至几十GB的堆dump文件,很多开发者的第一反应是:"赶紧下载到本地用图形化工具分析!"但现实往往很骨感——传输一个5GB的文件可能需要半小时,而本地电脑可能根本打不开这么大的dump文件。 我亲身经历过一次生产事故,一个16GB的堆dump文件,下载就花了40多分钟,结果本地MAT直接报"内存不足"错误。后来才发现,分析堆dump需要的内存通常是文件大小的1.5-2倍,这意味着要分析16GB的dump,本地机器至少需要32GB内存! 这就是为什么要在Linux服务器上直接分析超大堆dump的原因: * 避免大文件传输:GB级别的文件传输耗时且占用带宽 * 利用服务器大内存:生产服务器通常配置128GB甚至更高内存 * 快速定位问题:在出现问题的主机上直接分析,避免环境差异 * 生成精简报告:MAT可以生成只有几百KB的HTML报告,下载查看极其方便 2. 环境准备与MAT安装 2.1 系统环境检查 在开始之前,先确认你的Linux环境是否符合要

2026年值得关注的十大 JavaScript 框架

引言 JavaScript生态系统正在以极快的速度不断演进。五年前使用的技术在今天可能已经显得沉重或过时。随着2026年的临近,某些框架继续占据主导地位,而其他一些新兴框架则迅速崛起,响应着不断变化的性能需求、开发者体验优先级以及现代网页架构趋势(如边缘渲染、SSR、岛屿架构)。本文将探讨10个值得在2026年关注的前端、全栈/元框架或边缘准备框架,分析它们的特点、权衡和适用场景。 什么是"2026-ready"的JavaScript框架 在选择值得关注的框架时,我们主要考虑以下标准: 1. 性能与捆绑包大小:更小的捆绑包,更快的加载时间,最小的运行时开销。 2. 渲染/部署模型的灵活性:能够支持SSR、SSG、边缘渲染、增量静态生成或混合渲染。 3. 开发者体验与可维护性:语法干净,支持TypeScript,良好默认,最小的样板程序,以及流畅的开发者体验。 4. 生态系统与社区支持:库、工具、插件、主动维护、日益增长的采用率。 5.

通义千问插件:IDEA 中 Java 开发的 AI 赋能实战录

通义千问插件:IDEA 中 Java 开发的 AI 赋能实战录

在 AI 大模型重构开发范式的浪潮下,每一款 AI 编程工具的落地实践,都是一次技术效率与开发体验的双向探索。作为一名深耕 Java 后端的开发者,我在 Spring Boot 项目开发中,将 IDEA 与通义千问插件深度绑定,从 Maven 依赖排错到 Redis 配置优化,从代码重构到接口文档生成,这款插件已然成为我开发流程中不可或缺的 “超级助手”。在 AI 赋能编程语言挑战赛的契机下,我想结合真实开发场景,拆解通义千问插件与 Java 开发的适配逻辑,分享其解决开发痛点的实战经验,也谈谈对 AI 编程工具优化的思考。 一、工具适配:通义千问插件与 IDEA 的 Java 开发生态融合         相较于 Copilot 的多语言泛适配、CodeLlama 的本地化部署特性,通义千问插件最吸引我的,是其对国内开发者技术栈的精准贴合,

内网安全部署:Java + OpenClaw 本地大模型私有化方案

内网安全部署:Java + OpenClaw 本地大模型私有化方案

文章目录 * 前言 * 一、开篇:你的数据正在裸奔吗? * 二、技术栈选型:为什么选这三兄弟? * 2.1 本地大模型:Ollama是傻瓜相机 * 2.2 OpenClaw:AI界的机械臂 * 2.3 Java:老当益壮的底盘 * 三、架构设计:三层铁桶怎么搭? * 3.1 数据流向图(脑补版) * 3.2 安全边界划分 * 四、环境搭建:从0到1手摸手 * 4.1 本地模型部署(Ollama) * 4.2 OpenClaw安装与配置 * 4.3 Java项目准备 * 五、Java集成实战:代码说话 * 5.1 基础对话接口 * 5.