学习Java API(二):基础知识点一文通✅

推荐阅读

智能化校园:深入探讨云端管理系统设计与实现(一)
智能化校园:深入探讨云端管理系统设计与实现(二)


文章目录

  • 推荐阅读
  • 正则表达式
    • 正则表达式语法
    • 捕获组和分组
    • matches 和 lookingAt 方法
    • split方法
    • replaceFirst 和 replaceAll 方法
    • appendReplacement 和 appendTail 方法
  • Object类
    • Object toString() 方法
    • Object equals() 方法
    • Object hashCode() 方法
  • 包装类
    • Number类
      • xxxValue() 方法
      • valueOf() 方法
      • equals() 方法
    • Math 类
      • sqrt() 方法
      • round() 方法
      • parseXXX(String str)方法
    • Character 类
      • 转义序列


正则表达式

正则表达式定义了字符串的模式。
正则表达式可以用来搜索、编辑或处理文本。

正则表达式语法

在这里插入图片描述

点在正则表达式 有特殊含义,但在java字符串中无特殊含义,所以需要转义字符

//一个字符串其实就是一个简单的正则表达式
例如 Hello World 正则表达式匹配 "Hello World" 字符串。
//.(点号)也是一个正则表达式,它匹配任何一个字符如:"a" 或 "1"。[abc] -----------abc中任意一个字符
[^abc] ----------除了abc 中任意字符
[a-z]------------a,b,c......z中任意字母
[a-zA-Z0-9]------a-z,A-Z,0-9中任意字符
[a-z&&[^bc]]-----a-z中除了bc外其他任意字符x|y--------------匹配 x 或 y。
//例如,'z|food' 匹配"z"或"food"。'(z|f)ood' 匹配"zood"或"food"。

单词字符即数字,字母,下划线。

.-----任意字符
\d--------任意一个数字字符
\w--------单词字符
\s--------匹配任何空白字符,包括空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效。 
\D--------非数字字符
\W---------非单词字符
\S--------非空白字符X-----------表示0个或者1// [A-Z]? 随便写一个或者不写   B或者不写
X* -----------表示0个或者任意多个X
X+ -----------表示1个或者任意多个X>=1X{n}----------表示n个X
X{n,}-----------表示n个到任意多个X>=XX{n,m}--------表示n个到m个X

在这里插入图片描述

捕获组和分组

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

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

分组
分组:()圆括号表示分组,可以将一系列正则表达式看成一个整体,分组时可以使用“|”表示使用“或”关系

[ABC]{3}//BBC   AAB  AAA可以,BCD 不行
(ABC){3}//ABCABCABCABC|DEF{3}//ABCDEFABC

matches 和 lookingAt 方法

matches 和 lookingAt 方法都用来尝试匹配一个输入序列模式。它们的不同是 matches 要求整个序列都匹配,而lookingAt 不要求。
lookingAt 方法虽然不需要整句都匹配,但是需要从第一个字符开始匹配。

/*** 字符串支持正则表达式方法* boolean matches(String regex)* 根据给定的正则表达式验证当前字符串是否满足格式要求,满足true 否则false*/
public class String {public static void  main(String args[]){/*** 电子邮箱* [a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+*/String regex="[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\\.[a-zA-Z0-9_]+)+";//点在正则表达式 有特殊含义,但在java字符串中无特殊含义,所以需要转义字符System.out.println(regex);}
}//[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+/*** 验证是否为手机号*/
System.out.println("请输入手机号");
Scanner scanner=new Scanner(System.in);
String line=scanner.nextLine();
//(\+86|0086)?\s*1[0-9]{10},也可以是这种
String a="1[0-9]{10}";
if (line.matches(a)){System.out.println("yes");
}else {System.out.println("no");
}

split方法

/*** 字符串支持正则表达式方法二* String[] split(String regex)* 将当前字符串按照满足正则表达式的部分进行拆分,返回拆分的每段内容*/
String str="abcdef4ghijk123456zvdsf";String regex ="[0-9]+";
String[] array=str.split(regex);
System.out.println("len:"+array.length);
for (int i=0;i<array.length;i++){System.out.println(array[i]);
}
//len:3
//abcdef
//ghijk
//zvdsf

匹配规则少了一个加号,那么每个数字中间都要匹配了一次,所以输出结果多了空白字符,如果匹配时是这种情况“abcq344jkfji1234”,那么后面1234之间不会在匹配了,只匹配一次

String str="abcdef4ghijk123456zvdsf";String regex ="[0-9]";
String[] array=str.split(regex);
System.out.println("len:"+array.length);
for (int i=0;i<array.length;i++){System.out.println(array[i]);
}

在这里插入图片描述

replaceFirst 和 replaceAll 方法

replaceFirst 和 replaceAll 方法用来替换匹配正则表达式的文本。不同的是,replaceFirst 替换首次匹配,replaceAll 替换所有匹配。

String str="ancbada12akjhfk23kjk";
str=str.replaceAll("\\d","#ad#");
System.out.println(str);String imgName="1.jpg";
imgName=imgName.replaceAll(".+\\.", System.currentTimeMillis()+".");
System.out.println(imgName);String regex="(|hh|wo|)";
String message="我笑了,你wo,你这个hh";
message=message.replaceAll(regex,"***");
System.out.println(message);

输出结果
在这里插入图片描述

appendReplacement 和 appendTail 方法

appendReplacement 和 appendTail 方法用于文本替换

 private static String REGEX = "a*b";private static String INPUT = "aabfooaabfooabfoobkkk";private static String REPLACE = "-";public static void main(String[] args) {Pattern p = Pattern.compile(REGEX);// 获取 matcher 对象
Matcher m = p.matcher(INPUT);
StringBuffer sb = new StringBuffer();while(m.find()){m.appendReplacement(sb,REPLACE);}m.appendTail(sb);
System.out.println(sb.toString());
//-foo-foo-foo-kkk

Object类

Java Object 类是所有类的父类,Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法。
Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承 Object,成为 Object 的子类。就好比如:你碰见一个人,但是你不认识他,但他仍然属于人这一范畴中。一个类不知道他的属性和方法,不知道他的父类,就可以让它自动继承Object这一父类。

显式继承:
public class Test extends Object{
}
隐式继承:
public class Test {
}

Object toString() 方法

Object toString() 方法用于返回对象的字符串表示形式.
返回值
返回对象的字符串表示形式。
默认返回格式:对象的 class 名称 + @ + hashCode 的十六进制字符串。

object.toString()

重写toString方法
Object自身的toString的方法烦返回的是:类名@地址,这一字符串没啥实际意义,重写该方法后,返回字符串后没有严格的格式要求可根据需求而定,但是原则上需要字符串包含当前对象的属性信息,只有我们自己定义的类需要重写该方法,javaAPI 提供的类通常已经重写了该方法。

// toString() with array
// 创建数组
String[] array = { "Google", "baidu", "Taobao" };
System.out.println(array.toString());// 数组元素值返回一个字符串的表示形式
// Array 继承了 Object 类,所以可以直接使用 toString() 方法
System.out.println(array[1].toString()); // baidu

Object equals() 方法

Object equals() 方法用于比较两个对象是否相等

 // Object 类使用 equals() 方法
// 创建两个对象
Object obj1 = new Object();
Object obj2 = new Object();// 判断 obj1 与 obj2 是否相等
// 不同对象,内存地址不同,不相等,返回 false
System.out.println(obj1.equals(obj2)); // false// obj1 赋值给 obj3
// String 重写了 equals() 方法
// 对象引用,内存地址相同,相等,返回 true
Object obj3 = obj1;
System.out.println(obj1.equals(obj3)); // true

object 提供的equals方法内部就是“==”实现的,没有意义,equals比较不要求所有属性值一样,通常我们需要使用一个类的equals方法时需要写,equals方法作用 比较当前对象与给定对象内容是否一样.

StringDemo4 s=new StringDemo4(1,3);
String str=s.toString();
System.out.println(str);StringDemo4 s1=new StringDemo4(1,3);
System.out.println(s==s1);//false
System.out.println(s.equals(s1));//true

equals与 == 区别
== 用于比较变量的值,可以应用任何类型,如果用于引用类型,比较的是两个引用变量中存储的值(地址信息),判断两个变量是否指向相同对象;
equals()方法重写后可以用于比较两个对象内容是否相等,object中默认的equals方法比较规则同==。

Object hashCode() 方法

Object hashCode() 方法用于获取对象的 hash 值。
返回对象哈希值,是一个整数,表示在哈希表中的位置

object.hashCode()

如果两个对象相等,则它们的哈希值也是相等的

// Object 使用 hashCode()
Object obj1 = new Object();// obj1 赋值给 obj2
Object obj2 = obj1;// 判断两个对象是否相等
System.out.println(obj1.equals(obj2)); // true// 获取 obj1 与 obj2 的哈希值
System.out.println(obj1.hashCode()); //1945604815
System.out.println(obj2.hashCode()); //1945604815

包装类

Number类

基本类型(byte short int long float double char boolean)是以值的形式直接存在,所以他们没有面向对象的特性,自然不继承object,不能使用多态,用object角度去接受基本类型。
为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类。所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类
在这里插入图片描述

Integer 提供的一些常量
static int MAX_VALUE 值为 2^31-1的常量,表示int类型能表示的最大值
static int MIN_VALUE 值为 -2^31的常量,表示int类型能表示的最小值

xxxValue() 方法

xxxValue() 方法用于将 Number 对象转换为 xxx 数据类型的值并返回。
该方法不接受任何参数

在这里插入图片描述

Integer i=1;
System.out.println(i.doubleValue());//1.0
System.out.println(i.byteValue());//1

valueOf() 方法

valueOf() 方法用于返回给定参数的原生 Number 对象值,参数可以是原生数据类型, String等。该方法是静态方法。

static Integer valueOf(int i)
static Integer valueOf(String s)
static Integer valueOf(String s, int radix)//radix --在解析字符串 s 时使用的进制数,用于指定使用的进制数。Integer x =Integer.valueOf(9);    
Double c = Double.valueOf(5); 
Float a = Float.valueOf("80"); 
Integer b = Integer.valueOf("444",16);   // 使用 16 进制 
System.out.println(x);//9
System.out.println(c);  //5.0 
System.out.println(a); //80.0
System.out.println(b); //1092          

equals() 方法

equals() 方法用于判断 Number 对象与方法的参数进是否相等。如 Number 对象不为 Null,且与方法的参数类型与数值都相等返回 True,否则返回 False。

Integer i=1;
Integer b=1;
Integer c=5;
Short a=1;System.out.println(i.equals(b));//true
System.out.println(i.equals(c));//false
System.out.println(i.equals(a));//false

Math 类

Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。
Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。

System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2));//90 度的正弦值:1.0
System.out.println(Math.PI); //3.141592653589793

sqrt() 方法

sqrt() 方法用于返回参数的算术平方根
返回参数的算术平方根。

double a=4.0;
System.out.println(Math.sqrt(c));//2.0

round() 方法

round() 方法返回一个最接近的 int、long 型值,四舍五入。round 表示"四舍五入",算法为Math.floor(x+0.5) ,即将原来的数字加上 0.5 后再向下取整。

Math.round(11.5)//12
Math.round(-11.5)//-11
double d = 100.752
float f = 100;
System.out.println(Math.round(d));//101
System.out.println(Math.round(f));//100

parseXXX(String str)方法

包装类提供了一个静态方法parseXXX(String str),可以将给定字符串转换为对应的基本类型,前提是该字符串必须正确描述基本类型。

int x =Integer.parseInt("9");
double c = Double.parseDouble("5");
int s=Integer.parseInt("123.123");//报错,字符串类型不对System.out.println(x);//9System.out.println(c);//5.0

Character 类

Character 类用于对单个字符进行操作。
Character 类在对象中包装一个基本类型 char 的值

Character类提供了一系列方法来操纵字符。你可以使用Character的构造方法创建一个Character类对象

Character ch = new Character('a');

在某些情况下,Java编译器会自动创建一个Character对象


// 原始字符 'a' 装箱到 Character 对象 ch 中
Character ch = 'a';// 原始字符 'x' 用 test 方法装箱
// 返回拆箱的值到 'c'
char c = test('x');

将一个char类型的参数传递给需要一个Character类型参数的方法时,那么编译器会自动地将char类型参数转换为Character对象。 这种特征称为装箱,反过来称为拆箱。
自动拆装箱是编译器认可,而不是虚拟机认可,编译器在将源程序编译时自动补齐代码来完成基本类型与包装类之间的转换。

int i=new Integer(0);
//在.class 文件中,编译器将其改为
int i=new Integer(0).intValue();Integer a=12;
//在.class 文件中为
Integer a=Integer.valueOf(12);

转义序列

前面有反斜杠(\)的字符代表转义字符,它对编译器来说是有特殊含义的
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeeCode前端算法基础100题(20)找出字符串中第一个匹配项的下标

一、问题详情: 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystack = "sadbutsad", needle = "s…

安全生产管理平台——革新传统安全生产管理方式,重塑企业安全文化

安全生产管理在现代企业中占据着至关重要的地位。传统的安全生产管理方式虽然在一定程度上能够保障企业的生产安全&#xff0c;但随着企业规模的不断扩大和生产环境的日益复杂&#xff0c;其局限性也愈发凸显。而安全生产管理平台的出现&#xff0c;正是为了解决这一问题。 平台…

从六西格玛到DFSS:提升企业创新能力的关键方法——张驰咨询

DFSS&#xff08;Design for Six Sigma&#xff0c;即六西格玛设计&#xff09;是一种结合了六西格玛思想和创新设计方法的质量管理方法。它的目标是在产品或服务的设计阶段&#xff0c;通过优化设计过程和减少变异性&#xff0c;以确保产品或服务达到高质量水平&#xff0c;满…

Linux多网卡绑定实现负载均衡详解

将多块网卡绑定同一IP地址对外提供服务&#xff0c;可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过 bonding&#xff0c;虚拟一块网卡对外提供连接&#xff0c;物理网卡的被修改为相同的MAC地址。 目录 1、bond的作用 2、Bonding聚合链路工作模…

反射助你无痛使用Semantic Kernel接入离线大模型

本文主要介绍如何使用 llama 的 server 部署离线大模型&#xff0c;并通过反射技术修改 Semantic Kernel 的 OpenAIClient 类&#xff0c;从而实现指定端点的功能。最后也推荐了一些学习 Semantic Kernel 的资料&#xff0c;希望能对你有所帮助。 封面图片&#xff1a; Dalle3 …

软信天成:数据安全管理解决方案分享

近年来&#xff0c;随着数据环境日趋复杂多变和潜在的数据隐私泄露风险潜伏&#xff0c;如何确保企业数据安全已成为众多企业亟待面对与妥善处理的重要问题。 为了应对这一严峻的现实挑战&#xff0c;软信天成凭借专业的知识体系和丰富的实战经验积累&#xff0c;总结出了一套…

Java多线程并发篇----第十四篇

系列文章目录 文章目录 系列文章目录前言一、ReadWriteLock 读写锁二、共享锁和独占锁三、重量级锁(Mutex Lock)四、轻量级锁前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给…

Spring MVC中的一些常用注解

目录 RequestMapping 实现路由映射 限制请求方式 PathVariable 从url中获取变量的值 更改绑定参数的名字 RequestParam 可以传递集合 更改绑定参数的名字 可修改是否为必传参数 RequestBody 获取请求正文的内容 可修改是否为必传参数 RequestPart 可以支持上传…

new mars3d.layer.GeoJsonLayer({实现图标点billboard贴模型聚合效果

说明&#xff1a; 1.【mars3d】的依赖库cesium本身是不支持贴地/贴模型操作的 2.sdk内部异步计算了数据的贴地/高度值之后&#xff0c;更新到图层上实现贴地/贴模型效果的 3.相关的示例链接&#xff1a; 1.功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 4.相关的计算…

【Python数据可视化】matplotlib之绘制三维图形:三维散点图、三维柱状图、三维曲面图

文章传送门 Python 数据可视化matplotlib之绘制常用图形&#xff1a;折线图、柱状图&#xff08;条形图&#xff09;、饼图和直方图matplotlib之设置坐标&#xff1a;添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值matplotlib之增加图形内容&#x…

精确掌控并发:滑动时间窗口算法在分布式环境下并发流量控制的设计与实现

这是《百图解码支付系统设计与实现》专栏系列文章中的第&#xff08;15&#xff09;篇&#xff0c;也是流量控制系列的第&#xff08;2&#xff09;篇。点击上方关注&#xff0c;深入了解支付系统的方方面面。 上一篇介绍了固定时间窗口算法在支付渠道限流的应用以及使用redis…

消息的发送与接收

消息的发送与接收 消息的发送与接收不仅仅是在于聊天功能的实现。其实还有很多种情况也算"消息的发送与接收"。而且我们还可以通过多种方法去实现。我们可以基于实际情况来选择。 WebSocket实现 node做后端。找了好多&#xff0c;前端页面总是用到了jQuery&#x…

lvgl简介

LVGL&#xff08;Light and Versatile Graphics Library&#xff09;是一个开源的图形用户界面库&#xff0c;旨在提供轻量级、可移植、灵活和易于使用的图形用户界面解决方案。 它适用于嵌入式系统&#xff0c;可以在不同的操作系统、微控制器和图形加速器上运行。LVGL的核心…

1.go安装及相关配置

目录 概述下载基本命令Go build环境设置 结束 概述 下载 官网速递 选择 1.20.x 一个是因为是次新版本&#xff0c;另一个&#xff0c;mac 系统是 10.13.6 &#xff0c;1.20.x 是最后一个支持此版本的。 环境变量 GOROOT go的安装目录(将go安装到哪里 which go、cat /etc/p…

高并发IO底层原理

1 概述 IO底层原理是隐藏在Java编程知识之下的基础知识&#xff0c;是开发人员必须掌握的基本原理。本文从操作系统的底层原理入手&#xff0c;通过图文的方式为大家深入剖析高并发IO的底层原理&#xff0c;并介绍如何通过设置来让操作系统支持高并发。 2 IO读写的基本原理 为…

文件模块常用api

文件模块常用api 文件夹常用操作 文件夹操作 fs.mkdir fs.rmdir 需要是空目录 题目&#xff1a;递归删除目录* 串行/并行删除文件*

【电商API】DIY网络爬虫收集电商数据

DIY网络爬虫收集电商数据 网络爬虫是最常见和使用最广泛的数据收集方法。DIY网络爬虫确实需要一些编程知识&#xff0c;但整个过程比一开始看起来要简单得多。 当然&#xff0c;爬虫的有效性取决于许多因素&#xff0c;例如目标的难度、网站方的反爬虫措施等。如果将网络抓取用…

机器学习根据金标准标记数据-九五小庞

根据金标准标记数据是一种在机器学习和数据科学中常见的操作&#xff0c;主要用于评估分类模型的性能。其基本步骤如下&#xff1a; 收集数据&#xff1a;首先需要收集相关领域的原始数据&#xff0c;这些数据通常来自不同的来源和渠道。数据清洗和预处理&#xff1a;在这一步…

soft212期末

文章目录 安卓填空题选择题 C# 安卓 Dalvik中得到Dx工具会把部分class文件转换成dex文件。 如果希望在XML布局文件中调用颜色资源&#xff0c;可以使用color调用 Android程序入口的Activity是在AndroidManifest.xml文件中注册的 Android中查看应用程序日志的工具是LogCat Dal…

JavaScript面向对象之实践项目

1、cat项目 &#xff08;1&#xff09;需要修改的原代码 &#xff08;2&#xff09;修改要求 使用括号表示法将name属性的值存储在变量catName中。使用点表示法运行greeting()方法。将color属性值更新为白。重写greeting() 方法&#xff0c;使它的问候语为"孟买猫碳头对…