07章【常用类库API】

字符串操作

String类

  • String可以表示一个字符串。
  • String类实际是使用字符数组存储的。

String类的两种赋值方式:

  • 一种称为直接赋值:
String name = “小白” 
  • 通过关键字new调用String的构造方法赋值
String name = new String(“小白”)

String类的两种赋值分析:

  • 字符串常量池
  • String name = new String(“小白”),在内存中的分析
  • String name =“小白”,在内存中的分析

String类编译期与运行期分析:

  • 编译期和运行期
  • 代码示例:4种情况分析

String类字符与字符串操作方法:
在这里插入图片描述

String类字节与字符串操作方法:
在这里插入图片描述

String类判断是否以指定内容开头或结尾:
在这里插入图片描述

String类替换操作:
在这里插入图片描述

String类字符串截取操作:
在这里插入图片描述

String类字符串拆分操作:
在这里插入图片描述

String类字符串查找操作:
在这里插入图片描述
在这里插入图片描述

String类其它操作方法:
在这里插入图片描述

StringBuffer类

在实际开发当中,我们经常会使用到字符串连接的操作,如果用String来操作,则使用“+”号完成字符串的连接操作。

使用String连接字符串,代码性能会非常低,因为String的内容不可改变。
解决这个问题的方法是使用StringBuffer。

StringBuffer类源码分析

StringBuffer常用操作方法
在这里插入图片描述

StringBuilder类

StringBuffer的兄弟StringBuilder:
一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer 要快。

JDK1.5以后,字符串相加原理分析


程序国际化

对国际化程序的理解

Internationalization:国际化程序可以这样理解:

  • 同一套程序代码可以在各个语言环境下进行使用。
  • 各个语言环境下,只是语言显示的不同,那么具体的程序操作本身都是一样的,那么国际化程序完成的就是这样的一个功能

Locale类

Locale 对象表示了特定的地理、政治和文化地区。需要 Locale 来执行其任务的操作称为语言环境敏感的操作,它使用 Locale 为用户量身定制信息。例如,显示一个数值就是语言环境敏感的操作,应该根据用户的国家、地区或文化的风俗/传统来格式化该数值。

  • 使用此类中的构造方法来创建 Locale:
Locale(String language)
Locale(String language, String country)
  • 通过静态方法创建Locale:
getDefault()

ResourceBundle类

国际化的实现核心在于显示的语言上,通常的做法是将其定义成若干个属性文件(文件后缀是*.properties),属性文件中的格式采用“key=value”的格式进行操作。

  • ResourceBundle类表示的是一个资源文件的读取操作,所有的资源文件需要使用
  • ResourceBundle进行读取,读取的时候不需要加上文件的后缀。
  • getBundle(String baseName)
  • getBundle(String baseName,Locale locale)
  • getString(String key)

处理动态文本

  • 前面的示例读取的内容都是固定的,如果现在假设要想打印这样的信息“欢迎你,XXX!”,具体的名字不是固定的,那么就要使用动态文本进行程序的处理。
  • 进行动态的文本处理,必须使用java.text.MessageFormat类完成。这个类是java.text.Format的子类。

Math与Random类

Math类

Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
使用Math类可以有两种方式:

  • 直接使用(Math所在的包java.lang为默认引入的包)
  • 使用 import static java.lang.Math.abs; 静态导入
    在这里插入图片描述

Random类
Random:此类的实例用于生成伪随机数流
在这里插入图片描述


日期操作类

Date类

  • 类 Date 表示特定的瞬间,精确到毫秒,也就是程序运行时的当前时间。
Date date = new Date(); // 实例化Date对象,表示当前时间

Calendar类

  • Calendar,日历类,使用此类可以将时间精确到毫秒显示。
//两种实例化方式
Calendar c = Calendar.getInstance();
Calendar c = new GregorianCalendar();

DateFormat类及子类SimpleDateFormat


对象比较器

对两个或多个数据项进行比较,以确定它们是否相等,或确定它们之间的大小关系及排列顺序称为比较。
前面我学习过Arrays.sort方法可实现对象的排序操作:

public static void sort(Object[] a)

Comparable接口:

  • 此接口强行对实现它的每个类的对象进行整体排序。
  • 这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。

Comparator接口:

  • Comparable接口是要求自定义类去实现,按照OO原则:对修改关闭,对扩展开放。
  • 那么如果这个类已经定义好了,不想再去修改它,那如何实现比较呢?
  • Comparator接口:强行对某个对象collection进行整体排序的比较。

对象的克隆

将一个对象复制一份,称为对象的克隆技术。
在Object类中存在一个clone()方法:

protected Object clone() throws CloneNotSupportedException

如果某个类的对象要想被克隆,则对象所在的类必须实现Cloneable接口。此接口没有定义任何方法,是一个标记接口。


System与 Runtime类

System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。

成员变量

  • System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流。

成员方法

System类中提供了一些系统级的操作方法

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
  • 该方法的作用是数组拷贝,也就是将一个数组中的内容复制到另外一个数组中的指定位置
  • 由于该方法是native方法,所以性能上比使用循环高效。
public static long currentTimeMillis()
  • 该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间1970年1月1号0时0分0秒所差的毫秒数。
public static void exit(int status)
  • 该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。
  • 使用该方法可以在图形界面编程中实现程序的退出功能等。
public static void gc()
  • 该方法的作用是请求系统进行垃圾回收。
  • 至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况。
public static String getProperty(String key)
  • 该方法的作用是获得系统中属性名为key的属性对应的值。
    • java.version Java 运行时环境版本
    • java.home Java 安装目录
    • os.name 操作系统的名称
    • os.version 操作系统的版本
    • user.name 用户的账户名称
    • user.home 用户的主目录
    • user.dir 用户的当前工作目录

Runtime类:每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。

//获取Java运行时相关的运行时对象
Runtime rt = Runtime.getRuntime();
System.out.println("处理器数量:" + rt.availableProcessors()+" 个");
System.out.println("Jvm总内存数 :"+ rt.totalMemory()+" byte");
System.out.println("Jvm空闲内存数:"+ rt.freeMemory()+" byte");
System.out.println("Jvm可用最大内存数:"+ rt.maxMemory()+" byte");
//在单独的进程中执行指定的字符串命令。
rt.exec("notepad");

数字处理工具类

  • BigInteger:可以让超过Integer范围内的数据进行运算。

构造方法:

public BigInteger(String val)

常用方法:

public BigInteger add(BigInteger val)
public BigInteger subtract(BigInteger val)
public BigInteger multiply(BigInteger val)
public BigInteger divide(BigInteger val)
public BigInteger[] divideAndRemainder(BigInteger val)
  • BigDecimal:由于在运算的时候,float类型和double很容易丢失精度,为了能精确的表示、计算浮点数,Java提供了BigDecimal,
    不可变的、任意精度的有符号十进制数。

构造方法:

public BigDecimal(String val)

常用方法:

public BigDecimal add(BigDecimal augend)
public BigDecimal subtract(BigDecimal subtrahend)
public BigDecimal multiply(BigDecimal multiplicand)
public BigDecimal divide(BigDecimal divisor)
  • DecimalFormat:Java 提供 DecimalFormat类,帮你用最快的速度将数字格式化为你需要的样子。例如,取2位小数。

示例:

double pi=3.1415927; //圆周率
//取一位整数,结果:3
System.out.println(new DecimalFormat("0").format(pi));
//取一位整数和两位小数,结果3.14
System.out.println(new DecimalFormat("0.00").format(pi));
//取两位整数和三位小数,整数不足部分以0填补,结果:03.142
System.out.println(new DecimalFormat("00.000").format(pi));
//取所有整数部分,结果:3
System.out.println(new DecimalFormat("#").format(pi));
//以百分比方式计数,并取两位小数,结果:314.16%
System.out.println(new DecimalFormat("#.##%").format(pi));

MD5工具类

  • MD5的全称是Message-Digest Algorithm 5(信息-摘要算法)
//确定计算方法
MessageDigest md5=MessageDigest.getInstance("MD5");
//JDK1.8新增Base64
String newstr = Base64.getEncoder().encodeToString(md5.digest(str.getBytes("utf-8")));
//1.8之前使用sun.misc.BASE64Encoder(此类没有访问权限,在rt.jar中添加访问权限:sun/misc/*)
BASE64Encoder base64 = new BASE64Encoder();
base64.encode(md5.digest(str.getBytes("utf-8")));

数据结构之二叉树实现

  • 树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构。
  • 二叉树(Binary Tree)是每个节点最多有两个子树的有序树。通常子树被称作“左子树” 和“右子树”。

二叉树算法的排序规则:

  • 选择第一个元素作为根节点
  • 之后如果元素大于根节点放在右子树,如果元素小于根节点,则放在左子树
  • 最后按照中序遍历的方式进行输出,则可以得到排序的结果(左->根->右)

8、3、10、1、6、14、4、7、13
在这里插入图片描述


JDK1.8新特性

Lambda表达式

  • Lambda表达式(也称为闭包)是整个Java 8发行版中最受期待的在Java语言层面上的改变
  • Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中),或者把代码看成数据。
  • Lambda表达式用于简化JAVA中接口式的匿名内部类。被称为函数式接口的概念。
  • 函数式接口就是一个具有一个方法的普通接口。像这样的接口,可以被隐式转换为lambda表达式。

语法:

(参数1,参数2...) -> { ... }
  • 没有参数时使用Lambda表达式
  • 带参数时使用Lambda表达式
  • 代码块中只一句代码时使用Lambda表达式
  • 代码块中有多句代码时使用Lambda表达式
  • 有返回值的代码块
  • 参数中使用final关键字

接口中的默认方法和静态方法

interface A{public default void print(){}public static void method(){}
}

默认方法与静态方法并不影响函数式接口的契约,可以任意使用

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

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

相关文章

【Github】作为程序员不得不知道的几款Github加速神器

背景 众所周知,近几年国内用户在访问Github时,经常间歇性无法访问Github。 接下来推荐几款 作为程序员不得不知道的Github加速神器。 推荐1:FastGithub FastGithub是一款Github加速神器,解决github打不开、用户头像无法加载、r…

【数据结构和算法】--- 二叉树(3)--二叉树链式结构的实现(1)

目录 一、二叉树的创建(伪)二、二叉树的遍历2.1 前序遍历2.2 中序遍历2.3 后序遍历 三、二叉树节点个数及高度3.1 二叉树节点个数3.2 二叉树叶子节点个数3.3二叉树第k层节点个数3.4 二叉树查找值为x的节点 四、二叉树的创建(真) 一、二叉树的创建(伪) 在学习二叉树的基本操作前…

Unity Text超框 文字滚动循环显示

Unity Text超框 文字滚动循环显示 //container Text using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; using UnityEngine.UI;public class AutoScrollText : MonoBehaviour {private Text[] _texts new Text[…

MATLAB字符串编辑常用代码

1.字符串赋值 % 字符串赋值 sabcdefg 2.字符串属性和操作 (1)获取字符串长度 sabcdefg;% 字符串赋值 length(a) % 获取字符串长度 (2)连接字符串 % 连接两个字符串,每个字符串最右边的空格被裁切 s1a s2b s3strcat(s1,s2) 3.字符串比较 % strcmp 比较两个字符串是…

9. UE5 RPG创建UI(下)

在上一篇文章里,制作了显示血量和蓝量的ui,并且还将ui和获取数据使用的控制器层创建出来并初始化成功。现在只有主用户控件上面被添加了控制器层,还未给每个用户控件赋予控制器层。接下来要实现对属性的广播功能,在属性值变化的时…

gitlab.rb主要配置

根据是否docker安装,进入挂载目录或安装目录 修改此文件,我一般是在可视化窗口中修改,有时候也在命令行手敲 将下面的配置复制到该文件中 external_url http://192.168.100.50 # nginx[listen_port] = 8000 (docker安装的这一行不需要,因为端口映射导致此处修改会导致访问…

2024茶饮品牌如何出圈,媒介盒子分析

随着新式茶饮的消费场景更加多元化,品类不断拓宽,消费者对新式茶饮的热情也是只增不减。居民可支配收入水平不断上升,居民消费升级为新式茶饮的发展也提供了良好基础,今天媒介盒子就来和大家聊聊:2024茶饮品牌如何出圈…

win10系统 pdf 文件无法正常预览

网上也看了不少办法,修改注册表什么的,太麻烦了,尝试了一下下载Adobe Acrobat Reader,安装后就可以成功预览显示啦!对,就是这么简单!Adobe Acrobat Reader下载链接:link

随机森林中每个树模型分裂时的特征选取方式

随机森林中每个树模型分裂时的特征选取方式 随机森林中每个树模型的每次分裂都是基于随机选取的特征子集进行分裂的。 具体来说,对于每个决策树,在每个节点的分裂过程中,随机森林算法会从原始特征集合中随机选择一个特征子集,然…

vulhub之Zabbix篇

CVE-2016-10134--SQL注入 一、漏洞介绍 zabbix是一款服务器监控软件,其由server、agent、web等模块组成,其中web模块由PHP编写,用来显示数据库中的结果。 漏洞环境 在vulhub靶场进行复现,启动zabbix 3.0.3。 二、复现步骤 1…

[代码随想录2]51单片机1T/12T到底怎么选?

为什么说51单片机怎么选? 时至今日,44年来51单片机自强不息,怎么描述它,堪称控制芯片中的王者!!! 假设你21岁大学毕业进入社会,交社保交到今天恭喜你成功退休了214465 传统即标准5…

搭建一个简单的Spring Demo

要学习Spring 源码,一个是从Spring GitHub 上去down源码,然后倒入IDEA编译,但这种方法费时费力,如果你不需要对Spring 源码进行修改后,再编译的话,直接搭建一个Spring Demo 的Maven项目,引入Spr…

代理设计模式JDK动态代理CGLIB动态代理原理

代理设计模式 代理模式(Proxy),为其它对象提供一种代理以控制对这个对象的访问。如下图 从上面的类图可以看出,通过代理模式,客户端访问接口时的实例实际上是Proxy对象,Proxy对象持有RealSubject的引用&am…

使用DockerFile构建镜像与镜像上传

目录 前言:为什么要使用Dockerfile ? DockerFile构建镜像 1、构建基础对象 2、Dockerfile文件结构 3、构建Dockerfile文件镜像 二、镜像上传(阿里云) 前言:为什么要使用Dockerfile ? 首先Dockerfile …

IOS-生命周期-Swift

目录 App生命周期应用状态未运行——Not running未激活——Inactive激活——Active后台——Backgroud挂起——Suspended 关系图生命周期方法相关方法注意在其他地方监听 ViewController生命周期UIView生命周期 App生命周期 应用状态 App主要有五种状态,分别是&…

Axure RP 9 动态面板

目录 轮播图绘制 多种方式登录 前言: 轮播图绘制、多种方式登录界面绘制 轮播图绘制 首先绘制一个动态面板 在概要区域选中动态面板进入State1面板中插入图片绘制 双击图片绘制插入本地图片,右键State1重复状态并更改图片 点击交互面板新建交互将需要添加…

RuoYi-Cloud本地部署--详细教程

文章目录 1、gitee项目地址2、RuoYi-Cloud架构3、本地部署3.1 下载项目3.2 idea打开项目3.3 启动nacos3.4 若依数据库准备3.5 启动redis3.6 修改nacos中的各个模块的配置文件3.7 启动ruoyi前端项目3.8 启动各个微服务模块 4、启动成功 1、gitee项目地址 https://gitee.com/y_p…

http网络编程——在ue5中实现文件传输功能

http网络编程在ue5中实现 需求:在unreal中实现下载功能,输入相关url网址,本地文件夹存入相应文件。 一、代码示例 1.Build.cs需要新增Http模块,样例如下。 PublicDependencyModuleNames.AddRange(new string[] { "Core&q…

锂电池SOC估计 | PatchTST时间序列模型锂电池SOC估计

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池SOC估计 | PatchTST时间序列模型锂电池SOC估计 采用新型PatchTST时间序列模型预测锂电池SOC,送锂电池数据集 可替换数据集,实现负荷预测、流量预测、降雨量预测、空气质量预测等其他多种…

k8s之ingress

ingress基于域名进行映射,把url(http https)的请求转发到service,再由service把请求转发到每一个pod ingress只要一个或者少量的公网ip或者LB,可以把多个http请求暴露到外网,七层反向代理 理解为service的service,是…