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,一经查实,立即删除!

相关文章

c++学习理解之路——基类指针指向子类

参考:基类指针指向子类对象_基类指针可以指向子类-CSDN博客 笔记(基于自己的理解,欢迎讨论) 基类指针对象只存储跟基类中的成员函数、成员对象相关信息,子类指针对象存储了子类和基类中的信息。按道理来说&#xff0c…

【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的节点 四、二叉树的创建(真) 一、二叉树的创建(伪) 在学习二叉树的基本操作前…

使用Python基于metricbeat和heartbeat采集数据进行告警

一、系统架构 IP主机名角色备注11.0.1.11kafka1kafka和MySQL11.0.1.12kafka2kafka11.0.1.13kafka3kafka11.0.1.14demo1metricbeat和heartbeat 二、部署Kafka 省略 二、部署Metricbeat和Heartbeat metricbeat配置: metricbeat.config.modules:path: ${path.confi…

电商铺货上货接口API实现无货源上货(1688/淘宝/京东/拼多多)

获取商品列表接口 item_search 获取商品详情页数据接口 item_get 1688.item_get 公共参数 获取API测试权限和地址 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包…

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 比较两个字符串是…

251.【2023年华为OD机试真题(C卷)】5G网络建设(最小生成树算法-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-5G网络建设二.解题思路三.题解代码Python题解代…

9. UE5 RPG创建UI(下)

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

【Effective C++】4. 设计与声明

Item22 将成员变量声明为private 有以下几个优势: 1. 语法一致性:访问class成员时每一个都是函数,不需要记住是否需要小括号 2. 使成员变量的处理有更精准的控制 class AccessLevels { public:int getReadOnly() const { return readOnly…

【issue-halcon例程学习】fuzzy_measure_pin.hdev

例程功能 检查IC的引线宽度和引线距离。 代码如下 dev_close_window () read_image (Image, board/board-06) get_image_size (Image, Width, Height) dev_open_window (0, 0, Width, Height, black, WindowHandle) * * --- Fuzzy Measure: Row1 : 305.5 Col1 : 375.5 Phi1 …

电商平台接口自动化测试脚本编写规范与实践

随着电商业务的快速发展,电商平台接口的稳定性和可靠性变得越来越重要。为了提高测试效率和保证接口质量,越来越多的企业开始采用自动化测试技术。本文将介绍电商平台接口自动化测试脚本的编写规范与实践,并给出相应的代码示例。 一、编写规…

gitlab.rb主要配置

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

六使用Maven插件构建Docker镜像

使用Maven插件构建Docker镜像 我们知道,Maven是一个强大的项目管理与构建工具。如果可以使用Maven构建Docker镜像,那么我们的工作就能得到进一步的简化。 经过调研,以下几款Maven的Docker插件进入笔者视野,如表13-1所示。 插件…

C语言学习(3)—— 函数

C语言不支持函数重载 一、函数的使用方法 1. 直接使用 &#xff08;1&#xff09;定义的函数在main函数 之上 #include<stdio.h> int sum(int num1, int num2){int res 0;res num1 num2;return res; }int main(){int res sum(2, 3);printf("%d", res…

大数据学习之Flink、搞懂Flink的恢复策略

第一章、Flink的容错机制 第二章、Flink核心组件和工作原理 第三章、Flink的恢复策略 第四章、Flink容错机制的注意事项 第五章、Flink的容错机制与其他框架的容错机制相比较 目录 第三章、Flink的恢复策略 Ⅰ、恢复策略 1. Checkpoint&#xff1a; 2. Savepoint&#…

Sentinel降级操作

1.通过对feign调用的降级 如果访问失败&#xff0c;则返回另外的信息 正常的feign调用 FeignClient(value "gulimall-seckill",fallback SeckillFeignServiceFallback.class) public interface SeckillFeignService {/*** 写给商品服务的接口&#xff0c;查询秒杀…

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

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

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

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

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

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