热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

第五章:数组与字符串(二)

一.字符串(1)字符串的表示java.lang.String代表不可变的字符序列,String用来表示由字符组成的序列,

一.字符串

(1)字符串的表示

java.lang.String 代表不可变的字符序列,String用来表示由字符组成的序列,是最常用的一种引用数据类型,另外一个字符串就是一个字符(Char)类型的数组。

(2)字符串的创建

• 标准:

先声明后使用

• 创建方法

(1)直接赋值:String str = "this  is a string";

(2)创建实体:String s = new String("this is a string");

(3)用字符型数组创建:String(char a[])

char a[] = {'a','b','c'};

String s = new String(char a[])

(4)用字节型数组创建一个字符串:String(byte[]bytes,int offset,int length)

public class StringTest {public static void main(String[] args) {// TODO Auto-generated method stub//1.直接输出String s = "this is a string";String s1 = "this is a string";//2.通过创建实体String s2 = new String("this is a string");String s3 = new String("this is a string");//3.char[]字节型进行传递char a[] = {'a','b','c'};String s4 = new String(a);//4.char[]字符数组取一段输出String s5 =new String(a,0,3);//输出(两种对比方式)System.out.println(s.equals(s1));//trueSystem.out.println(s==s1);//trueSystem.out.println(s2==s3);//falseSystem.out.println(s2.equals(s3));//trueSystem.out.println(s4==s5);//falseSystem.out.println(s4.equals(s5));//true/*summary: * == 是判断两个是否相同,new创建实体后因为实体不相同,所以不相同* equals 是判断两个字符串的内容是不是相同,只看内容* end */}}

(3)字符串常用方法

• public char charAt( int index) 返回字符串中第index个字符

• public int length() 返回字符串的长度

• public int indexOf(String str ) 返回字符串中出现str的第一个位置

• public boolean equals( String another) 比较字符串与another是否完全一样

• public boolean equalsIgnoreCase( String another) 比较字符串与another是否一样(忽略大小写)

• public String replace( char oldChar ,char newChar) 在字符串中用newChar字符替换oldChar字符

• public boolean startsWith(String prefix) 判断字符串是否以prefix字符串开头

• public boolean endsWith(String suffix) 判断字符串是否以suffix字符串开头

• public String toUpperCase() 一个字符串为该字符串的大写形式

• public String toLowerCase() 一个字符串为该字符串的小写形式

• public String substring(int beginIndex) 返回该字符串从beginIndex开始到结尾的子字符串

• public String substring(int beginIndex,int endIndex) 返回该字符串从beginIndex开始到endIndex的子字符串

• public String trim( ) 去掉字符串开头和结尾的空格

• public String [ ] split (String regex)字符串以指定分隔符号分隔,返回分割后的字符串数组

import java.util.*;public class StringTest {public static void main(String[] args) {// TODO Auto-generated method stubString s = "hello World!";String s1 = "Hello World!";System.out.println(s.charAt(2));//输出指定字符System.out.println(s.length());//输出字符串的长度System.out.println(s.indexOf('l'));//输出出现第一个字符的位置System.out.println(s.equals(s1));//查看两个字符串是不是相同System.out.println(s.equalsIgnoreCase(s1));//不区分大小写System.out.println(s.replace('e','a'));//替换字符串中所有相同的值System.out.println(s.startsWith("hello"));//判断是不是以某段字符串开头//注意是字符串,如果是字符会发生报错System.out.println(s.endsWith("World"));//判断是不是以某段字符串结尾//同样必须是字符串,双引号,否则会发生报错System.out.println(s.toUpperCase());//全部转换成大写System.out.println(s.toLowerCase());//全部转换成小写System.out.println(s.substring(2));//返回从输入数字位置到结尾的字符串System.out.println(s.substring(2, 4));//返回两个数字之间的字符串System.out.println(s.trim());//去掉空格形式String s2 = "jason,2,1976";String splitStr[] = s2.split(",");//字符分割for(int i = 0;i}

(4)字符分析器StringTokenizer(不推荐,理解别人写的就行,作为了解)

• 构造方法:StringTokenizer(String str, String delim)

将指定字符串str按字符delim为分隔符进行分解。

• 常用方法:

• hasMoreTokens():检测字符串中是否还有语言符号,若有语言符号就返回true,否则返回false。

• nextToken():逐个获取字符串中的语言符号。 

• countTokens():计算调用了nextToken()方法的次数,用于统计字符串中的语言符号的个数。

(相当于lengh()方法)

(5)Pattern和Matcher类(重点)

• import java.util.regex

• 模式对象和匹配器对象

Pattern pattern1 = Pattern.compile(String regex);

Matcher matcher1 = pattern1.matcher(CharSequence input);

matches( ):字符串匹配,返回true或false

• 查找和替换(Matcher类)

replaceAll(String replacement):替换给定的字符串。

appendReplacement(StringBuffer sb, String replacement):通过字符串缓冲区sb替换 给定的字符

串。

import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class StringTest {public static void main(String[] args) {// TODO Auto-generated method stubPattern pattern1, pattern2,pattern3,pattern4;//模式类Matcher matcher1,matcher2,matcher3,matcher4;//匹配器类//1.匹配判断是不是符合想要的字符串pattern1 = Pattern.compile("^java.*");//里面是正则表达式(目标:源字符串)matcher1 = pattern1.matcher("java是一种程序语言");//匹配规则boolean b = matcher1.matches();System.out.println(b);//2.分割:以多条件分割字符串时pattern2 = Pattern.compile("[, |]");String[] strs = pattern2.split("java Hello World java,hello,,world||Sun");System.out.println("分割字符串");for(int i = 0;i}

(6)正则表达式

元字符:正则表达式规定的一个特殊代码,代表着单词的开头或结尾,也就是单词的分界处,它本身不代表英语中空格、标点符号、换行等单词分隔符,只是用来匹配一个位置。 转义字符: \ ,想查找元字符本身的话,比如 “.” 或者 “*”。例子:\. 或 \*

重复限定符


二.StringBuffer类

(1)简介

• java.lang.StringBuffer 代表可变的字符序列

• StringBuffer类的常见构造方法

StringBuffer() 创建一个不包含字符序列的“空“的StringBuffer对象

StringBuffer(String str)创建一个StringBUffer对象,包含与String对象str相同的字符序列。

(2)具体操作:

• 添加字符序列并返回

• public StringBuffer append(String str)

• public StringBuffer append(char[ ] str,int offset, int len)

• 指定位置插入字符序列并返回

• public StringBuffer insert(int offset, String str)

• public StringBuffer insert(int offset, double d)

• 删除start开始到end-1为止的一段字符序列,并返回

• public StringBuffer delete(int start, int end)

• 将字符序列逆序(重置)

• public StringBuffer reverse()

import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class StringTest {public static void main(String[] args) {// TODO Auto-generated method stubString s ="Mirc";char c[] = {'a','b','c'};StringBuffer sb1 = new StringBuffer(s);System.out.println(sb1);//对字符串进行添加,逐个添加sb1.append("/").append("sun").append("/").append("oracle");StringBuffer sb2 = new StringBuffer("数字");//对char类型进行添加for(int i = 0;i}

(3)其他事项:StringBuffer VS StringBulider

 • StringBuffer 与 StringBuilder 中的方法和功能完全是等价的。

• StringBuffer 采用了synchronized 关键字进行修饰,安全性比较高,不过每次都需要判断锁,效率相对更低。

• 在单线程程序下,StringBuilder效率更快,因为它不需要加锁,不具备多线程安全。


推荐阅读
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • java drools5_Java Drools5.1 规则流基础【示例】(中)
    五、规则文件及规则流EduInfoRule.drl:packagemyrules;importsample.Employ;ruleBachelorruleflow-group ... [详细]
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
  • 求数组中字符串的最长公共前缀(Java)
    求数组中字符串的最长公共前缀(牛客网—牛客题霸算法篇—NC55)题目描述给你一个大小为n的字符串数组strs,其中包含n个字符串,编写一个函数来查找字符串数组中的最长公共前缀,返回 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • 本文整理了Java中java.lang.NoSuchMethodError.getMessage()方法的一些代码示例,展示了NoSuchMethodErr ... [详细]
  • 包含A-Z的字母的消息通过以下规则编码:'A'-1'B'-2'Z'-26给定一个包含数字的编码消息,请确定解 ... [详细]
  • Birthdate ... [详细]
author-avatar
横店东磁何静
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有