当前位置: 首页 > news >正文

Java-String

前言

package com.kjxy.st;public class TestString1 {public static void main(String[] args) {String s1 = "hello";String s2 = "hello";String s3 = new String("hello");String s4 = new String("hello");System.out.println(s1 == s2);System.out.println(s1.equals(s2));System.out.println(s3 == s4);System.out.println(s3.equals(s4));}
}

运行发现

这时候我们得通过画图来了解一下

可以发现字符串生成的是放在字符串池里面的,而new出来的是放在堆里面的,都是一个个独立的对象

所以来判断两个字符串是不是一样的,不能简单的用==来进行判断,而是应该用equals进行判断

package com.kjxy.st;public class TestString2 {public static void main(String[] args) {String s = "hello";s = "world";}
}

为什么string类通常不能改变?

因为string类是final修饰的

String类常用方法

length() 返回当前字符串的长度

charAt(int index) 返回当前字符串中第index位置的字符

toUpperCase() 返回当前字符串的大写形式

toLowerCase() 返回当前字符串的小写形式

equalslgnoreCase(String str) 忽略大小写,比较两个字符串是否相同

startsWidth(String str) 判断当前字符串是否以str开头

endsWidth(String str) 判断当前字符串是否以str结尾

indexOf(String str) 返回str在当前字符串中第一次出现的位置,如果str没有在当前字符串中出现,那么返回-1

lastIndexOf(String str) 返回str在当前字符串中最后一次出现的位置,如果str没有在当前字符串中出现,那么返回-1

substring(int start) 从第start位开始截取字符串,一直截到最后

substring(int start,int end) 从第start位开始截取字符串,一直截到第end位,但不包含第end位

valueOf(参数) 可以把各种数据类型的参数转换成字符串并返回

split(String str) 该方法会返回一个String[],数组中的元素是根据str拆分得来的

1.length() 返回当前字符串的长度

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.length());}
}

2.charAt(int index) 返回当前字符串中第index位置的字符

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.length());System.out.println(s1.charAt(0));}
}

用数组循环遍历

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";for (int i = 0; i < s1.length(); i++) {System.out.println(s1.charAt(i));}}
}

3.toUpperCase() 返回当前字符串的大写形式

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.toUpperCase());}
}

4.toLowerCase() 返回当前字符串的小写形式

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s2.toLowerCase());}
}

5.equalslgnoreCase(String str) 忽略大小写,比较两个字符串是否相同

实际利用场景 (验证码大小写不敏感)

String varifyCode="er45";
String myCode ="er45";
varifyCode.toLowerCase().equals(myCode.toLowerCase());

然后判断他是否为true,如果true则是正常的,否则不正常

String varifyCode="er45";
String myCode ="er45";
System.out.println(varifyCode.equalsIgnoreCase(myCode));

可以发现是true

6.startsWidth(String str) 判断当前字符串是否以str开头

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.startsWith("how"));}
}

7.endsWidth(String str) 判断当前字符串是否以str结尾

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.endsWith("?"));}
}

8.indexOf(String str) 返回str在当前字符串中第一次出现的位置,如果str没有在当前字符串中出现,那么返回-1

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.indexOf("o"));}
}

发现应该返回的是第一次的o,结果应该是1

如果没有出现则是-1

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.indexOf("z"));}
}

9.lastIndexOf(String str) 返回str在当前字符串中最后一次出现的位置,如果str没有在当前字符串中出现,那么返回-1

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.lastIndexOf("o"));}
}

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.lastIndexOf("z"));}
}

10.substring(int start) 从第start位开始截取字符串,一直截到最后

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.substring(4));}
}

11.substring(int start,int end) 从第start位开始截取字符串,一直截到第end位,但不包含第end位

package com.kjxy.st;public class TestString3 {public static void main(String[] args) {String s1 = "how hava you been?";String s2 = "HOW HAVA YOU BEEN?";System.out.println(s1.substring(4, 10));}
}

实际运用场景

//png  jpg  bmp
String myFileName = "123.zip";

此时就可以用字符串截取函数进行判断,但是这里从安全的角度看还是不安全的,因为能够后缀拓展名进行绕过

String myFileName = "abc.PNG";
String extName = myFileName.substring(myFileName.lastIndexOf(".")+1);
if (extName.equalsIgnoreCase("jpg")||extName.equalsIgnoreCase("png")||extName.equalsIgnoreCase("bmp")){System.out.println("上传文件正确");
}else {System.out.println("上传文件有误,请重新上传!");
}
}
}

12.valueOf(参数) 可以把各种数据类型的参数转换成字符串并返回

Person类

package com.kjxy.st;public class Person {private  String name;private int age;;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Person(int age, String name) {this.age = age;this.name = name;}
}

主函数类

package com.kjxy.st;public class TestString4 {public static void main(String[] args) {int i =5;double d =3.14;String s1 = String.valueOf(i);String s2 = String.valueOf(d);Person p = new Person(20,"张飞");String s3 =String.valueOf(p);System.out.println(s1);System.out.println(s2);System.out.println(s3);}
}

然后运行发现其实是调用了toString方法

为了验证我们的正确性,我们开始可以查看其api文档,发现它确实调用了toString方法

tips

//正则表达式// [0-8][a-z]@[^0-9][a-z].[a-z*]

13.split(String str) 该方法会返回一个String[],数组中的元素是根据str拆分得来的

package com.kjxy.st;public class TestString5 {public static void main(String[] args) {String s = "wer-234g-hhj8-12cc";String []arr =s.split("-");for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}
}

实际运用场景

//张三-25-老师
//李四-20-清洁工
//中国-哪吒-666

然后就可以进行 拆分了

相关文章:

  • Python惰性函数与技术总结-由Deepseek产生
  • 【软测】脚本实现 - 网页自动化测试
  • 搜索问答技术概述:基于知识图谱与MRC的创新应用
  • rt-thread的定时器驱动(裸机版本)记录.
  • Ubuntu中Chromium无法使用Fcitx输入中文的问题
  • 设计师灵感仓库!IconViewer 右键一键提取系统图标,PNG 透明背景素材随取随用
  • AORSA关键文件及参数解释
  • 「AI投资」| 国元证券: 《国产Agent不断演进,通用协议推进系统性应用-AI行业专题报告》
  • App跨平台技术2025年深度解析:核心原理与最佳实践
  • linux-压缩类命令
  • MySQL 究极奥义·动态乾坤大挪移·无敌行列转换术
  • 二维码识别深度解析
  • Python爬虫实战:研究RQ库相关技术
  • 【 (MCMC算法)“马尔可夫链 + 蒙特卡洛 = 黑科技采样术”| 零基础也能学懂!】
  • 逆向入门(5)程序逆向篇-AD_CM#2
  • 【八股消消乐】构建微服务架构体系—实现制作库与线上库分离
  • 再参数化视角下的批量归一化:缩放平移操作的本质意义
  • python与java的区别
  • Appium + Ruby 测试全流程
  • Java线程转储:快速定位死锁与阻塞
  • 专业制作网站推荐/网络推广平台软件
  • 东圃手机网站建设/百度关键词推广费用
  • crm管理系统是什么意思/灯塔网站seo
  • 哪个网站做二手车抵押/网络广告宣传平台
  • 西安有哪些做网站的公司好/百度客户管理系统登录
  • 免费行情软件网站下载大全安全吗/百度地图导航手机版免费下载