• 前言

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

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

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

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

涉及到的知识点:

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

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

格式化字符串


  • 字符串的声明创建

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

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

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

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

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


  • 字符串的连接

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 字符串大小写转换

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

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

  • 源代码
package day_4_3;
import java.util.Scanner; /**
* @outhor xiaoshe
* @date 2019/4/3 - @time 18:29
* 字符串的学习
*/
public class Sty_String { public static void main(String[] args) {
Sty_String styString = new Sty_String();
styString.sty_createString(); Scanner scanner = new Scanner(System.in);
System.out.println("输入主字符串:");
String mstr = scanner.nextLine();
System.out.println("输入需要查询的字符(或字符串):");
String instr = scanner.next();
System.out.println("输入指定字符的位置:");
int aint = scanner.nextInt();
styString.Sty_getStringInfo(mstr,instr,aint);
styString.sty_setString(mstr);
} /**
* String类中的两种构造字符串的方法.
*/
public void sty_createString(){
String astr= "hello"; // 引用字符串常量创建一个字符串变量.
char a[] = {'a','b','c'}; // 字符数组
byte b[] = {2,54,23,12}; // byte型数组
/**
* String(char[])构造方法,将字符数组所有的值连接起来创建一个字符串对象.
* */
String s=new String(a); /**
* String(char a[],int offset,int length)方法
* 抽取字符数组中的一段字符创建字符串对象.offset 开始截取的位置.
*/
String astr3 = new String(a,0,2);
String astr4 = new String(b);
String astr5 = new String(b,0,2);
System.out.println(astr+"\n"+astr3+"\n"+astr4+"\n"+astr5);
}
/**
* 获取字符串信息
*/
public void Sty_getStringInfo(String mstr ,String Instr,int aint){ // 获取字符串长度.length()方法
System.out.println("主字符串的长度是"+mstr.length());
// 检索字符串 ,indexOf()方法,lastIndex()方法
int fint = mstr.indexOf(Instr);
int lint = mstr.lastIndexOf(Instr);
System.out.println(Instr+"字符(串)首次出现的位置是:"+fint);
System.out.println(Instr+"字符(串)最后出现的位置是:"+lint);
//获取指定位置的字符,charAt()方法
char setchar = mstr.charAt(aint);
System.out.println(aint+"位置的字符是:"+setchar);
}
/**
* 字符串操作
*/
public void sty_setString(String mstr){
/**
* 获取子字符串 substring()方法,按下标值截取子字符串,下标是由0开始的.
* substring()方法有两种不同的重载方法,分别代表两种不同的截取方式.
*/ String cstr = mstr.substring(3); // substring(int beginindex),传一个int型参数,表示从参数开始截取到结尾.
String cstr2 = mstr.substring(3,6); // substring(int beginindex,int endindex)两个参数,表示截取两个参数之间的字符串.
System.out.println("从第3开始获取子字符串"+cstr);
System.out.println("截取3到6字符串"+cstr2); //去除空格,trim()方法可以直接返回字符串的副本,忽略前导和尾部空格.通常用于储存信息时,去除首尾无意义的空格.
String vstr = mstr.trim();
System.out.println("去除首位空格的字符串副本:"+vstr); //字符串替换,replace()方法可以实现将指定字符或字符串替换成新的字符串.replace(char oldchar,char newchar)
String nstr= mstr.replace('a','b');
String nstr2 = mstr.replace("str","asr");
System.out.println("替换后的字符串"+nstr);
System.out.println("替换后的字符串"+nstr2); //判断字符串是否相等,equals()方法用于比较两个字符串是否相等.
System.out.println("字符串是否和abc相等:"+mstr.equals("abc")); //判断字符串的开始结尾 startsWith(),endsWith()方法分别判断字符串是否以指定的形式结束.返回值为布尔类型.
System.out.println("字符串是否以a开始:"+mstr.startsWith("a"));
System.out.println("字符串是否以.结束:"+mstr.endsWith(".")); /**
* 按字典顺序比较两个字符串,compareTo()方法为按字典排序比较两个字符串,比较是其unicode值.
* 将两个String对象表示的字符序列与参数字符串所表示的字符串序列进行比较.
* 按字符序列,如果String对象在参数字符序列的前面,返回一个负值,在后面返回一个正值,如果相等,则返回0
*/
System.out.println("与字符串hyz按字典排序相比较"+mstr.compareTo("hyz")); //字母大小写转换,toLowerCase(),toUpperCase()方法.前者将字符串所有字符大写改为小写,后者从小写改为大写.
System.out.println("字符串全转为小写:"+mstr.toLowerCase());
System.out.println("字符串全转为大写:"+mstr.toUpperCase()); //字符串分割split()方法,重载有两种不同的分割方式,split(String regex)参数为指定的分割符,
String[] regexmstr = mstr.split("e");
String[] regexmstr2 = mstr.split("e",3);
for (String a: regexmstr){ // 对字符串数组遍历打印.
System.out.print("["+a+"]");
}
System.out.println(); // 换行
for (String a:regexmstr2){
System.out.print("["+a+"]");
}
}
}

关于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. 轻松建立Silverlight开发环境

    创建Silverlight 4开发环境,微软提供最简单的方法是使用Web Platform Installer,进行“一键安装”, 下载安装后,Web Platform Installer会自动检测哪 ...

  2. Ng第十七课:大规模机器学习(Large Scale Machine Learning)

    17.1  大型数据集的学习 17.2  随机梯度下降法 17.3  微型批量梯度下降 17.4  随机梯度下降收敛 17.5  在线学习 17.6  映射化简和数据并行 17.1  大型数据集的学习 ...

  3. info AI drive

    Who we look for Here at comma, we don't care about the source of your education or your traditional ...

  4. (打表+优化)简单的求和 -- zzuli -- 1783

    http://acm.zzuli.edu.cn/problem.php?id=1783 1783: 简单的求和 Time Limit: 1 Sec  Memory Limit: 128 MBSubmi ...

  5. javascript 模块化编程

    The module pattern is a common JavaScript coding pattern. It’s generally well understood, but there ...

  6. POJ3020 Antenna Placement

    Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9586   Accepted: 4736 ...

  7. jQuery插件初级练习1

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  8. RxSwift学习笔记4:disposeBag/scheduler/AnyObserver/Binder

    let disposeBg = DisposeBag() //直接在创建 //在 subscribe 方法中创建 let ofObserval = Observable.of("a" ...

  9. VS动态修改App.config中遇到的坑(宿主进程问题)

    昨天遇到了很奇怪的一个bug,具体描述如下: 这个系统是c/s架构的针对多个工厂做的资材管理系统,由于有很多个工厂,每个工厂都有自己的服务器.所以需要动态的改变连接字符串去链接不同的服务器. 由于这个 ...

  10. Shell - 简明Shell入门05 - 条件语句(Case)

    示例脚本及注释 #!/bin/bash var=$1 # 将脚本的第一个参数赋值给变量var case $var in right) echo "Right!";; wrong) ...