API和正则表达式

第一章 String & StringBuilder
String类用类final修饰,不能被继承,String字符串被创建后永远无法被改变,但字符串引用可以重新赋值,改变引用的指向
java字符串中任何一个字符对应16位(2个字节)的定长Unicode编码;

java为了提高性能,静态字符串(字面量、常量、常量连接的结果)在常量池中创建,并尽量使用同一个对象,重用静态字符串
对于重复出现的字符串直接量,JVM会首先在常量池中查找,如果存在则返回该对象;
*str.length();获取字符串中的字符的个数;
*int str.indexOF(String str)//在字符串中检测str第一次出现的位置,返回int型下标值,找不到返回-1值
*int indexOf(String str,int fromIndex)//从字符串的fromIndex位置开始检索str第一次出现的位置,返回下标
*int lastIndexOf(String str,int from)//str在字符串中最后一次出现的位置
面试题:
String str ="java,我爱java,我热爱java,我非常热爱java";
//问:子字符串java出现的次数

int index=0;//java出现的下标
int count=0;//java出现的次数
while((index=str.indexOf("java",index))!=-1){
System.out.println("index="+index);
count++;
index+="java".length();
}
System.out.println(count);

*String substring(int beginIndex)//截取从指定下标开始到字符串结尾结束的子字符串,返回值为String类型
*String substring(int beginIndex,int endIndex);//截取从指定下标开始到指定下标结束的子字符串,返回值为String类型
(java中很多方法经常出现两个临界值,通常都是包头不包尾)
【例】
//截取第一个逗号到最后一个逗号之间的字符串

int beginIndex=str.indexOf(",");
int endIndex=str.lastIndexOf(",");
String sub = str.substring(beginIndex+1, endIndex);
System.out.println(sub);

注意:java字符串中:中文输入法的","和英文输入法的","是不同的,写串了可导致查询结果为-1(即查询不到)

*str.trim();//去掉字符串str开头和结尾处的空白字符格

*char charAt(int index);//返回指定下标处的char字符

*str.startsWith(String prefix);//判断str字符串是否以指定前缀prefix开头,返回boolean型判断结果

*str.endsWith(String suffix);//判断str字符串是否以指定后缀suffix结尾,返回boolean型判断结果

StringBuilder字符串生成器
StringBuilder sub = new StringBuilder();//初始可放16个字符
* .append(String str);用于实现大量字符串拼接
* .insert(int offset,String str),在指定位置插入指定内容
* .delete(int start,int end);删除指定位置开始到指定位置结束之间的字符串
* .reverse(String str);完成字符串的反转

-------------------------------------------------------------------------------
第二章 Regex正则表达式 & Object类 & 包装类

RegularExpression正则表达式
定义:一串特定字符组成的“规则字符串”,用于描述/记录文本规则。
意义:方便实现对字符串进行匹配、查找、替换等复杂操作。

1)字符集合:
[abc] :a,b,c中的任何一个
[^abc] :除了a,b,c的任意字符
[a-z] :a到z中的任意一个字符
[a-zA-Z0-9] :a到zA到Z0~9中任意一个字符
[a-z&&[^bc]]:a到z除了b和c以外的任意一个字符,&&表示与的关系;

2)预定义字符集
. :任意一个字符
\d :任意一个数字字符,相当于[0-9];
\D :非数字字符,相当于[^0-9];
\w :单词字符,相当于[a-zA-Z_0-9];
\W :非单词字符
\s :空白字符
\S :非空白字符

3)数量词
X? :表示0个或1个
X* :表示0个或任意多个
X+ :表示1到任意多个
X{n} :表示n个X
X{n,m} :表示n到m个X

4)分组(),将一系列正则表达式看作一个整体,可以使用|表示或的关系
\字符转义
^ $ :边界匹配,^变是字符串开始,$表示字符串结束

String正则API

1)str.matches(regex):
将一个字符串与正则表达式进行匹配,匹配成功返回true,否则返回false
* 用户输入一个字符串,对此字符串进行校验
* 必须满足第一个字符是abc的任意一个字符
* 第二个字符是任意数字

Scanner sc=new Scanner(System.in);
boolean flag;
do {
System.out.println("请输入用户名,以a/b/c开头,包含数字");
String str =sc.next();
String regex="[abc][0-9]{2,8}";
flag = str.matches(regex);
if(flag==false) {System.out.println("输入错误,请重新输入:")
}else {System.out.println("正确:");}
}while(flag==false);

str.matches(regex)默认自带^$,在匹配时一定是String.matches(regex)

判断email格式是否合法:
String regex1 ="^[a-zA-Z0-9_.-][email protected]([a-zA-Z0-9]+\\.)+[a-zA-Z]{2,4}$";

2)str.split(String regex);返回值为字符串数组
String [] s = email.split("[[email protected]\\.]");
System.out.println(Arrays.toString(s));
//[mr, w123, baidu, com, cn]

3)replaceAll(String regex,String replacement)
//将字符串中符合正则表达式regex规则的字符串替换成replacement
String s2="中国,没有国中之国";
String s3=s2.replaceAll("中国","*");
System.out.println(s3);
//*,没有国中之国

Object(鼻祖类)
如果定义一个Java类时没有使用extends关键字声明其父类,则其父类默认为:java.lang.Object类
Object类型的引用变量可以指向任何类型对象。

1)toString()重写
* Object类中的toString()默认返回一个对象的字符串表示,
* 而这个字符串在实际开始中没有什么具体意义,通常强烈建议
* 在子类中重写toString()使其具有具体的意义
* 重写规则:通常此方法将对象的属性值作为字符串返回
/*
* 在内存中,point是引用,保存的对象的地址值
* 打印输出引用时会调用该类的toString(),如果该类没有
* 那么,调用父类中的toString()
* Object类中的toString()作用:返回一个表示该对象的字符串
* 字符串形式:类名@散列码(十六进制的整数)
* 散列码是根据地址值经过算法计算得出的一个整数
*/
Point point = new Point(10, 20);
System.out.println(point); //此对象表示的点的坐标

2)equals()重写
* Object类中的equals()方法作用等同于==
* 用于比较两个引用是否指向同一个对象
* 在实际开发中,通常建议根据实际业务重写equals方法,使得
* 对象之间的比较更具有实际意义。
* javaAPI中的很多类已经重写了equals(),如String

包装类
在进行类型转换的范畴内,有一种特殊的转换,需要将int这样的基本类型转换为对象;
所有基本类型都有一个与之相对应的类,即包装类(wrapper)
包装类是不可变类,在构造了包装类对象后,不允许更改包装在其中的值
包装类是final的,不能定义他们的子类
Number抽象类,是Byte,Double,Float,Integer,Long,Short类的父类;
Number的子类必须提供方法(将表示的数值转换为byte,double,float,int,long,short等基本类型)
intValue() 以int形式返回指定的数值
doubleValue() 以double形式返回指定的数值
floatValue() 以float形式返回指定的数值
Number n = 123;
Number m=123.45;
int a =n.intValue();//a=123;
double d =n.doubleValue();//d=123.0

int a1 =m.intValue();//a1=123;
double d1 =m.doubleValue();//d1=123.45;

1)Integer常用功能:
表示常量:
static int MAX_VALUE值为2的31次方减1;表示int类型能表示的最大值
static int MIN_VALUE值为-2的31次方;表示int类型能表示的最小值
2)Integer静态方法parseInt:用于将字符串传为int

Integer i =new Integer(3);//将3转换为对象i
double d=i.doubleValue();//将对象中的值用于计算,
System.out.println(d);//3.0
Double d1 =Double.valueOf(d);//将数字表示的值用于面向对象开发

/*
* parseInt(String),将String转换为int类型
* 转换的前提是该String类型的值一定是整数类型
* 否则失败,抛出异常
*/

String str ="123";
int s1=Integer.parseInt(str);
System.out.println(s1+4);//123+4=127
str="a123";
//s1=Integer.parseInt(str);
System.out.println(s1);//NumberFormatException数字格式异常

原文地址:https://www.cnblogs.com/shijinglu2018/p/9153217.html

时间: 2024-10-09 01:19:24

API和正则表达式的相关文章

Java基础学习笔记十三 常用API之正则表达式、Date、DateFormat、Calendar

正则表达式 正则表达式(英语:Regular Expression,在代码中常简写为regex).正则表达式是一个字符串,使用单个字符串来描述.用来定义匹配规则,匹配一系列符合某个句法规则的字符串.在开发中,正则表达式通常被用来检索.替换那些符合某个规则的文本. 正则表达式的匹配规则 参照帮助文档,在Pattern类中有正则表达式的的规则定义,正则表达式中明确区分大小写字母.我们来学习语法规则. 正则表达式的语法规则: 字符:x 含义:代表的是字符x 例如:匹配规则为 "a",那么需要

Java核心API -- 3(正则表达式)

1.正则表达式 正则表达式就是使用一系列预定义的特殊字符来描述一个字符串的格式规则,然后使用该格式规则匹配某个字符串是否符合格式要求. 1)"."和"\" "."点儿,在正则表达式中表示任意一个字符. "\"在正则表达式中是转意字符,当我们需要描述一个已经被正则表达式使用的特殊字符时,我们就可以通过使用"\"将其转变为原本的意思. "\"在正则表达式中也有一些预定义的特殊内容: \d:表

Java 正则表达式(精华)

英文:Jakob Jenkov译文:严亮链接:ifeve.com/java-regex/ Java 提供了功能强大的正则表达式API,在java.util.regex 包下.本教程介绍如何使用正则表达式API. 正则表达式 一个正则表达式是一个用于文本搜索的文本模式.换句话说,在文本中搜索出现的模式.例如,你可以用正则表达式搜索网页中的邮箱地址或超链接. 正则表达式示例 下面是一个简单的Java正则表达式的例子,用于在文本中搜索 http:// String text = "This is th

计算机程序的思维逻辑 (89) - 正则表达式 (中)

上节介绍了正则表达式的语法,本节介绍相关的Java API. 正则表达式相关的类位于包java.util.regex下,有两个主要的类,一个是Pattern,另一个是Matcher.Pattern表示正则表达式对象,它与要处理的具体字符串无关.Matcher表示一个匹配,它将正则表达式应用于一个具体字符串,通过它对字符串进行处理. 字符串类String也是一个重要的类,我们在29节专门介绍过String,其中提到,它有一些方法,接受的参数不是普通的字符串,而是正则表达式.此外,正则表达式在Jav

java正则表达式语法详解及其使用代码实例

原文地址 译者序(下载代码) 正则表达式善于处理文本,对匹配.搜索和替换等操作都有意想不到的作用.正因如此,正则表达式现在是作为程序员七种基本技能之一*,因此学习和使用它在工作中都能达到很高的效率. 正则表达式应用于程序设计语言中,首次是出现在 Perl 语言,这也让 Perl 奠定了正则表达式旗手的地位.现在,它已经深入到了所有的程序设计语言中,在程序设计语言中,正则表达式可以说是标准配置了. Java 中从 JDK 1.4 开始增加了对正则表达式的支持,至此正则表达式成为了 Java 中的基

你真的了解如何将 Nginx 配置为Web服务器吗

阅读之前,建议先阅读初识 Nginx. 之后,我们来了解一下 Nginx 配置. 抽象来说,将 Nginx 配置为 Web 服务器就是定义处理哪些 URLS 和如何处理这些URLS 对应的请求.具体来说,就是定义一些虚拟服务器(Virtual Servers),控制具有特定 IP 和域名的请求. 更具体的来说, Nginx 通过定义一系列 locations 来控制对 URIS 的选择.每一个 location 定义了对映射到自己的请求的处理场景:返回一个文件或者代理请求,或者根据不同的错误代码

认识CoreData—使用进阶

之前两篇文章都比较偏理论,文字表达比较多一些,但都是干货!学习时先理解理论知识,才能更好的帮助后面的理解.在这篇文章中,将会涉及关于CoreData的一些复杂操作,这些操作会涉及分页查询.模糊查询.批处理等高级操作.通过这些操作可以更好的使用CoreData,提升CoreData性能.文章中将会出现大量示例代码,通过代码的方式更有助于理解. 文章内容还会比较多,希望各位耐心看完.文章中如有疏漏或错误,还请各位及时提出,谢谢! NSPredicate 概述 在iOS开发过程中,很多需求都需要用到过

java-ApiValueDemo

关于API相关正则表达式,各方法的使用 1 package com.example; 2 import java.util.Arrays; 3 import java.util.Scanner; 4 /** 5 * ApiDemo.java Description:正则表达式的使用 6 * 7 * @author raizoo 8 * Created on 17-7-18 上午12:10 9 * @version 1.0 10 * @since JDK8.0 11 * 12 * @thows E

Nginx是如何配置为 Web 服务器的【转载】

详解 Nginx是如何配置为 Web 服务器的 林涛 发表于:2016-11-29 23:23 分类:WebServer 标签:Nginx,web,web服务器 521次 抽象来说,将 Nginx 配置为 Web 服务器就是定义 处理哪些 URLS 和 如何处理这些 URLS 对应的请求 .具体来说,就是定义一些虚拟服务器(Virtual Servers),控制具有特定 IP 和域名的请求. 更具体的来说, Nginx 通过定义一系列 location s 来控制对 URIS 的选择.每一个 l