第3章包装类&正则表达式(代码片段)

author author     2022-11-01     364

关键词:

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

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

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

数量词:Xn,m
含义:代表的是X出现至少 n 次,但是不超过 m 次
例如:匹配规则为"a5,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]);



第27章正则表达式(代码片段)

韩顺平_循序渐进学Java零基础_第27章正则表达式(P878-P904)第27章正则表达式878.正则快速入门//模式对象Patternpattern=Pattern.compile("[0-9]+");//匹配器对象Matchermatcher=pattern.matcher(content);//循环匹配while(matcher.find())System.out.prin... 查看详情

重学c++:笔记c++概括&基础语法&运算符与表达式(代码片段)

...的标识符和关键字2.5变量与常量第3章C++的运算符与表达式3.1运算符表达式和基本语句3.2运算符3.3补码第1章C++概括C++的特点优点:强大的抽象封装能力高性能低功耗缺点语法相对复杂 查看详情

java--mathbigintegerbigdecimal类和基本类型的包装类正则表达式(代码片段)

Mathjava.lang.Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单。Math.PI//静态常量publicstaticfinaldoublePI=3.14159265358... 查看详情

第9章正则扩展(代码片段)

//扩展一//第14章正则表达式http://www.apelearn.com/study_v2/chapter14.htmlgrep语法:grep[-cinvABC]‘word‘filename-c:打印符合要求的行数-i:忽略大小写-n:在输出符合要求的行的同时连同行号一起输出-v:打印不符合要求的行-A:后跟一个数字... 查看详情

第4章对象与类(代码片段)

...与对象数据进行交互。3.对象与对象引用1Datetime=newDate();表达式newDate()构造了一个Date类型的对 查看详情

第1章object类&system类(代码片段)

1.1Object类1.1.1概述Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。在Object类众多方法中,我们先学习equals方法与toString方法,其他方法后面... 查看详情

韩顺平循序渐进学java零基础第13章常用类(代码片段)

...13章常用类460.八大Wrapper类除Boolean和Character外,其余包装类均继承父类Number461.装箱和拆箱jdk5以前是手动装箱和拆箱,自动装箱底层调用的是对应包装类的valueOf()方法//手动装箱Integerinteger=Integer.valueOf(i);//手动拆箱intii&#... 查看详情

王之泰《面向对象程序设计(java)》课程学习总结(代码片段)

...-第3章、Files-第3章62页、LocalDate-第4章、Object-第5章、对象包装器-第5章、Comparator-第6章、异常类-第7章、ArrayList-第5+8章、第9章、第10-12章、第14章)   —Java异常处理编程模型  — JavaGUI编程模型6.Java并发程序... 查看详情

韩顺平循序渐进学java零基础第27章正则表达式(代码片段)

第27章正则表达式878.正则快速入门//模式对象Patternpattern=Pattern.compile("[0-9]+");//匹配器对象Matchermatcher=pattern.matcher(content);//循环匹配while(matcher.find())System.out.println(matcher.group(0));879.正则需求问题880.正则底层实现1881.... 查看详情

节必知必会——问题集锦(代码片段)

...xff1a;处理数据第4章:复合类型第5章:循环和关系表达式第6章:分支语句和逻辑运算符第7章:函数——C++的编程模块第8章:函数探幽第9章:内存模型和名称空间第10章:对象和类第11章:使... 查看详情

节必知必会——问题集锦(代码片段)

...xff1a;处理数据第4章:复合类型第5章:循环和关系表达式第6章:分支语句和逻辑运算符第7章:函数——C++的编程模块第8章:函数探幽第9章:内存模型和名称空间第10章:对象和类第11章:使... 查看详情

javascript正则表达式[第4部分]-速记字符类(代码片段)

查看详情

201771010130王志成《面向对象程序设计(java)》第十八周学习总结(代码片段)

...-第3章、Files-第3章62页、LocalDate-第4章、Object-第5章、对象包装器-第5章、Comparator-第6章、异常类-第7章、ArrayList-第5+8章、第9章、第10-12章、第14章)   —Java异常处理编程模型  — JavaGUI编程模型6.Java并发程序... 查看详情

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

一、Arrays类1.定义:针对数组进行操作的工具类。提供了排序,查找等功能。2.成员方法:toString()sort()二、包装类1.为什么使用包装类包装类提供一系列属性和方法供开发人员使用2.java面向对象语言,操作的都是类2.包装类能做什... 查看详情

java语言程序设计(第3版)沈泽刚主编第10,11,12章课后习题答案(代码片段)

Java语言程序设计(第3版)沈泽刚主编第10,11,12章课后习题答案第10章接口和Lambda表达式10.1定义Duck类实现Swimmable接口和flyable接口。interfaceSwimmablepublicvoidswim();interfaceflyablepublicvoidfly();publicclassDuckimplementsSwi 查看详情

第3章stringbuilder类(代码片段)

1.1StringBuilder类概述StringBuilder:是一个可变的字符串。字符串缓冲区类。String和StringBuilder的区别:String的内容是固定的StringBuilder的内容是可变的1.1.1+=拼接字符串耗费内存原因:每次拼接都会产生新的字符串对象,而利用StringBuilder来... 查看详情

第3版emwin教程第36章emwin6.x光标(代码片段)

教程不断更新中:第3版emWin教程和ThreadXGUIX教程开工,双管齐下,GUIX更新至第28章,emWin更新至第48章(2021-09-13)-uCOS&uCGUI&emWin&embOS&TouchGFX&ThreadX-硬汉嵌入式论坛-PoweredbyDisc 查看详情

第3章抽象类(代码片段)

1.1抽象类概述当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的功能具体实现方式,那么这些方法都有具体的方法体。但是有的时候,某个父类只是知道子类应该包含怎么样的方法,但是无法准确知... 查看详情