第3章 包装类&正则表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第3章 包装类&正则表达式相关的知识,希望对你有一定的参考价值。

1.1 包装类
在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的。而程序开发中,我们需要把字符串数据,根据需求转换成指定的基本数据类型,如年龄需要转换成int类型,考试成绩需要转换成double类型等。那么,想实现字符串与基本数据之间转换怎么办呢?
Java中提供了相应的对象来解决该问题,基本数据类型对象包装类:java将基本数据类型值封装成了对象。封装成对象有什么好处?可以提供更多的操作基本数值的功能。
8种基本类型对应的包装类如下:
技术分享图片
其中需要注意int对应的是Integer,char对应的Character,其他6个都是基本类型首字母大写即可。
1.2 包装类的常用方法
A:构造方法:
技术分享图片
B:成员方法:
技术分享图片技术分享图片技术分享图片
1.2.1 案例代码十:

package com.itheima_06;
/*

  • 需求:判断一个数是否符合int类型的范围
  • 由于基本数据类型只能做一些简单的操作和运算,所以Java为我们封装了基本数据类型,为每种基本数据类型提供了包装类
  • 包装类就是封装了基本数据类型的类,为我们提供了更多复杂的方法和一些变量
  • byte Byte
  • short Short
  • char Character
  • int Integer
  • long Long
  • float Float
  • double Double
  • boolean Boolean
  • Integer:
  • String --- int
  • 方式1:int intValue()
  • 方式2: static int parseInt(String s)
  • int --- String
  • 方式1: + ""
  • 方式2:String toString()
  • 构造方法:
  • Integer(int value)
  • Integer(String s)

    /
    public class IntegerDemo {
    public static void main(String[] args) {
    /
    int n = 10;
    if(n >= Math.pow(-2, 31) && n <= Math.pow(2, 31) -1) {
    System.out.println("符合");
    }
    else {
    System.out.println("不符合");
    }*/

Integer i = new Integer("10");
System.out.println(i);

int a = i.intValue();
System.out.println(a + 10 );

int b = Integer.parseInt("20");
System.out.println(b + 30);

Integer i2 = new Integer(40);
String s = i2.toString();
System.out.println(s);

String s2 = Integer.toString(50);
System.out.println(s2);
}
}
1.3 包装类的自动装箱与拆箱
在需要的情况下,基本类型与包装类型可以通用。有些时候我们必须使用引用数据类型时,可以传入基本数据类型。
比如:
基本类型可以使用运算符直接进行计算,但是引用类型不可以。而基本类型包装类作为引用类型的一种却可以计算,原因在于,Java”偷偷地”自动地进行了对象向基本数据类型的转换。
相对应的,引用数据类型变量的值必须是new出来的内存空间地址值,而我们可以将一个基本类型的值赋值给一个基本类型包装类的引用。原因同样在于Java又”偷偷地”自动地进行了基本数据类型向对象的转换。
自动拆箱:对象转成基本数值
自动装箱:基本数值转成对象
1.3.1 案例代码十一:

package com.itheima_06;
import java.util.ArrayList;
/*
 * JDK1.5特性:自动装箱和拆箱
 *
 */
public class IntegerDemo2 {
public static void main(String[] args) {
//Integer i = new Integer(10);
//自动装箱
//相当于: Integer i = new Integer(10);
//Integer i = 10;
//自动拆箱
//相当于 int a = i.intValue();
//Integer i = 10;
//int a = i;
Integer i = 10;
Integer i2 = 20;
Integer i3 = i + i2;
/*
 * Integer i3 = new Integer(i.intValue() + i2.intValue());
 *
 */
ArrayList list = new ArrayList();
list.add(1);//自动装箱,list.add(new Integer(1));
}
}

1.4 正则表达式
1.4.1 正则表达式概述
正则表达式是专门解决字符串规则匹配的工具。
正则表达式也是一个字符串,用来定义匹配规则。
参照帮助文档,在Pattern类中有简单的规则定义,可以结合字符串类的方法使用。

1.4.2 正则表达式匹配规则

参照帮助文档,在Pattern类中有正则表达式的的规则定义,正则表达式中明确区分大小写字母。我们来学习语法规则。
正则表达式的语法规则:
字符:x
含义:代表的是字符x
例如:匹配规则为 "a",那么需要匹配的字符串内容就是 ”a”

字符:\含义:代表的是反斜线字符‘\‘
例如:匹配规则为"\\" ,那么需要匹配的字符串内容就是 ”\”

字符类:[abc]
含义:代表的是字符a、b 或 c
例如:匹配规则为"[abc]" ,那么需要匹配的内容就是字符a,或者字符b,或字符c的一个

字符类:[^abc]
含义:代表的是除了 a、b 或 c以外的任何字符
例如:匹配规则为"[^abc]",那么需要匹配的内容就是不是字符a,或者不是字符b,或不是字符c的任意一个字符

字符类:[a-zA-Z]
含义:代表的是a 到 z 或 A 到 Z,两头的字母包括在内
例如:匹配规则为"[a-zA-Z]",那么需要匹配的是一个大写或者小写字母

字符类:[0-9]
含义:代表的是 0到9数字,两头的数字包括在内
例如:匹配规则为"[0-9]",那么需要匹配的是一个数字

字符类:[a-zA-Z_0-9]
含义:代表的字母或者数字或者下划线(即单词字符)
例如:匹配规则为" [a-zA-Z_0-9] ",那么需要匹配的是一个字母或者是一个数字或一个下滑线

预定义字符类:.
含义:代表的是任何字符
例如:匹配规则为" . ",那么需要匹配的是一个任意字符。如果,就想使用 . 的话,使用匹配规则"\\."来实现

预定义字符类:\d [0-9]
含义:代表的是 0到9数字,两头的数字包括在内,相当于[0-9]
例如:匹配规则为"\d ",那么需要匹配的是一个数字

预定义字符类:\w  [a-zA-Z_0-9]
含义:代表的字母或者数字或者下划线(即单词字符),相当于[a-zA-Z_0-9]
例如:匹配规则为"\w ",,那么需要匹配的是一个字母或者是一个数字或一个下滑线
数量词:X?
含义:代表的是X出现一次或一次也没有
例如:匹配规则为"a?",那么需要匹配的内容是一个字符a,或者一个a都没有

数量词:X*
含义:代表的是X出现零次或多次
例如:匹配规则为"a*" ,那么需要匹配的内容是多个字符a,或者一个a都没有

数量词:X+
含义:代表的是X出现一次或多次
例如:匹配规则为"a+",那么需要匹配的内容是多个字符a,或者一个a

数量词:X{n}
含义:代表的是X出现恰好 n 次
例如:匹配规则为"a{5}",那么需要匹配的内容是5个字符a

数量词:X{n,}
含义:代表的是X出现至少 n 次
例如:匹配规则为"a{5, }",那么需要匹配的内容是最少有5个字符a

数量词:X{n,m}
含义:代表的是X出现至少 n 次,但是不超过 m 次
例如:匹配规则为"a{5,8}"
```,那么需要匹配的内容是有5个字符a 到 8个字符a之间
1.4.3 案例代码十二:

package com.itheima_07;[/align]/*

  • 校验qq号码
    • 要求必须是5-15位
    • 0不能开头
    • 必须都是数字
      正则表达式:就是一套规则,可以用于匹配字符串
      boolean matches(String regex) :判断当前字符串是否匹配指定的正则表达式,如果匹配则返回true,否则返回false
    • /
      public class RegexDemo {
      public static void main(String[] args) {
      String qq = "12a345";
      /
      boolean flag = checkQQ(qq);
      System.out.println(flag);*/
      boolean flag = qq.matches("[1-9][0-9]{4,14}");
      System.out.println(flag);
      }
      public static boolean checkQQ(String qq) {
      int length = qq.length();
      //要求必须是5-15位
      if(length < 5 || length > 15) {
      return false;
      }
      //0不能开头
      if(qq.startsWith("0")) {
      return false;
      }
      //必须都是数字
      for (int i = 0; i < length; i++) {
      //得到参数的每一个字符
      char c = qq.charAt(i);
      if(c < ‘0‘ || c > ‘9‘) {
      return false;
      }
      }
      return true;//符合要求
      }
      }

1.4.4 案例代码十三:

package com.itheima_07;
/*
 *  判断字符串”qaq”中间的字符是否是元音
 * 
 *  aeiou
 *  AEIOU
 * 
 */
public class RegexDemo2 {
public static void main(String[] args) {
boolean flag = check2("qbq");
System.out.println(flag);
}
public static boolean check(String s) {
s = s.toLowerCase();
char ch = s.charAt(1);
/*if(ch == ‘a‘ || ch == ‘e‘ || ch == ‘i‘ || ch == ‘o‘ || ch == ‘u‘) {
return true;
}
return false;*/
String str = "aeiou";
return str.contains(ch + "");
}
public static boolean check2(String s) {
return s.matches("\\w[aeiouAEIOU]\\w");
}

}

1.4.5 案例代码十四:

package com.itheima_07;
/*
 *  切割字符串"aa,bb,cc";
切割字符串"-1 99 4 23";
切割字符串"-1   99 4     23";
 String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。
 * 
 */
public class RegexDemo3 {
public static void main(String[] args) {
//method();
//method2();
String s = "-1   99 4     23";
String[] arr = s.split(" +");
print(arr);
}

private static void method2() {
String s = "-1 99 4 23";
String[] arr = s.split(" ");
print(arr);
}

private static void method() {
String s = "aa,bb,cc";
String[] arr = s.split(",");
print(arr);
}
public static void print(String[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}

}

以上是关于第3章 包装类&正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

Arrays类,包装类,正则表达式,集合

第10章 正则表达式

第9章 文件IO操作正则表达式与多线程《Kotlin 项目实战教程》

融职教育Web前端学习 第3章 JavaScript基础教程10 正则表达式

java -- MathBigIntegerBigDecimal类和基本类型的包装类正则表达式

15Java常用类(数组工具类Arrays)基本类型包装类(Integer类)正则表达式String的split(String regex)和replaceAll(String regex, (代码片