java-String

String

1. String引入

1.1 构造方法
   public static void main1(String[] args) {//构造方法String s1 = "hello world";String s2 = new String("yuanwei");char[] values ={'a','b','c'};String s3= new String(values);System.out.println(s1);System.out.println(s2);System.out.println(s3);}

image-20231026084432219

1.2 常见函数调用
    public static void main2(String[] args) {//常见函数调用String s1 = "hello world";System.out.println(s1.length());//长度,调用的是函数int[]array ={1,2,3,4,5};System.out.println(array.length);//length是属性String s2="";System.out.println(s2.isEmpty());//s2这个引用指向的对象是空String s3=null;//s3不指向任何对象System.out.println("yuanwei".length());//""引起来的常量也是String类,常量也可直接调用函数}
1.3 字符串比较
    public static void main3(String[] args) {String s1="hello";String s2="yuanwei";//比较两个引用指向对象内容是否一致.equals是String重写了Object的接口System.out.println(s1.equals(s2));//System.out.println(s1.equalsIgnoreCase(s2));//忽略大小写System.out.println(s1.compareTo(s2));//if s1>s2,返回正数,反之负数,相等返回0System.out.println(s1.compareToIgnoreCase(s2));//忽略大小写比较字典序}
1.4 字符串查找
    public static void main4(String[] args) {//字符串查找String s1="hello";//1. charAt()System.out.println(s1.charAt(2));for (int i = 0; i < s1.length() ;i++) {System.out.print(s1.charAt(i));}System.out.println();//2. indexOfint index1 = s1.indexOf('l');//返回第一次出现的位置System.out.println(index1);String s2= "abcdabcdabcd";int index2 = s2.indexOf("da");//主串中查找子串位置 KMP算法System.out.println(index2);//3. lastIndexOf() 从后往前找int index3= s2.lastIndexOf("abc");System.out.println(index3);int index4= s2.lastIndexOf("acbd",9);//end=fromIndex开始往前找}
1.5 字符串转换
    public static void main5(String[] args) {//字符串转换String s1=String.valueOf(123);//int->StringString s2 =String .valueOf('c');//char->StringSystem.out.println(s1);System.out.println(s2);String s3= String.valueOf(new Person());//Object->StringSystem.out.println(s3);//调用的是Object的toString方法System.out.println("===================");String s4="123";int data=Integer.parseInt(s4);//类名调用的都是静态方法System.out.println(s4);//基本类型(int) 对应的 类类型(Integer)double data2=Double.parseDouble("123.34");}public static void main6(String[] args) {//大小写转化String s1 ="abcd";String ps1=s1.toUpperCase();System.out.println(ps1);String s2="AFSfdas";System.out.println(s2.toLowerCase());}
1.6 字符串替换
    public static void main(String[] args) {//并不修改原来的值,返回值都是新生成一个对象String s1="abcdabcdeacbde";String ret1=s1.replace('a', 'y');System.out.println(ret1);System.out.println("===============");String ret2=s1.replace("abc","000");System.out.println(ret2);System.out.println("===============");String ret3=s1.replaceAll("abc","000");System.out.println(ret3);System.out.println("===============");String ret4=s1.replaceFirst("cb","yuan");System.out.println(ret4);}
1.7 字符串转数组
    public static void main7(String[] args) {//字符串转数组String s1 ="abcd";char[] array = s1.toCharArray();for(int i=0;i<array.length;i++){System.out.println(array[i]);}//格式化输出String s=String.format("%d-%d-%d",2001,6,20);System.out.println(s);}
1.8 字符串拆分
    public static void main(String[] args) {//涉及到多次拆分的情况String str1="name=yuanwei&age=22&sex=male";String[] strs=str1.split("&");for(int i=0;i<strs.length;i++){System.out.println(strs[i]);}//name=yuanwei//age=22//sex=malefor(int i=0;i<strs.length;i++){
//            System.out.println(strs[i]);String[] strings=strs[i].split("=");for(String s:strings){System.out.println(s);}}//name//yuanwei//age//22//sex//male}public static void main9(String[] args) {//字符串拆分String s1= "hello yuanwei hello ahahah";String[] array1 = s1.split(" ");//参数是Stringfor (int i = 0; i < array1.length; i++) {System.out.println(array1[i]);}//hello//yuanwei//hello//ahahahSystem.out.println("============");String[] array2 = s1.split(" ",2);//最多分两组for (int i = 0; i < array2.length; i++) {System.out.println(array2[i]);}//hello//yuanwei hello ahahahString s3="192.168.16.20";String[] ret =s3.split("\\.");//特殊字符. | * + 需要进行转义,加上两个\\for (int i = 0; i < ret.length; i++) {System.out.println(ret[i]);}//192//168//16//20String s4="192\\168\\16\\20";String[] ret2 =s4.split("\\\\");for (int i = 0; i < ret2.length; i++) {System.out.println(ret2[i]);}//192//168//16//20String s5="192&16816=20";String[] ret3 =s4.split("&|=");//多个分隔符for (int i = 0; i < ret3.length; i++) {System.out.println(ret3[i]);}}
1.9 字符串截取
    public static void main16(String[] args) {//字符串截取,也是返还一个新的对象String str="abcdef";String s1= str.substring(2);//[beginIndex...]System.out.println(s1);String s2=str.substring(2,3);//[from,end) 注意所有区间都是左闭右开System.out.println(s2);//cdef//c}public static void main(String[] args) {//删除左右两边的空格String str ="       abcd hello       ";String s1=str.trim();System.out.println(s1);//abcd hello}

2. 字符串不可变性

只要是""引起来的对象,都放在常量值区中,是不可改变的,都会产生新的对象返回.

逻辑上JVM内存划分为java虚拟机栈,本地方法栈,堆,方法区,程序计数器 5个部分,方法区就是堆的一部分.

image-20231026102226405

image-20231026102156625

3. StringBuffer StringBuilder

字符串拼接

+拼接会产生很多的临时对象,导致效率会非常的低.

    public static void main(String[] args) {String str="hello";StringBuffer stringBuffer =new StringBuffer();//新stringBuffer对象stringBuffer.append(str);stringBuffer.append("yuanwei");str改变引用指向,指向了一个新产生的对象StringBuilder完成拼接,得到helloyuanwei并使用toString()new的新对象str= stringBuffer.toString();System.out.println(str);//helloyuanwei}public static void main20(String[] args) {String str="hello";//对象1str+="yuanwei";//对象2System.out.println(str);//对象3->StringBuilder,toString又创建一个String对象,赋值给str}

例子演示:

image-20231026112436078

image-20231026112419142

public class String_builder {public static void main(String[] args) {//在同一个对象上进行修改.\//将常量值取出来之后构建一个对象,然后无论怎么操作,都只会在这个对象上操作StringBuilder stringBuilder=new StringBuilder("abc");System.out.println(stringBuilder);stringBuilder.reverse();System.out.println(stringBuilder);//abc//cbaStringBuilder stringBuilder2=new StringBuilder("abc");System.out.println(stringBuilder2);stringBuilder2.append(10);stringBuilder2.append(10);stringBuilder2.append(10);System.out.println(stringBuilder2);//abc101010 调用的是stringBuilder2.toString()}
}

image-20231026104505234

public class string {public boolean isValid(char ch){if((ch>='0' && ch<='9') || (ch>='a' && ch<='z')){return true;}return false;}public boolean isPalindStr(String str){//回文字符串判断str.toLowerCase();//忽略大小写char[] array = str.toCharArray();int left=0,right=array.length-1;while (left<right){//循环走一定注意双指针相对位置关系while(left<right && !isValid(array[left])){left++;}while(left<right && !isValid(array[right])){right--;}if(array[left] != array[right]){return false;}else{left++;right--;}}return true;}//处理连续输入问题public static void main(String[] args) {Scanner scanner=new Scanner(System.in);while(scanner.hasNextLine()){//如果有下一行数据,trueString str = scanner.nextLine();//读取一行//do...int index =str.lastIndexOf(" ");String ret = str.substring(index+1);System.out.println(ret);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/209501.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信创系列之大数据,分布式数据库产业链跟踪梳理笔记…

并购优塾 投行界的大叔&#xff0c;大叔界的投行 【产业链地图&#xff0c;版权、内容与免责声明】1&#xff09;版权&#xff1a;版权所有&#xff0c;违者必究&#xff0c;未经许可不得翻版、摘编、拷贝、复制、传播。2&#xff09;尊重原创&#xff1a;如有引用未标注来源…

毕业设计ASP.NET 1400动漫公司网站【程序源码+文档+调试运行】

摘要 本系统将实现一个动漫公司网站&#xff0c;包括前台用户模块和后台管理员模块。前台用户模块主要包括最新动漫、注册登录、公司简介、公司新闻、动漫中心、联系我们和会员中心等功能。后台管理员模块包括用户管理、公司简介管理、公司新闻管理、动漫类别管理、动漫管理、…

4510亿浏览!用好这个TikTok功能,它们能让每个人成名15秒

#filter&#xff08;滤镜&#xff09;浏览量达451亿浏览 颜值当道的年代&#xff0c;不管做什么都要美。 美颜滤镜&#xff0c;堪称中国出海神器。 它有鬼斧神工之效&#xff0c;可以瞬间化腐朽为神奇&#xff0c;是许多人的心头好。 脸大、鼻子塌、眼睛小、有雀斑……通过…

OAuth2认证请求头中的authorization从哪里来的

Oauth2的登录接口oauth/token, 在请求头里有个 authorization: Basic dGVzdENsaWVudElkOnRlc3RDbGllbnRTZWNyZXQ 其中 dGVzdENsaWVudElkOnRlc3RDbGllbnRTZWNyZXQ 是 client-id:client-secret 的base64的编码 例如项目中的配置是(这个东西一般在网关里配置的): security:oau…

极智开发 | 随机初始化onnx模型权重的方法

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文分享一下 随机初始化onnx模型权重的方法。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq onnx 模型一直是在算法部署中…

Lora学习资料汇总

目录 LoRa联盟 Semtech lora网关供应商: LoRaMAC API文档 论坛 开发板 主流技术对比分析 LoRa网络距离模拟测试方法 LoRa应用 LoRa联盟 LoRa联盟&#xff1a;LoRaWAN规范的制定组织 https://www.lora-alliance.org/ LoRa技术白皮书&#xff1a;https://www.lora-alli…

年轻有为!2023两院院士增选揭榜 45岁颜宁当选

大家好&#xff0c;我是极智视界&#xff0c;欢迎关注我的公众号&#xff0c;获取我的更多前沿科技分享 邀您加入我的知识星球「极智视界」&#xff0c;星球内有超多好玩的项目实战源码和资源下载&#xff0c;链接&#xff1a;https://t.zsxq.com/0aiNxERDq 通常&#xff0c;两…

如何满足BMW EDI项目的PKT需求?

近期宝马BMW&#xff08;以下简称BMW&#xff09;在其部分供应商之间试点推进PKT项目&#xff0c;BMW为什么要启动 PKT 计划呢&#xff1f; 业务系统全面升级统一全球所有宝马工厂的流程 宝马内部的物流供货流程 近期BMW PKT需求主要针对其内部物流供货流程展开&#xff1a; …

如何评估供应商协同平台的功能和性能

在制造业中&#xff0c;供应商协同平台是一种重要的工具&#xff0c;可以帮助企业与供应商建立更紧密的合作关系&#xff0c;提高采购效率&#xff0c;降低成本。而SRM系统是一种集成的供应链管理系统&#xff0c;可以协调和管理企业与供应商之间的业务关系&#xff0c;包括供应…

echarts 实时刷新图表

2023.11.23今天我学习了如何对echarts图表进行实时刷新&#xff0c;如&#xff1a;一分钟刷新一次&#xff0c;或是五分钟刷新一次。 代码如下&#xff1a; <template><div ref"bar" style"width:200px;height:200px"/> </template>&l…

小型洗衣机哪个牌子好用又耐用?最好用的迷你洗衣机

随着大家工作的压力越来越大&#xff0c;下了班之后只能想躺平&#xff0c;在洗完澡之后看着还需要手洗的内衣裤真的很头疼。有些小伙伴还有会攒几天再丢进去洗衣机里面一起&#xff0c;而且这样子是非常不好的&#xff0c;用过的内衣裤长时间不清洗容易滋生细菌&#xff0c;而…

接口传参数list的时候,items里面放个​​​​​​​list

item里面放个list 先定义一个 list&#xff0c;循环add加入参数