• 前言

    接下来将暂时将重心偏移向实际操作,不在将大量时间花费在详细的知识点整理上,将会简略知识总结笔记的记录,加强实际练习的时间,实例练习篇也不再同步进行,我会将部分我觉得重要的源码更新在每节知识点后面,之后两个系列将结合一起,缩短篇幅,精要内容.

字符串时Java语言中经常处理的对像,我们会在各种地方遇到对字符串的处理.在java语言中字符串是作为String类的实例来处理的,是以对象的方式处理字符串.

  • 关于类,及类的实例化对象.

    在前面的学习中我们了解到,在Java中,最基本的构造机制之一就是类,类中可以构造各种方法.而Java就是基于这条件下,通过各种定义好的类,方法.集合成标准类库,以提供给我们使用,类和对象的思想也来自与现实社会结构,自然科学.在分类科学中,统计学等,都有应用,将世界的各种事物,有同种特性的归为一类,比如鸟类,而当面前有一只鸟,它正好属于这个鸟类,那么这只鸟就是鸟类实例化的一个对象,Java语言,就是使用这种思想架构的.关于类及类的对象,在后面再进行深入学习.

涉及到的知识点:

  • 字符串的创建
  • 连接字符串
  • 获取字符串信息
  • 字符串操作
  • 格式化字符串

这里关于字符串的格式化,我另写了一个外篇专门来归纳总结了一下.

格式化字符串


  • 字符串的声明创建

    我们知道了字符串的创建,就是使用String类的构造方法.

    那么我们看一下String类中的Structure(结构体),并找到一系列的String()构造函数.

这下我们知道了,String的构造方法是有多少,除了最简单的String()方法,还提供了各种通过不同数据类的数组构建String对象的方法.

  1. public void sty_createString(){
  2. String astr= "hello"; // 引用字符串常量创建一个字符串变量.
  3. char a[] = {'a','b','c'}; // 字符数组
  4. byte b[] = {2,54,23,12}; // byte型数组
  5. /**
  6. * String(char[])构造方法,将字符数组所有的值连接起来创建一个字符串对象.
  7. * */
  8. String s=new String(a);
  9. /**
  10. * String(char[],int offset,int length)方法
  11. * 抽取字符数组中的一段字符创建字符串对象.offset 表示开始截取的位置.
  12. */
  13. String astr3 = new String(a,1,2);
  14. String astr4 = new String(b);
  15. String astr5 = new String(b,3,2);
  16. }

其中两个int型参数,分别定义了截取数组的开始位置和截取长度.


  • 字符串的连接

    字符串的连接十分简单,在Java语言中,直接使用+就可以连接两个不同的字符串,或者将一个字符串与其他类型的变量连接,其输出结果将调用String类的toString方法,将格式转换为字符串输出.
  1. String str1,str2;
  2. int a=45;
  3. str1="dfgg"+"adf";
  4. str2="asd";
  5. String str3 = str1+str2;
  6. System.ou.println("字符连接"+a);
  • 获取字符串信息

  • 获取字符串长度:String()类的length()方法可以获取字符串长度.

  1. // 获取字符串长度.length()方法
  2. System.out.println("主字符串的长度是"+mstr.length());
  • 字符串查找:

    String类中的indexOf()与lastindexOf()方法都可以搜索字符串中的指定条件的字符和字符串.

    indexOf()方法,返回字符第一次出现的位置,lastindexOf()方法返回字符最后一次出现的位置.当他们没有检索到字符串时,将返回-1.

两个方法的参数都为检索字符串.

  1. // 检索字符串 ,indexOf()方法,lastIndex()方法
  2. int fint = mstr.indexOf(Instr); // 调用检索字符串参数instr.
  3. int lint = mstr.lastIndexOf(Instr);
  4. System.out.println(Instr+"字符(串)首次出现的位置是:"+fint);
  5. System.out.println(Instr+"字符(串)最后出现的位置是:"+lint);
  • 获取指定位置的字符

    String类下的charAt()方法,其参数为int型,表示指定位置的下标,通过下表找到相对应的字符.
  1. //获取指定位置的字符,charAt()方法
  2. char setchar = mstr.charAt(aint);
  3. System.out.println(aint+"位置的字符是:"+setchar);
  • 字符串操作
  • 获取子字符串

    substring()方法,按下标截取字符串,重载有两种方法,表示两种不同的截取方式.
  1. String cstr = mstr.substring(3); // substring(int beginindex),传一个int型参数,表示从参数开始截取到结尾.
  2. String cstr2 = mstr.substring(3,6); // substring(int beginindex,int endindex)两个参数,表示截取两个参数之间的字符串.
  3. System.out.println("从第3开始获取子字符串"+cstr);
  4. System.out.println("截取3到6字符串"+cstr2);
  • 去除首尾空格

    trim()方法为我们提供了去除首位空格的方法,这个方法应当是用在储存信息时去除首尾无意义的多余空格,减少空间占用.
  1. //去除空格,trim()方法可以直接返回字符串的副本,忽略前导和尾部空格.通常用于储存信息时,去除首尾无意义的空格.
  2. String vstr = mstr.trim();
  3. System.out.println("去除首位空格的字符串副本:"+vstr);
  • 字符串替换

    replace()方法给我们提供了字符(转换)的方法,可以将一个新的字符(串)替换掉一个就的字符串,这在一般的文本编辑中时常用到.
  1. //字符串替换,replace()方法可以实现将指定字符或字符串替换成新的字符串.replace(char oldchar,char newchar)
  2. String nstr= mstr.replace('a','b');
  3. String nstr2 = mstr.replace("str","asr");
  4. System.out.println("替换后的字符串"+nstr);
  5. System.out.println("替换后的字符串"+nstr2);
  • 比较两个字符串是否相等

    equals()方法给我们提供了比较两个字符串是否相同的方法,我们知道,两个字符串的比较不能单纯的使用==,这是因为比较运算符比较的是两个字符串的地址是否相同,即使两者的内容相同,两者的内存地址也是不同的,使用比较运算符无法比较两个字符串之间的关系.

    所以需要使用到equals方法.
  1. //判断字符串是否相等,equals()方法用于比较两个字符串是否相等.
  2. System.out.println("字符串是否和abc相等:"+mstr.equals("abc"));
  • 判断字符串的开始和结尾

    startsWith(),endsWith()方法可以判断字符串是否按照参数开始或结尾,这常用与字符串的校验.
  1. //判断字符串的开始结尾 startsWith(),endsWith()方法分别判断字符串是否以指定的形式结束.返回值为布尔类型.
  2. System.out.println("字符串是否以a开始:"+mstr.startsWith("a"));
  3. System.out.println("字符串是否以.结束:"+mstr.endsWith("."));
  • 按字典顺序比较两个字符串

    compareTo()方法为按字典排序比较两个字符串,比较是其unicode值.将两个String对象表示的字符序列与参数字符串所表示的字符串序列进行比较.按字符序列,如果String对象在参数字符序列的前面,返回一个负值,在后面返回一个正值,如果相等,则返回0.
  1. System.out.println("与字符串hyz按字典排序相比较"+mstr.compareTo("hyz"));
  • 字符串大小写转换

    toLowerCase(),toUpperCase()方法.前者将字符串所有字符大写改为小写,后者从小写改为大写.
  1. System.out.println("字符串全转为小写:"+mstr.toLowerCase());
  2. System.out.println("字符串全转为大写:"+mstr.toUpperCase());
  • 字符串分割

    split()方法,重载有两种不同的分割方式,split(String regex)参数为指定的分割符,,split(String regex,int limit),后一个参数是指定分割次数,从前往后.字符串分割会将字符串储存在一个字符串数组里.打印需要遍历它.
  1. String[] regexmstr = mstr.split("e");
  2. String[] regexmstr2 = mstr.split("e",3);
  3. for (String a: regexmstr){ // 对字符串数组遍历打印.
  4. System.out.print("["+a+"]");
  5. }
  6. System.out.println(); // 换行
  7. for (String a:regexmstr2){
  8. System.out.print("["+a+"]");
  9. }

  • 源代码
  1. package day_4_3;
  2. import java.util.Scanner;
  3. /**
  4. * @outhor xiaoshe
  5. * @date 2019/4/3 - @time 18:29
  6. * 字符串的学习
  7. */
  8. public class Sty_String {
  9. public static void main(String[] args) {
  10. Sty_String styString = new Sty_String();
  11. styString.sty_createString();
  12. Scanner scanner = new Scanner(System.in);
  13. System.out.println("输入主字符串:");
  14. String mstr = scanner.nextLine();
  15. System.out.println("输入需要查询的字符(或字符串):");
  16. String instr = scanner.next();
  17. System.out.println("输入指定字符的位置:");
  18. int aint = scanner.nextInt();
  19. styString.Sty_getStringInfo(mstr,instr,aint);
  20. styString.sty_setString(mstr);
  21. }
  22. /**
  23. * String类中的两种构造字符串的方法.
  24. */
  25. public void sty_createString(){
  26. String astr= "hello"; // 引用字符串常量创建一个字符串变量.
  27. char a[] = {'a','b','c'}; // 字符数组
  28. byte b[] = {2,54,23,12}; // byte型数组
  29. /**
  30. * String(char[])构造方法,将字符数组所有的值连接起来创建一个字符串对象.
  31. * */
  32. String s=new String(a);
  33. /**
  34. * String(char a[],int offset,int length)方法
  35. * 抽取字符数组中的一段字符创建字符串对象.offset 开始截取的位置.
  36. */
  37. String astr3 = new String(a,0,2);
  38. String astr4 = new String(b);
  39. String astr5 = new String(b,0,2);
  40. System.out.println(astr+"\n"+astr3+"\n"+astr4+"\n"+astr5);
  41. }
  42. /**
  43. * 获取字符串信息
  44. */
  45. public void Sty_getStringInfo(String mstr ,String Instr,int aint){
  46. // 获取字符串长度.length()方法
  47. System.out.println("主字符串的长度是"+mstr.length());
  48. // 检索字符串 ,indexOf()方法,lastIndex()方法
  49. int fint = mstr.indexOf(Instr);
  50. int lint = mstr.lastIndexOf(Instr);
  51. System.out.println(Instr+"字符(串)首次出现的位置是:"+fint);
  52. System.out.println(Instr+"字符(串)最后出现的位置是:"+lint);
  53. //获取指定位置的字符,charAt()方法
  54. char setchar = mstr.charAt(aint);
  55. System.out.println(aint+"位置的字符是:"+setchar);
  56. }
  57. /**
  58. * 字符串操作
  59. */
  60. public void sty_setString(String mstr){
  61. /**
  62. * 获取子字符串 substring()方法,按下标值截取子字符串,下标是由0开始的.
  63. * substring()方法有两种不同的重载方法,分别代表两种不同的截取方式.
  64. */
  65. String cstr = mstr.substring(3); // substring(int beginindex),传一个int型参数,表示从参数开始截取到结尾.
  66. String cstr2 = mstr.substring(3,6); // substring(int beginindex,int endindex)两个参数,表示截取两个参数之间的字符串.
  67. System.out.println("从第3开始获取子字符串"+cstr);
  68. System.out.println("截取3到6字符串"+cstr2);
  69. //去除空格,trim()方法可以直接返回字符串的副本,忽略前导和尾部空格.通常用于储存信息时,去除首尾无意义的空格.
  70. String vstr = mstr.trim();
  71. System.out.println("去除首位空格的字符串副本:"+vstr);
  72. //字符串替换,replace()方法可以实现将指定字符或字符串替换成新的字符串.replace(char oldchar,char newchar)
  73. String nstr= mstr.replace('a','b');
  74. String nstr2 = mstr.replace("str","asr");
  75. System.out.println("替换后的字符串"+nstr);
  76. System.out.println("替换后的字符串"+nstr2);
  77. //判断字符串是否相等,equals()方法用于比较两个字符串是否相等.
  78. System.out.println("字符串是否和abc相等:"+mstr.equals("abc"));
  79. //判断字符串的开始结尾 startsWith(),endsWith()方法分别判断字符串是否以指定的形式结束.返回值为布尔类型.
  80. System.out.println("字符串是否以a开始:"+mstr.startsWith("a"));
  81. System.out.println("字符串是否以.结束:"+mstr.endsWith("."));
  82. /**
  83. * 按字典顺序比较两个字符串,compareTo()方法为按字典排序比较两个字符串,比较是其unicode值.
  84. * 将两个String对象表示的字符序列与参数字符串所表示的字符串序列进行比较.
  85. * 按字符序列,如果String对象在参数字符序列的前面,返回一个负值,在后面返回一个正值,如果相等,则返回0
  86. */
  87. System.out.println("与字符串hyz按字典排序相比较"+mstr.compareTo("hyz"));
  88. //字母大小写转换,toLowerCase(),toUpperCase()方法.前者将字符串所有字符大写改为小写,后者从小写改为大写.
  89. System.out.println("字符串全转为小写:"+mstr.toLowerCase());
  90. System.out.println("字符串全转为大写:"+mstr.toUpperCase());
  91. //字符串分割split()方法,重载有两种不同的分割方式,split(String regex)参数为指定的分割符,
  92. String[] regexmstr = mstr.split("e");
  93. String[] regexmstr2 = mstr.split("e",3);
  94. for (String a: regexmstr){ // 对字符串数组遍历打印.
  95. System.out.print("["+a+"]");
  96. }
  97. System.out.println(); // 换行
  98. for (String a:regexmstr2){
  99. System.out.print("["+a+"]");
  100. }
  101. }
  102. }

关于String类,就先学习到这些基础和常用的方法了.关于String类的其他众多的方法,我们可以直接查看String类通过structure(结构体)视窗,进行了解.




更新时间:

2019-4-4

1:31

[Java初探04]__字符串(String类)相关的更多相关文章

  1. [java初探10]__关于数字处理类

    前言 在我们的日常开发过程中,我们会经常性的使用到数字类型的数据,同时,也会有众多的对数字处理的需求,针对这个方面的问题,在JAVA语言中.提供解决方法的类就是数字处理类 java中的数字处理类包括: ...

  2. 字符串string的相关应用

    之所以抛弃char* 的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够.字符串长度等等, 而且作为一个泛型类出现,他集成的操作函数足以完成我们大多数情况下 ...

  3. Java入门 - 语言基础 - 14.String类

    原文地址:http://www.work100.net/training/java-string.html 更多教程:光束云 - 免费课程 String类 序号 文内章节 视频 1 概述 2 创建字符 ...

  4. Java String类相关知识梳理(含字符串常量池(String Pool)知识)

    目录 1. String类是什么 1.1 定义 1.2 类结构 1.3 所在的包 2. String类的底层数据结构 3. 关于 intern() 方法(重点) 3.1 作用 3.2 字符串常量池(S ...

  5. Java基础——数组应用之字符串String类

    字符串String的使用 Java字符串就是Unicode字符序列,例如串“Java”就是4个Unicode字符J,a,v,a组成的. Java中没有内置的字符串类型,而是在标准Java类库中提供了一 ...

  6. [Java初探08]__简单学习Java类和对象

    前言 在前面的学习中,我们对面向对象的编程思想有了一个基本的了解,并且简单的了解了类和对象的定义.那么类和对象在Java语言中是如何表现的,这次,就从实际出发,学习一下一下类和对象在Java语言中的使 ...

  7. Java入门篇(五)——Java的字符串/String类

    前面在举例时有出现过String的例子,当时肯定有一部分朋友不知道这个是做什么用的.其实String类是Java中一个比较特殊的类,字符串即String类,它不是Java的基本数据类型之一,但可以像基 ...

  8. Java入门篇(五)——字符串/String类

    前面在举例时有出现过String的例子,当时肯定有一部分朋友不知道这个是做什么用的.其实String类是Java中一个比较特殊的类,字符串即String类,它不是Java的基本数据类型之一,但可以像基 ...

  9. Java字符串String类操作方法详细整理

    关于String类的基本操作,可分为以下几类: 1.基本操作方法 2.字符串比较 3.字符串与其他数据类型之间的转换 4.字符与字符串的查找 5.字符串的截取与拆分 6.字符串的替换与修改 我觉得在整 ...

随机推荐

  1. Java输入输出技术

    输入输出分类     输入流,相对计算机来说是输入的,例如鼠标键盘操作,设备给计算机的信息     输出流,相对计算机来说是输出的,例如屏幕显示,计算机给设备的信息.   具体分类     基本流,I ...

  2. MapReduce编程解析

    MapReduce编程模型之案例 wordcount 输入数据 atguigu atguiguss sscls clsjiaobanzhangxuehadoop 输出数据 atguigu 2banzh ...

  3. 2018/6/29 关于hashmap的总结

    hashMap和ConcurrentHashMap的区别 hashMap内部具体如何实现的 如果hashMap的key是一个自定义的类,怎么办 为什么重写equals还要重写hashcode 一.什么 ...

  4. jdbc的配置(更新中)

    MySQL的 JDBC URL 格式 for  Connector/J 如下例: 格式如下: jdbc:mysql://[host][,failoverhost...][:port]/[databas ...

  5. 使用dbms_profiler包测试存储过程性能

      原文地址 http://hi.baidu.com/edeed/blog/item/345401e9a8851d38b80e2db4.html dbms_profiler用来测试PL/SQL代码非常 ...

  6. java并发的处理方式

    1 什么是并发问题. 多个进程或线程同时(或着说在同一段时间内)访问同一资源会产生并发问题. 银行两操作员同时操作同一账户就是典型的例子.比如A.B操作员同时读取一余额为1000元的账户,A操作员为该 ...

  7. 手机app有了短信验证码还有没必要有图片验证码?

    当然有必要,这里我们来聊一个恶意短信验证的案例,通过这个案例我们就能更好理解短信验证码和图片验证码这两者的关系了. 讨论防止恶意短信验证之前,我们先来看看什么是恶意短信验证及出现的原因. 恶意短信验证 ...

  8. Lerning Entity Framework 6 ------ A demo of using Entity framework with MySql

    Create a new project named MySqlTest Install following packages by right-clicking on the References ...

  9. Mongodb-- python中使用pymongo连接mongodb数据库

    一.使用 通过pip或者pychrm下载pymongo模块 import json from pymongo import MongoClient from bson import ObjectId ...

  10. tomcat单机多实例部署

    最近在面试的过程中,一家公司在面试时提到了有关tomcat单机多实例部署的提问, 正好, 之前使用IntelliJ IDEA 13.1.4这款IDE开发web项目,在开发的过程中,因为有多个web项目 ...