蘭陵N梓記

一指流沙,程序年华


  • 首页

  • 归档

  • 关于

  • 搜索
close

跟我一起复习Java-1:基础/正则

时间: 2019-09-21   |   分类: 技术     |   阅读: 1844 字 ~4分钟

基本数据类型

数据类型 大小 范围 默认值
byte(字节) 8 -128 - 127 0
shot(短整型) 16 -2^15 - 2^15-1 0
int(整型) 32 -2^31 - 2^31-1 0
long(长整型) 64 -2^63 - 2^63-1 0
float(浮点型) 32 1.4013E-45 - 3.4028E+38 0.0f
double(双精度) 64 -1.7976E+308 - 1.79769E+308 0.0d
char(字符型) 16 \u0000 - u\ffff \u0000
boolean(布尔型) 1 true/false false

控制语句

主要例举一些需要注意的点

swith

switch(A)括号中A的取值类型如下:

  • byte
  • short
  • int
  • char
  • 枚举
  • String(Java 7)

注意不能是long

case B:C

  • case是常量表达式, case后的语句可以不用大括号,也就是说C不需要使用大括号;
  • default没有符合的case就执行它,default并不是必须的。

for

  • 无限循环: for(;;)
  • index for: for(int i = 0; i < MAX; i++)
  • for each: for(a : iterator) Java 5

labeled loop

对循环打标签,用于控制语句跳到不同层次的循环。

vectorLoop:
for( int idx = 0; idx < vectorLength; idx++) {
    if( conditionAtVectorPosition( v, idx ) ) continue vectorLoop;

    matrixLoop:
    for( rowIdx = 0; rowIdx < n; rowIdx++ ) {
        if( anotherConditionAtVector( v, rowIdx ) ) continue matrixLoop;
        if( conditionAtMatrixRowCol( m, rowIdx, idx ) ) continue vectorLoop;
    }
    setValueInVector( v, idx );
}     

异常体系

  • Throwable作为所有异常的超类
  • Error(错误):是程序中无法处理的错误,表示运行应用程序中出现了严重的错误。此类错误一般表示代码运行时JVM出现问题。通常有Virtual MachineError(虚拟机运行错误)、NoClassDefFoundError(类定义错误)等。比如说当jvm耗完可用内存时,将出现OutOfMemoryError。此类错误发生时,JVM将终止线程。这些错误是不可查的,非代码性错误。因此,当此类错误发生时,应用不应该去处理此类错误。
  • Exception(异常):程序本身可以捕获并且可以处理的异常。
    • 运行时异常(不受检异常):RuntimeException类极其子类表示JVM在运行期间可能出现的错误。比如说试图使用空值对象的引用(NullPointerException)、数组下标越界(ArrayIndexOutBoundException)。此类异常属于不可查异常,一般是由程序逻辑错误引起的,在程序中可以选择捕获处理,也可以不处理。
    • 编译异常(受检异常):Exception中除RuntimeException极其子类之外的异常。如果程序中出现此类异常,比如说IOException,必须对该异常进行处理,否则编译不通过。在程序中,通常不会自定义该类异常,而是直接使用系统提供的异常类。

正则表达式

正则表达式定义了字符串的模式,可以用来搜索、编辑或处理文本。并不仅限于某一种语言,但是在每种语言中有细微的差别。

Java 正则表达式和 Perl 的是最为相似的。

  • Pattern 类:是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
  • Matcher 类: Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。

捕获组

捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。

捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的组:

  • ((A)(B(C)))
  • (A)
  • (B(C))
  • (C)

可以通过调用 matcher 对象的 groupCount 方法来查看表达式有多少个分组。groupCount 方法返回一个 int 值,表示matcher对象当前有多个捕获组。 还有一个特殊的组(group(0)),它总是代表整个表达式。该组不包括在 groupCount 的返回值中。

语法

元字符

  • . : 匹配除换行符以外的任意字符
  • \w: 匹配字母或数字或下划线或汉字
  • \s: 匹配任意的空白符
  • \d: 匹配数字
  • ^: 匹配字符串的开始
  • $: 匹配字符串的结束
  • \b: 匹配单词的边界

重复

  • * : 重复零次或更多次
  • + : 重复一次或更多次
  • ? : 重复零次或一次
  • {n} : 重复n次
  • {n,} : 重复n次或更多次
  • {n,m} : 重复n到m次

反义

  • [^x] : 匹配除了x以外的任意字符
  • [^aeiou] : 匹配除了aeiou这几个字母以外的任意字符
  • \W : 匹配任意不是字母,数字,下划线,汉字的字符
  • \S : 匹配任意不是空白符的字符
  • \D : 匹配任意非数字的字符
  • \B : 匹配不是单词开头或结束的位置

零宽断言

  • (?=exp) : 匹配exp前面的位置
  • (?<=exp) : 匹配exp后面的位置
  • (?!exp) : 匹配后面跟的不是exp的位置
  • (?<!exp) : 匹配前面不是exp的位置

注释

  • (?#comment) : 注释

贪婪与懒惰

  • *? : 重复任意次,但尽可能少重复
  • +? : 重复1次或更多次,但尽可能少重复
  • ?? : 重复0次或1次,但尽可能少重复
  • {n,m}? : 重复n到m次,但尽可能少重复
  • {n,}? : 重复n次以上,但尽可能少重复

其他

  • POSIX 字符类: 如\p{Lower}表示小写字母字符:[a-z]
  • 引用: \, \Q, \E

注:以上内容收集于互联网多篇文章,在此感谢原作者们。

#软件开发# #Java#
跟我一起复习Java-2:集合/Stream
正确地打印日志
微信扫一扫交流

标题:跟我一起复习Java-1:基础/正则
作者:兰陵子
关注:lanlingthink(览聆时刻)
声明:自由转载-非商用-非衍生-保持署名(创作共享3.0许可证)

  • 文章目录
  • 站点概览
兰陵子

兰陵子

Programmer & Architect

164 日志
4 分类
57 标签
GitHub 知乎
  • 基本数据类型
  • 控制语句
    • swith
    • for
    • labeled loop
  • 异常体系
  • 正则表达式
    • 捕获组
    • 语法
© 2009 - 2022 蘭陵N梓記
Powered by - Hugo v0.101.0
Theme by - NexT
0%