首页 > 编程语言 >9.Java常用类(waiting)

9.Java常用类(waiting)

时间:2022-12-29 10:00:30浏览次数:40  
标签:常用 Java String int s1 value waiting str 字符串

一、字符串相关的类

1.String
String的特性
  • String类:代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作 为此类的实例实现。
  • String是一个final类,代表不可变的字符序列。
  • 字符串是常量,用双引号引起来表示。它们的值在创建之后不能更改。
  • String对象的字符内容是存储在一个字符数组value[]中的。
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
/** The value is used for character storage. */
private final char value[];

/** Cache the hash code for the string */
private int hash; // Default to 0
String s1 = "abc";//字面量的定义方式
String s2 = "abc";
s1 = "hello";

9.Java常用类(waiting)_子字符串

string对象的创建
String str = "hello";
//本质上this.value = new char[0];
String s1 = new String();
//this.value = original.value;
String s2 = new String(String original);
//this.value = Arrays.copyOf(value, value.length);
String s3 = new String(char[] a);
String s4 = new String(char[] a,int startIndex,int count);

9.Java常用类(waiting)_java_02

9.Java常用类(waiting)_子字符串_03

String str1 = “abc”;与String str2 = new String(“abc”);的区别?
  • 字符串常量存储在 字符串常量池,目的是共享
  • 字符串非常量对象 存储在堆中。

9.Java常用类(waiting)_子字符串_04

练习1
String s1 = "javaEE";
String s2 = "javaEE";
String s3 = new String("javaEE");
String s4 = new String("javaEE");
System.out.println(s1 == s2);//true
System.out.println(s1 == s3);//false
System.out.println(s1 == s4);//false
System.out.println(s3 == s4);//false

9.Java常用类(waiting)_java_05

字符串对象是如何存储的

9.Java常用类(waiting)_字符串_06

字符串特性

9.Java常用类(waiting)_子字符串_07

结论

  • 常量与常量的拼接结果再常量池。且常量池中不会存在相同内容的常量。
  • 只要其中有一个是变量,结果就在堆中
  • 如果拼接的结果调用intern()方法返回值就在常量池中
String使用陷阱
  • String s1 = "a";
    说明:在字符串常量池中创建了一个字面量为"a"的字符串。
  • s1 = s1 + "b";
    说明:实际上原来的“a”字符串对象已经丢弃了,现在在堆空间中产生了一个字符串s1+"b"(也就是"ab")。
    如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响 程序的性能。
  • String s2 = "ab"; 说明:直接在字符串常量池中创建一个字面量为"ab"的字符串。
  • String s3 = "a" + "b";
    说明:s3指向字符串常量池中已经创建的"ab"的字符串。
    String s4 = s1.intern();
    说明:堆空间的s1对象在调用intern()之后,会将常量池中已经存在的"ab"字符串 赋值给s4。
String常用方法
  • int length():返回字符串的长度: return value.length
  • char charAt(int index): 返回某索引处的字符return value[index]
  • boolean isEmpty():判断是否是空字符串:return value.length == 0
  • String toLowerCase():使用默认语言环境,将 String 中的所有字符转换为小写
  • String toUpperCase():使用默认语言环境,将 String 中的所有字符转换为大写
  • String trim():返回字符串的副本,忽略前导空白和尾部空白
  • boolean equals(Object obj):比较字符串的内容是否相同
  • boolean equalsIgnoreCase(String anotherString):与equals方法类似,忽略大小写
  • String concat(String str):将指定字符串连接到此字符串的结尾。等价于用“+”
  • int compareTo(String anotherString):比较两个字符串的大小
  • String substring(int beginIndex):返回一个新的字符串,它是此字符串的从 beginIndex开始截取到最后的一个子字符串。
  • String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。
  • boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束
  • boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始
  • boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的子字符串是否以指定前缀开始
  • boolean contains(CharSequence s):当且仅当此字符串包含指定的 char 值序列 时,返回 true
  • int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引
  • int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
  • int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引
  • int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后 一次出现处的索引,从指定的索引开始反向搜索
    注:indexOf和lastIndexOf方法如果未找到都是返回-1
  • String replace(char oldChar, char newChar):返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
  • String replace(CharSequence target, CharSequence replacement):使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
  • String replaceAll(String regex, String replacement) : 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
  • String replaceFirst(String regex, String replacement) : 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
  • boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。
  • String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。
  • String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此 字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中。
String str = "12hello34world5java7891mysql456";
//把字符串中的数字替换成,,如果结果中开头和结尾有,的话去掉
String string = str.replaceAll("\\d+", ",").replaceAll("^,|,$", "");
System.out.println(string);
String str = "12345";
//判断str字符串中是否全部有数字组成,即有1-n个数字组成
boolean matches = str.matches("\\d+");
System.out.println(matches);
String tel = "0571-4534289";
//判断这是否是一个杭州的固定电话
boolean result = tel.matches("0571-\\d{7,8}");
System.out.println(result);
String str = "hello|world|java";
String[] strs = str.split("\\|");
for (int i = 0; i < strs.length; i++) {
System.out.println(strs[i]);
}
System.out.println();
String str2 = "hello.world.java";
String[] strs2 = str2.split("\\.");
for (int i = 0; i < strs2.length; i++) {
System.out.println(strs2[i]);
}

标签:常用,Java,String,int,s1,value,waiting,str,字符串
From: https://blog.51cto.com/u_15227402/5976411

相关文章

  • 第一章《初学者问题大集合》第3节:学了Java编程能应聘什么岗位?
    ​在回答这个问题之前,必须先弄清楚一个事实:软件工程师是一个专业性很强的职业,就像医生一样,虽然眼科医生、牙科医生、骨科医生都是医生,但他们的专业知识和工作内容差别还是很......
  • 第一章《初学者问题大集合》第4节:Java程序是如何执行的?
    想要学好Java编程,就必须先弄清楚Java程序是如何执行的。首先来解释一个最基本的概念:什么是程序?把你想让计算机做的事情用编程语言一条条列出,这个由多条编程语言所组成的“代......
  • 【Git】Git常用命令
    Git分布式版本控制工具Git最常用命令命令名称作用gitinit初始化本地库gitadd./文件名把代码添加到暂存区gitcommit-m'日志'把暂存区的文件添加......
  • 跟光磊学Java-IntelliJ IDEA介绍
    IntelliJIDEA    目前绝大部分互联网公司的Java项目都是使用IntelliJIDEA来开发,因此IntelliJIDEA是每一个Java程序员必须熟练使用的工具1.JetBrains......
  • 跟光磊学Java-macOS版Java8开发环境搭建(基于Intel x86 64-bit)
    Java语言核心技术     日常办公和软件开发除了可以使用Windows系统以外,还可以使用macOS系统,至于具体使用什么系统取决于你入职公司之后公司给你发的什么电......
  • 跟光磊学Java-macOS版Java17开发环境搭建
    Java语言核心技术    日常办公和软件开发除了可以使用Windows系统以外,还可以使用macOS系统,至于具体使用什么系统取决于你入职公司之后公司给你发的什么电脑......
  • Java方法引用
    体验方法引用通过方法引用,来使用已经存在的方案。定义一个接口,里面有一个抽象方法:publicinterfacePrintable{voidprintString(Strings);}定义一个测......
  • C#常用字符串方法
    常用字符串方法CompareTo()比较字符串的内容Replace()用另一个字符或者字符串替换字符串中给定的字符或者字符串Split()      在出现给定字符的地方,把......
  • C#常用命名空间
    C#常用命名空间MSDN上的C#.NETFramework类库文档目录树,本人觉得有点不得要领,于是参考搜到的结果简单整理如下:一、基础命名空间System处理内建数据、数学计算、......
  • JavaScript
    概念:  *运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎  *脚本语言:不需要编译,直接就可以被浏览器解析执行了功能:  *可以来增强用户和html页面的......