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_.-]+@([a-zA-Z0-9]+\\.)+[a-zA-Z]{2,4}$";
2)str.split(String regex);返回值为字符串数组
String [] s = email.split("[_@\\.]");
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数字格式异常
API和正则表达式的更多相关文章
- 详解Java API之正则表达式
正则表达式描述的是一种规则,符合这种限定规则的字符串我们认为它某种满足条件的,是我们所需的.在正则表达式中,主要有两种字符,一种描述的是普通的字符,另一种描述的是元字符.其中元字符是整个正则表达式的核 ...
- Java基础学习笔记十三 常用API之正则表达式、Date、DateFormat、Calendar
正则表达式 正则表达式(英语:Regular Expression,在代码中常简写为regex).正则表达式是一个字符串,使用单个字符串来描述.用来定义匹配规则,匹配一系列符合某个句法规则的字符串.在 ...
- Java API 之 正则表达式
一.基本概念 在项目中我们经常性做的一件事是“匹配”字符串 比如: 1.我们要验证用户输入的手机号是否合法? 2.验证设置的密码是否符合规则? 3.或者替换指定字符串中的一些内容. 这么一看,似乎正则 ...
- 常用API(正则表达式、Date、DateFormat、Calendar)
常用API 今日内容介绍 u 正则表达式 u Date u DateFormat u Calendar 第1章 正则表达式 1.1 正则表达式的概念 正则表达式(英语:Regular Expressi ...
- Java 正则表达式详解
Java 提供了功能强大的正则表达式API,在java.util.regex 包下.本教程介绍如何使用正则表达式API. 正则表达式 一个正则表达式是一个用于文本搜索的文本模式.换句话说,在文本中搜索 ...
- java正则表达式语法详解及其使用代码实例
原文地址 译者序(下载代码) 正则表达式善于处理文本,对匹配.搜索和替换等操作都有意想不到的作用.正因如此,正则表达式现在是作为程序员七种基本技能之一*,因此学习和使用它在工作中都能达到很高的效率. ...
- Java开发知识之Java的正则表达式
目录 正则表达式 一丶什么是正则表达式 1.正则表达式简介 2.无正则表达式判断代码 3.使用正则表达式代码. 二丶正则表达式API 三丶正则表达式语法格式 1.正则表达式语法 正则表达式 一丶什么是 ...
- Java编程的逻辑 (89) - 正则表达式 (中)
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- Java 正则表达式(精华)
英文:Jakob Jenkov译文:严亮链接:ifeve.com/java-regex/ Java 提供了功能强大的正则表达式API,在java.util.regex 包下.本教程介绍如何使用正则表达 ...
随机推荐
- Centos7搭建vsftp服务器
环境查看 安装vsftp软件 yum -y install vsftpd 修改配置文件/etc/vsftpd/vsftpd.conf (其余配置保持默认即可) anonymous_enable=NO ...
- Kettle 4.2源码分析第四讲--KettleJob机制与Database插件简介(含讲解PPT)
1. Job机制 一个job项代表ETL控制流中的一项逻辑任务.Job项将会顺序执行,每个job项会产生一个结果,能作为别的分支上job项的条件. 图 1 job项示例 1.1. Job类图简介 图 ...
- Oracle安装部署之Oracle 10g在redhat5下的安装
[root@localhost ~]# groupadd dba -g 111 [root@localhost ~]# groupadd oinstall -g 110 [root@localhost ...
- CCO2017 Vera and Trail Building 构造+图论
正解:构造+图论 解题报告: 找了半天才找到的传送门! 先简要表达下题意 一个图上,如果存在(a,b)满足a<b且存在从a到b再回到a的路径,每条道路被经过至多一次,我们称(a,b)为完美点对试 ...
- 【代码备份】ZJ10086测试环境成功代码备份
vuser_init(){ lr_start_transaction("login"); web_url("101.132.17.138", ...
- (1.1)mysql 选择合适的数据类型
(1.1)mysql 选择合适的数据类型 1.char与varchar [1.1]char 在内容未满定义长度时,做空格填充,且字符串末尾空格会被截断:超出定义长度也会被截断. 如:char(4) ...
- CentOS工作内容(七)禁用IPV6
CentOS工作内容(七)禁用IPV6 用到的快捷键 tab 自动补齐(有不知道的吗) ctrl+a 移动到当前行的开头(a ahead) ctrl+e 移动到当前行的开头(e end) ctrl+u ...
- go-001-环境部署,IDEA插件
一.下载安装 https://golang.org/dl/ 下载之后安装即可 官网地址:https://golang.org/ 1.1.mac上安装go 1.安装Homebrew 安装命令: ruby ...
- Java-SpringMvc-@ResponseBody返回中文字符串乱码
第一种.注解 @RequestMapping(value = "/test.do", method = {RequestMethod.GET},produces = "t ...
- vue-页面回退
<template> <div> <button @click="goback">我是Home01</button> </di ...