文章目录

  • 1.String类学习
    • 1.1.什么是String类
    • 1.2.String类中常用的方法
      • 1.2.1. 构造方法
      • 1.2.2.public int length()
      • 1.2.3.public boolean equals(String s)
      • 1.2.4 .public boolean startsWith(String s)
      • public boolean endsWith(String s)
    • 1.2.5.public int compareTo(String s)
      • 1.2.6.public boolean contains(String s)
      • 1.2.7.public int indexOf(String s)
      • public int lastIndexOf(String s)
      • 1.2.8.public String substring(int startpoint)
    • 1.3.String的使用场景
      • 1.3.1.字符串常量的使用
      • 1.3.2.字符串的并置
      • 1.3.3.字符串与基本数据的转换
      • 1.3.4.对象的字符串表示
      • 1.3.5.字符串与字符数组,字节数组
      • 1.3.6.正则表达式及字符串的替换和分解
      • 1.3.7.final关键字

1.String类学习

1.1.什么是String类

由于程序设计中经常涉及处理和字符序列有关的算法,所以Java专门提供了用来处理字符序列的String类来让我们的编程变得的更简单。此类在java.lang包中,而此包在Java程序中被默认引用(无需import),因此程序可以直接使用String类。但Java将String类定义为final类,即此类不能改写。

1.2.String类中常用的方法

1.2.1. 构造方法

String(char value[])
这是String里的一个构造方法,它的作用是将一个char数组转为一个String对象进行使用。
其用法为:

char a[]={'j','a','v','a'};
String s=new String(a);

相当于:

String s=new String("java");

String(char value[],int offset,int count)
也是String类的一个构造方法,它的作用是将一个char数组中的指定范围的char序列转为一个String对象并进行使用。
其用法为:

char a[]={'0','1','2','3','4','5','6','7','8','9'};
String s=new String(a,2,4);

相当于

String s=new String("2345");

虽然String提供了一些构造方法给我们进行构造,但是,String的最常用的构造方式是:
String str = “你好”; //直接赋值

除此之外,String还提供了其他的构造方法,这个自行查阅API或者阅读源码。

1.2.2.public int length()

此方法是获取一个String对象的字符序列长度的一个方法,其用法如下:

public static void main(String[] args) {String str = "中华人民共和国";System.out.println("str 长度: "+str.length());
}

1.2.3.public boolean equals(String s)

此方法是一个比较两个字符串是否相同的方法,其用法如下:

public static void main(String[] args) {boolean a ,b;String tom = new String("天道酬勤");String boy = new String("天道酬勤");String jerry = new String("投机取巧");a=tom.equals(boy);//a的值为trueb=tom.equals(jerry);//b的值为falseSystem.out.println("a: "+a);System.out.println("b: "+b);
}

1.2.4 .public boolean startsWith(String s)

public boolean endsWith(String s)

它们分别是判断当前String对象的字符序列前缀或后缀是否是参数指定的String
对象s的字符序列,其用法如下:

public static void main(String[] args) {boolean a,b,c,d;String tom="天气预报";String jerry = "比赛终止";a=tom.startsWith("天气");//a的值为trueb=jerry.startsWith("天气");//b的值为flasec=tom.endsWith("终止");//c的值是falsed=jerry.endsWith("终止");//d的值是trueSystem.out.println("a: "+a);System.out.println("b: "+b);System.out.println("c: "+c);System.out.println("d: "+d);
}

1.2.5.public int compareTo(String s)

此方法为一个按字典序与参数指定的String对象s的字符序列比较大小。
用法如下:

public static void main(String[] args) {String str="adcde";int a,b,c;a = str.compareTo("boy");//小于0b = str.compareTo("aba");//大于0c = str.compareTo("adcde");//等于0System.out.println("a: "+a);System.out.println("b: "+b);System.out.println("c: "+c);
}

补充(字符串大小比较规则):以字符是ASCII值确定,比较规则是,从第一个字符开始,顺次向后比较直到出现不同的字符为止,然后以第一个不同的字符的ASCII值比较大小确定,例如:"abc"和"abadfg"相比较,由于前两个字符相同,且第三个字符不同,一个为’c’,一个为’a’,由于c的ASCII码比a的大,所以这两个字符串的比较结果是:“abc”>“abadfg”。

1.2.6.public boolean contains(String s)

此方法是判断当前String对象的字符序列是否包含参数s的字符序列。
用法如下:

public static void main(String[] args) {String tom="student";boolean a,b;a = tom.contains("stu");//的值是trueb = tom.contains("ol");//的值是falseSystem.out.println("a: "+a);System.out.println("b: "+b);
}

1.2.7.public int indexOf(String s)

public int lastIndexOf(String s)

indexOf用于检索首次出现s的字符序列的位置。
lastIndexOf检索最后出现s的字符序列的位置,若没有检索到则返回-1。
若想指定开始检索的位置,则有indexOf(String s,int startpoint)和lastIndexOf(String s,int startpoint),取值后面的int startpoint为开始检索的位置。
用法如下:

public static void main(String[] args) {String tom="I am a good cat";int a,b,c,d;a=tom.indexOf("I");b=tom.indexOf("a");c=tom.indexOf("good",2);d=tom.indexOf("good",8);System.out.println("a: "+a);System.out.println("b: "+b);System.out.println("c: "+c);System.out.println("d: "+d);
}

注意:String对象的字符序列中的转义字符是一个字符,例如\n代表回行。路径表示的\也是一个字符。

1.2.8.public String substring(int startpoint)

此方法用于获取一个新的String对象,新对象的字符序列是复制当前String对象字符序列的startpoint开始到最后位置上的字符所得的字符序列。用法如下:

public static void main(String[] args) {String tom="I like football";String str = tom.substring(1);//str的字符序列为" like football"System.out.println("str: "+str);
}

还有substring(int start,int end)方法同上,但它是复制从start到end-1区间的字符。例如:

String tom="I like football";
String str = tom.substring(2,6);//str的字符序列为"like"

1.3.String的使用场景

1.3.1.字符串常量的使用

public class Exa01 {public static void main(String[] args) {String s1,s2;s1="你好";s2="你好";// 则s1==s2的值为trueSystem.out.println(s1==s2);}
}

也就是说,我们使用上面的方式给字符串进行赋值的时候,当赋的值相同的时候,分配的内存地址也一样。

1.3.2.字符串的并置

String对象可以用"+"进行并置运算,即首尾相接得到一个新的String对象。
例如:

public class Exa02 {public static void main(String[] args) {String you="你";String me="我";String testOne;testOne=you+me;//testOne为"你我"System.out.println(testOne);System.out.println(you.hashCode());System.out.println(me.hashCode());System.out.println(testOne.hashCode());}
}

1.3.3.字符串与基本数据的转换

1)基本类型数据到字符串的转换
可以使用以下方法:
public static String valueOf(byte n)
public static String valueOf(int n)
…依此类推,只需改变后面的数据类型就可以了。
例如:

public class Exa03 {public static void main(String[] args) {//浮点型到StringString str = String.valueOf(1235434.345);System.out.println("str: "+str);}
}

2)字符串到数据的转换
例如:

public class Exa03 {public static void main(String[] args) {//浮点型到StringString str=String.valueOf(1235434.345);System.out.println("str: "+str);//String 到 基本类型int x;String s="234";x=Integer.parseInt(s);//可以根据需要将parseInt中的Int改为其他数据类型System.out.println(x);}
}

1.3.4.对象的字符串表示

Object类有一个public String toString()方法,此方法可以使一个对象通过调用该方法获得该对象的字符串表示。此方法的一般返回形式为:创建对象的类的名字@用字符串表示的对象的引用,但是我们可以重写该方法让对象的toString方法输出我们想要它输出的信息。
例子:

public class Exa04 {public static void main(String args[]){Date date=new Date();System.out.println(date.toString());TV tv=new TV();tv.setPrice(5345);System.out.println(tv.toString());}
}class TV{double price;public void setPrice(double m){price=m;}public String toString(){String oldStr=super.toString();return oldStr+"\n这是电视机,价格是:"+price;}
}

1.3.5.字符串与字符数组,字节数组

1)字符串与字符数组
String类提供了将String对象的字符序列存放到数组中的方法:
public void getChar(int start,int end,char c[],int offset)
此方法可将当前String对象的字符序列的一部分字符复制到参数c指定的数组中,将字符序列中从位置start到end-1位置上的字符复制到数组c中,并从数组c的offset处开始存放这些字符。
另外,还有一个简练地将String对象的字符序列的全部字符存放在一个字符数组的方法:
public char[] toCharArray();
该方法返回一个字符数组,该数组的长度与String对象的字符序列长度相等(第i个单元中的字符刚好为第i个字符)
使用实例如下:

public class Exa05 {public static void main(String args[]){char[] a,c;String s="1945年8月15日是抗战胜利日";a = new char[4];s.getChars(11,15,a,0);System.out.println(a);c="十一长假期间,学校都放假了".toCharArray();System.out.println(c);}
}

2)字符串与字节数组
String类的一个构造方法String(byte[])用指定的字节数组构造一个String对象。
String(byte[],int offset,int length)构造方法用指定的字节数组的一部分,即从数组的起始位置offset开始去length个字节,构造一个String对象。
public byte[] getBytes()方法使用平台默认的字符编码,将当前的String对象的字符序列存放到字节数组中,并返回数组的引用。
例子:

public class Exa05 {public static void main(String args[]){char[] a,c;String s="1945年8月15日是抗战胜利日";a = new char[4];s.getChars(11,15,a,0);System.out.println(a);c="十一长假期间,学校都放假了".toCharArray();System.out.println(c);//String 与 bytebyte d[]="javaHello".getBytes();//字符串转为字节数组System.out.println("数组d的长度:"+ d.length);System.out.println(d);String s1=new String(d,6,2);//字节数组转字符串System.out.println(s1);//输出"好"s1=new String(d,0,6);System.out.println(s1);//输出"java你"}
}

3)字符串的加密算法
我们可以使用一个String对象password的字符序列作为密码对另一个String对象SourceString的字符序列进行加密。规则:
char[] p= password.toCharArray();
假设数组p的长度为n,那么就将待加密的sourceString的字符序列按顺序以n个字符为一组(最后一组中的字符可以小于n),对每一组的字符用数组p的对应字符做加法运算,这样的简易加密可以应对简单的安全场景。
实例:

public class Exa05_3 {public static void main(String[] args) {//String 加密String password = "hello world";int key = 20;char[] p = password.toCharArray();for(int i=0;i<p.length;i++){p[i]+=key;}System.out.println(p);for(int i=0;i<p.length;i++){p[i]-=key;}System.out.println(p);}
}

1.3.6.正则表达式及字符串的替换和分解

1)正则表达式
正则表达式是一个String对象的字符序列,该字符序列中含有具有特殊意义的字符,这些特殊字符称为元字符,如"\dcat"中的\d代表0~9中任意一个数。
String对象调用 public boolean matches(String regex) 方法可判断当前String对象的字符序列是否和regex指定的正则表达式匹配。(正则表达式可用来进行高效过滤)

public class Exa06_1 {public static void main(String[] args) {String str = "0cat";boolean is = str.matches("\\dcat");System.out.println(str+"是否符合正则表达式:\\\\dcat :"+is);}
}

2)字符串的替换
String对象可调用 public String replaceAll(String regex,String replacement) 方法返回一个新的String对象。这个新对象的字符序列是把当前String对象的字符序列中所有和参数regex匹配的子字符序列,用参数replacement的字符序列替换后得到字符序列。例如:
String str=“12hello567bird”.replaceAll(“[a-zA-a]+”,“你好”);
此操作是将字符序列(即12hello567bird)中所有英文字符替换为"你好",即str为"12你好567你好"。

public class Exa06_2 {public static void main(String[] args) {String str="12hello567bird".replaceAll("[a-zA-a]+","你好");System.out.println(str);String str1 = "12hello567bird".replace("hello","你好");System.out.println(str1);}
}

3)字符序列的分隔
String类提供了一个方法public String[] split(String regex).
此方法可使用参数指定的正则表达式regex作为分隔标记分解出当前String对象序列中的单词,并将分解出的单词存放在String数组中。例如:

public class Exa06_3 {public static void main(String[] args) {String str="1949年10月1日,是中华人民共和国成立的日子";String regex=",";String degitWord[] = str.split(regex);for(String str1:degitWord){System.out.println(str1);}String[] strings = str.split("\\D+");for(String str1:strings){System.out.println(str1);}}
}

关于字符串的使用还有很多使用场景,还要学习。
细心的我们仔细看就会发现String类被final修饰了,String是个不可变类。

1.3.7.final关键字

注意:final可以用来修饰类,方法和属性,但不能修饰构造方法。 使用final修饰的类不可被继承,使用final修饰的方法不可被重写,使用final修饰的变量不可被修改。 final修饰的基本类型变量的值不可被改变,但是由final修饰的引用类型变量虽然不可以改变,但它所指向的内存空间中的变量可以改变。

代码地址:
Java基础学习/src/main/java/exa17 · 严家豆/Study - 码云 - 开源中国 (gitee.com)

17.Java常用实用类之String类中常用的方法以及一般应用场景,final关键字相关推荐

  1. Java——String类中的compareTo方法总结

    String类的定义:    java.lang  类 String   java.lang.Object       java.lang.String 所有已实现的接口: Serializable, ...

  2. Java 11:String类中的新方法

    Java 11:String类中的新方法 Java 11没有很多特定于语言的功能.因此,令人惊讶的是,在Java String Class中引入了6种新方法. Java 11 String类新方法 让 ...

  3. java string.substring 参数,Java,String类中的subString()方法,stringsubstring

    Java,String类中的subString()方法,stringsubstring public class TestStringSubString { // main函数 public stat ...

  4. String类中的equals方法与Object类中的equals方法的不同点

    1.首先我们看看Object类中的equals方法 public boolean equals(Object obj) {return (this == obj);} 我们可以看出Object类中判断 ...

  5. C++ STL 迭代器在string类中的使用方法

    //以下例子说明迭代器在string类中的使用方法 #include <iostream> #include <string> #include <algorithm&g ...

  6. String类中的trim()方法实现

    String 类中的 trim() 方法的作用是去除字符串前后的空字符串,自己写代码实现了一个 trim() 方法,并不断优化. 代码 public class MyString {private S ...

  7. Object类 Integer类 Character类 Float类 String类------中的 hashCode() 方法 与 equals(Object obj) 方法的实现的探讨

    hashCode方法 与 equals 方法 Object中的: hashCode() equals() Integer中的 hashCode() equals() Character中的 hashC ...

  8. Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的

    Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...

  9. String类中常用的方法

    https://blog.csdn.net/lz_1014/article/details/86241850

最新文章

  1. Android画图学习总结(四)——Animation(上)
  2. 首发 | 13篇京东CVPR 2019论文!你值得一读~ 技术头条
  3. 没有统计学基础可以学python-机器学习和Python怎样快速掌握?你一定需要这27张清单...
  4. Gradle语法基础解析
  5. 计算机软件大专证,在哪报名大专证怎么报考
  6. ios 系统提示框_ios13终于能屏蔽系统更新了!附详细教程
  7. 微信公众平台开发5:翻译功能
  8. JSP:Java Server Page(1)
  9. OpenSSL在Windows下使用vs2010的编译安装
  10. spring boot +vue用什么记录登录状态_为什么很多Spring Boot开发者放弃了Tomcat
  11. [笔记]深入解析Windows操作系统《二》系统架构
  12. 【0610】【数据结构】【C语言版视频教程】【 全52讲 完整版】
  13. gnome黑屏 ubuntu_Ubuntu 16.04+GTX970 黑屏无法安装解决方法
  14. windows defender卸载_16款仙级软件一定能提高你的Windows舒适度,工作效率翻倍
  15. ClustalX进行多序列比对流程
  16. 安装 office2021
  17. [转]电子产品将标环保使用期限
  18. B站UP主恰饭新思路:产品糅合进有意思的内容里
  19. 推荐系统-概述:基本架构
  20. 实时操作系统概述(推荐) .

热门文章

  1. 惊曝6.24AppCan移动开发大会参展名录,现场礼品超多!
  2. python中 将json数据转化为excel表格
  3. Docker启动nginx容器--搭建网站
  4. 花之语第一期:山茶花
  5. Python 多进程 fork()详解
  6. Spring的下载与配置
  7. 爬虫 | 打印page_source+正则匹配
  8. UnityShader——MaterialCapture材质捕捉效果 (翡翠斧头)
  9. python中for ch in_Python字符串的遍历方式,python
  10. 糯米团—重制“iPhone团购信息客户端”(一)