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

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

然后就可以进行 拆分了

http://www.xdnf.cn/news/14227.html

相关文章:

  • 如何快速提升英文听力?
  • PCB设计杂谈之一
  • Amazon Q in QuickSight 实战:自然语言秒级生成数据报表与深度洞察
  • 打牙祭是什么意思
  • 快速读取数据
  • 006__C++类的特殊用法
  • 2.3.3 07年T2
  • GeoTools:gt-referencing模块
  • LoadRunner 2023 安装部署
  • 如何稳定地更新你的大模型知识(算法篇)
  • DataX HdfsReader 插件:快速上手与深入解析
  • 《P1878 舞蹈课》
  • 基于Docker编译运行orb-slam2_with_semantic_labelling
  • 36. 有效的数独
  • 『uniapp』搜索功能+商品列表滚动效果(详细图文注释)
  • SAE层、BPNN层结合的深度学习模型
  • C++ 环境配置
  • XRecorder:安卓录屏,轻松高效
  • 嵌入式PADS中Route布线操作与实现
  • OVS Faucet Tutorial笔记(下)
  • 动手学深度学习Pytorch版(李沐)(5-7章)
  • 使用STM32设置GPIO中断
  • 20250611题解
  • 抖音蓝牙遥控器芯片方案、自拍器蓝牙芯片方案 简易版 io控制
  • 高精度模板
  • 【Spring源码核心篇-08】spring中配置类底层原理和源码实现
  • torchsummary库中的summary()函数
  • Kerberos快速入门之基本概念与认证基本原理
  • OpenLayers 创建坐标系统
  • Flower框架中noise_multiplier与clipped_count_stddev的关系