• 前言

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

字符串时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. linux搭建简易版本的FastDFS服务器

    开发环境:centos7环境 搭建FastDFS集群搭建非常复杂,对于初期学习FastDFS来说,搭建个单机版的作为入门更为实际一些. 首先感谢“在京奋斗者“”博主的详细搭建过程,附上博客地址http ...

  2. hdu 4704 Sum 【费马小定理】

    题目 题意:将N拆分成1-n个数,问有多少种组成方法. 例如:N=4,将N拆分成1个数,结果就是4:将N拆分成2个数,结果就是3(即:1+3,2+2,3+1)--1+3和3+1这个算两个,则这个就是组 ...

  3. hdu 5090 数列贪心加成1~n

    http://acm.hdu.edu.cn/showproblem.php?pid=5090 给一段长度为n数列,问能否给任意个数加上k的倍数,使得加完之后恰好只有1~n 贪心,先排序,依次加出1~n ...

  4. brctl命令

    有五台主机.其中一台主机装有linux ,安装了网桥模块,而且有四块物理网卡,分别连接同一网段的其他主机.我们希望其成为一个网桥,为其他四台主机(IP分别为192.168.1.2 ,192.168.1 ...

  5. JAVA的初始化顺序

    这里主要是介绍JAVA的类的初始化顺序,比较基础:主要是以例子演示为主: 例子一: 1 package com.cnblog.GDUTtiantian; 2 3 /** 4 * 5 * @author ...

  6. Oracle EBS主界面的Top Ten List

    http://blog.csdn.net/pan_tian/article/details/7749128 Top Ten List的数据保存在表FND_USER_DESKTOP_OBJECTS中,登 ...

  7. Windows 7/Vista下安装Oracle Developer Suit遇到的几个问题

    http://blog.csdn.net/pan_tian/article/details/8016318 Oracle Developer Suite (ODS) 10g是在Windows 7/Vi ...

  8. 利用C#迭代器的一个杨辉三角示例

    身边有个朋友在跟着廖雪峰的教程学习python,途中遇到了"在Python中使用迭代器打印杨辉三角"的问题,我在帮忙解决的同时顺手写了个简单的C#版本以供补充. internal ...

  9. 那些好用的阅读软件(Windows & Android)

    此文章已添加预览与更新,请您移步到我的新博客 http://t.cn/EXCiCTE 整个2018年就没写过几篇博文,所以写一篇文章算过年啦-哈哈-有部分软件因为年代原因,官网已经消失.或者网络上的资 ...

  10. WPF概述(硬件加速及分辨率无关性)

    一.名词解释 WPF(Windows Presentation Foundation),直译为Windows表示基础,是专门用来编写程序表示层的技术和工具. 大部分程序都是多层架构的,一般至少包含三层 ...