Java-常用API(StringBuffer,Math,Date,DataFormat,Calender,Runtime,System,包装类)

article/2025/1/17 3:04:53

Java常用API

StringBuffer

为了解决String字符串操作导致的内存冗余,提高效率,Java中提供了StringBuffer和StringBuilder来操作字符串,并且提供了很多方法,便于程序员开发

StringBuffer和StringBuilder中都有char类型可变长数组作为字符串的保存空间,使用到的方法类型和ArrayList类似

  • StringBuffer 线程安全,效率较低
  • StringBuilder 线程不安全,效率较高

StringBuffer构造方法

构造方法Constructor

  • StringBuffer();

    创建一个未存储任何字符串信息的空StringBuffer空间,底层初始化一个16个字符char类型数组

  • StringBuffer(String str);

    根据提供的String类型字符串创建对应的StringBuffer空间,底层char类型数组的容量会根据str.length + 16决定,并且保存对应的str

添加方法
  • append() 在缓冲区的尾部添加新的文本对象
  • insert() 在指定下标位置添加新的文本对象
package cn.ocean888;public class Demo1 {public static void main(String[] args) {StringBuffer stringBuffer = new StringBuffer("ocean, ocean, ocean, ocean");stringBuffer.append("AAAA");stringBuffer.append("BBBB");System.out.println(stringBuffer);StringBuilder stringBuiler = new StringBuilder("ABCDEFGHIJKLMNOPQISTUVWXYZ");stringBuiler.insert(3, "CCCC");System.out.println(stringBuiler);}
}

image-20210803084432016

查看方法
  • String toString();

    将底层的char类型数组保存的字符内容转换成对应的String类型字符串返回

  • int length();

    返回底层char类型数组中有多少有效元素

  • String substring(int begin);

    从指定位置开始获取到char’类型数组有效元素末尾对应的字符串截取操作

  • String substring(int begin, int end);

    从指定位置begin开始到end结束,获取对应的字符串,要头不要尾

  • int indexOf(String str);

    指定元素字符串所在下标位置

  • int lastIndexOf(String str);

    指定元素字符串最后一次所在下标位置

修改方法
  • replace(int start, int end, String str);

    从指定位置start开始,到end结束,start <= n <= end,使用str替换

  • setChar(int index, char ch)

    将指定位置设置为char字符

package cn.ocean888;public class Demo1 {public static void main(String[] args) {StringBuffer stringBuffer = new StringBuffer("ocean, ocean, ocean, ocean");stringBuffer.replace(1, 6, "888");System.out.println(stringBuffer);stringBuffer.setCharAt(1, 'Y');System.out.println(stringBuffer);}
}

image-20210803091642935

删除方法
  • delete(int start, int end);

    删除指定范围以内的字符

  • deleteCharAt(int index);

    删除指定下标的字符

逆序方法
  • reverse();

    逆序

Math数学类

  • public static double abs(double a);

    返回值为绝对值

  • public static double ceil(double a);

    向上取整

  • public static double floor(double a);

    向下取整

  • public static double round(double a);

    四舍五入

  • public static double random();

    随机数 0.0 <= n <= 1.0

image-20210803094136616

-3.6相对距离-4为0.4所以舍去,结果为-4

Date类

获取当前系统时间-大部分构造方法已经过时

构造方法

  • Date();

    创建一个Date,对应当前时间,精度在毫秒值

  • Date(long date);

    根据时间戳毫秒数,创建对应的Date对象,时间戳是从1970-01-01 00:00:00 GMT

常用方法

  • long getTime();

    通过Date类对象获取对应当前时间的毫秒数

    System.currentTimeMillis();

    可以获取当前系统时间戳毫秒数

DateFormat时间格式

  • DateFormat是一个abstract修饰的类,用于转换时间格式

  • DateFormat不能直接使用,一般使用DateFormat子类SimpleDataFormat来使用

  • SimpleDataFormat构造方法中需要的参数是一个String,String类型的参数有特定的要求

  • String format(Date data);

    根据指定匹配要求,转换Date格式成为字符串

  • Date parse(String format);

    按照指定的匹配规则,解析对应的字符串,返回一个Date数据

image-20210803102200090

package cn.ocean888;import java.text.SimpleDateFormat;
import java.util.Date;public class Demo2 {public static void main(String[] args) {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss E");String format = simpleDateFormat.format(new Date());System.out.println(format);}
}

image-20210803143902286

Calender日历类

替换了很多Date类中的方法,把很多数据都作为静态的属性,通过一些特定的方法来获取,比Date处理日期数据更加方便

Calender是一个abstract修饰的类,没有自己的类对象,这里通过特定的方法getInstance获取Calender日历类对象

public static Calender getInstance();

默认为当前系统时区

常用方法

  • public int get(int field);

    返回特定数据的数值

  • public void set(int field, int value);

    设置特定字段对应的数据

  • public Date getTime();

    返回得到一个Date对象,从计算机元年到现在的毫秒数,保存在date对象中

package cn.ocean888;import java.util.Calendar;
import java.util.Date;public class Demo3 {public static void main(String[] args) {Calendar calendar = Calendar.getInstance();int year = calendar.get(Calendar.YEAR);int month = calendar.get(Calendar.MONTH)+1;int day = calendar.get(Calendar.DAY_OF_MONTH);int hour = calendar.get(Calendar.HOUR_OF_DAY);int minute = calendar.get(Calendar.MINUTE);int second = calendar.get(Calendar.SECOND);int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);System.out.println(year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second + " " + dayOfWeek);calendar.set(Calendar.YEAR, 2008);calendar.set(Calendar.MONTH, 7);calendar.set(Calendar.DAY_OF_MONTH, 8);Date time = calendar.getTime();System.out.println(time);}
}

image-20210803203634719

System类

System类提供了大量的静态方法,操作的内容和系统有关

  • 可以获取当前时间戳 long currentTimeMillis()
  • 获取系统属性的方法 Properties getProperties();
  • 退出当前程序 exit(int status)
  • 数组拷贝方法 arrayCopy(Object src, int srcPos, Object dest, int destPos, int length)
package cn.ocean888;import java.util.Arrays;
import java.util.Properties;public class Demo4 {public static void main(String[] args) {// 属性类Properties properties = System.getProperties();properties.list(System.out);System.out.println("-----------");// 获取系统对应属性的数据String property = System.getProperty("os.name");System.out.println(property);System.out.println("-----------");// 数组拷贝方法int[] arr = {1, 3, 5, 7};int[] temp = new int[10];System.arraycopy(arr, 0, temp, 0, arr.length);System.out.println(Arrays.toString(temp));System.out.println("-----------");}
}

输出效果

image-20210803211939598

Runtime类

Runtime当前程序运行环境类对象,只要程序启动就又会对应的Runtime存在

获取Runtime对象的方法:

  • Runtime Runtime.getRuntime();

需要了解的方法:

  • gc(); JVM的GC机制,但是调用了GC方法,也不会立即执行
package cn.ocean888;import java.io.IOException;public class Demo5 {public static void main(String[] args) throws IOException {Runtime runtime = Runtime.getRuntime();System.out.println(runtime.totalMemory());System.out.println(runtime.freeMemory());System.out.println(runtime.maxMemory());}
}

image-20210804084805326

包装类

Java中提供了两种数据类型

  • 基本数据类型

    byte short int long double float boolean char

  • 引用数据类型

    类对象 数组 字符串

image-20210804085440057

自动装箱和自动拆箱

基本类型和包装类型之间进行转换的操作

  • 装箱:从基本类型到包装类
  • 拆箱:从包装类到基本类型
package cn.ocean888;public class Demo6 {public static void main(String[] args) {// 自动方式// 基本类型int num = 5;// 基本数据类型赋值给包装类,自动装箱的过程Integer num1 = num;System.out.println(num1);// 包装类转换成基本数据类型,自动拆箱的过程int num2 = num1;System.out.println(num2);// 强行包装Integer i = new Integer(5);Integer ii = Integer.valueOf(5);// 强制拆箱int intValue = i.intValue();}
}

image-20210804090243727

在输出结果上没有差异

包装类和字符串数据转换过程

image-20210804093852207


http://chatgpt.dhexx.cn/article/2ddOSh9y.shtml

相关文章

Java知识点--DataFormat,SimpleDateFormat和DateTimeFormatter

Java知识点–DataFormat&#xff0c;SimpleDateFormat和DateTimeFormatter 这个知识点没什么难懂的地方&#xff0c;就不一一赘述了。 import java.text.DateFormat; import java.util.Date; import java.util.Locale;public class test01 {public static void main(String[]…

04、添加 com.fasterxml.jackson.dataformat -- jackson-dataformat-xml 依赖报错

Correct the classpath of your application so that it contains a single, compatible version of com.fasterxml.jackson.dataformat.xml.XmlMapper 解决&#xff1a; 改用其他版本&#xff0c;我没写版本号&#xff0c;springboot自己默认的是 2.11.4 版本 成功启动项目…

Excel表格样式CellStyle的DataFormat可选值

Excel表格样式CellStyle的DataFormat可选值 干啥子遇到的问题DataFormat可选项源码查看出处1、访问https://poi.apache.org/apidocs/4.1/ ,全局搜索CellStyle2、找到其对应的类-BuiltinFormats 干啥子 解决表格样式的设置&#xff0c;找到DataFormat可选值。 遇到的问题 在使…

java中的Date类,DataFormat类及Calendar类的使用详解

Date类的构造方法 Date类拥有多个构造函数&#xff0c;只是部分已经过时&#xff0c;但是其中有未过时的构造函数可以把毫秒值转成日期对象。 /* * Date类的long参数的构造方法 * Date(long ) 表示毫秒值 * 传递毫秒值,将毫秒值转成对应的日期对象 * 结果为…

Java 常用类Data和Format类 使用教程

一、Date类使用方法。 1. new Date() 返回当前时间 Date date new Date(); System.out.println(date);//输出当前的时间。源码解释为&#xff1a; 2. new Date(10006060*24); 返回 从 Fri Jan 01 08:00:00 CST 1970经过1天的时间 long time 1000*60*60*24; Date date n…

矩阵按键行列反转扫描法

51单片机 | 矩阵键盘行扫描 ———————————————————————————————————————————— 分类&#xff1a; 按结构原理分&#xff1a; 触点式开关按键无触点开关按键 接入方式 独立式按键矩阵式键盘 ———————————————————…

基于GD32矩阵按键程序实现

目录 一、简介 二、原理图 三、程序实现 一、简介 矩阵键盘&#xff0c;也称矩阵按键&#xff0c;是为了节约单片机IO口占用所引入的一种外设。 二、矩阵按键的原理图 三、程序实现 GPIO初始化引脚代码 /*!\brief Init Key Function\param[in] none\param[out] non…

4、按键(独立/矩阵按键)

一、 独立按键原理 按键在闭合和断开时&#xff0c;触点会存在抖动现象。 PS:定义小灯时&#xff0c;如果定义为#define led P2&#xff0c;这样按下K1时八个灯就会同时熄灭或点亮&#xff0c;&#xff0c;当然&#xff0c;如果要其中几个灯点亮&#xff0c;就分别定义…

蓝桥杯单片机 独立按键与矩阵按键

文章目录 前言一、蓝桥杯按键原理图二、独立按键与矩阵按键处理思路 1.独立按键2.矩阵按键代码实现总结 前言 按键设计一般分为两种&#xff1a;独立按键和矩阵键盘。按键数量较少的用前者&#xff0c;按键数量较多的用后者。虽然两种设计都是操作按键&#xff0c;但是其键盘扫…

单片机STM32入门——(3)矩阵按键

单片机STM32入门——&#xff08;3&#xff09;矩阵按键 1.理论分析1.1键盘扫描方式1.2行扫描逻辑1.3列扫描逻辑 2.程序编写2.1按键扫描程序2.1.1按键初始化2.1.2按键扫描程序头文件2.1.3行扫描函数2.1.3列扫描函数 2.2主程序 1.理论分析 1.1键盘扫描方式 我们所用到的键盘为…

51单片机之按键(独立按键矩阵按键)

难的东西学不会是因为简单的知识没学好 基础不牢&#xff0c;地动山摇 按键 1.1基础温习 &#xff08;1&#xff09;按键的物理结构 &#xff08;2&#xff09;单片机引脚有两种状态&#xff08;I/O&#xff09;输入【读】或者输出【写】 &#xff08;3&#xff09;上拉电阻…

51学习-矩阵按键篇

使用并行接口方式连接键盘&#xff0c;对独立式键盘而言&#xff0c;8根I/O口线可以接 **8** 个按键&#xff0c;而对矩阵式键盘而言&#xff0c;8根I/O口线最多可以接 **64** 个按键。 项目(工程)的时候&#xff0c;我们经常要用到比较多的按键&#xff0c;而且IO资源紧张&am…

4x4矩阵按键应用详解

一.简介 4x4矩阵按键是单片机外部设备中所使用的排布类似于矩阵的按键组。显然矩阵按键的使用要比独立按键要复杂一些&#xff0c;编程也要复杂一些&#xff0c;但可以单片机IO资源。4x4矩阵按键即分为4组列线&#xff0c;4组行线&#xff0c;并将行线所接的单片机的I/O口作为…

独立按键和矩阵按键c语言,第八章 独立按键和矩阵按键

我们和单片机之间进行信息交互,主要包含两大类,输入设备和输出设备。前边讲的LED小灯、数码管、点阵都是输出设备,这节课我们学习一下最常用的输入设备——按键。在本节课的学习过程中我们还会穿插介绍一点硬件设计的基础知识。 8.1单片机最小系统电路解析 8.1.1电源 我们在…

单片机 矩阵式按键

单片机 矩阵式按键 一、简述 在单片机应用系统中&#xff0c;通过按键实现数据输入及功能控制是非常普遍的&#xff0c;通常在所需按键数量不多时&#xff0c;系统常采用独立式按键。需要按键数量比较多&#xff0c;为了减少I/O口的占用&#xff0c;通常将按键排列成矩阵。测…

矩阵按键原理和BUG

当我们的电路有很多按键时&#xff0c;一般会采用矩阵方式与单片机相连来减少对单片机IO的浪费&#xff0c;如下图方式。 这个电路的原理: 1、比如检测S13是否按下&#xff0c;单片机把Line4设为输出&#xff0c;并输出低电平&#xff0c;而Line3、Line2、Line1设为开路输入&…

关于矩阵按键

前段时间老师讲了矩阵按键&#xff0c;就把程序的理解写下来 看图片&#xff0c;只有主函数和串口。串口在此用来发送我们的按键值&#xff0c;波特率9600&#xff0c;频率11.0592。 我们用的是4*4矩阵按键 我们的矩阵按键连在了单片机的P0口&#xff08;stc15f2k60s2&#xf…

独立按键和矩阵按键c语言,单片机独立按键与矩阵按键原理图

当前位置:电工之家 > 电工知识 > 单片机 > 正文 单片机独立按键与矩阵按键原理图 时间:2017-02-22 12:40 来源:电工之家 单片机独立按键与矩阵按键原理图 独立按键 通常的按键分为独立式按键和矩阵式按键两种,独立式按键比较简单,并且与独立的输入线相连接,如图13…

【按键扫描】矩阵按键之多按键扫描

前言 上一章我们介绍了经典矩阵键盘的实现方法&#xff0c;但是示例程序中仅实现了单按键检测功能。虽说单按键已经基本可以覆盖矩阵键盘的常见需求&#xff0c;但在一些特殊应用场合&#xff0c;我们仍然需要多按键识别操作&#xff0c;或者一些类似电脑组合按键的功能支持。…

STM32矩阵按键

矩阵按键原理 本实验使用STM32F103单片机&#xff0c;主题代码通用的。 如果每个按键占用一个GPIO引脚&#xff0c;对于使用多个按键来说就是一种资源的浪费&#xff0c;因此当我们在设计时&#xff0c;可以考虑矩阵这种方式。本实验使用4*4也就是16个按键。 矩阵按键相对于独立…