目录
三、String类、StringBuilder和StringBuffer类
🎁博主介绍:博客名为tq02,已学C语言、JavaSE,目前学MySQL和JavaWed
前言
本文记录的是各种各样的函数及其方法,以及数据结构----顺序表、链表、栈、队列及其创建和方法。官方查询链接:Java SE 14 & JDK 14(oracle.com)
一、Math类
java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。
函数名 | 作用 | |
---|---|---|
绝对值 | Math.abs( x ) | 返回 x 的绝对值 |
比较大小 | Math.max(x,y) | 返回 x和y的较大值 |
比较大小 | math.min(x,y) | 返回 x和y的较小值 |
幂运算 | Math.pow(x,y) | 返回 x的y次幂 |
幂运算 | Math.exp( x) | 返回 e的x次幂 |
幂运算 | Math.expm1(x) | 返回 e的x次幂 -1 |
方根函数 | Math.sqrt( x ) | 返回 x的平方根 |
方根函数 | Math.cbrt( x) | 返回 x的立方根 |
方根函数 | Math.hypot(x,y) | 返回 x和y的平方根之和 |
取整 | Math.ceil( x ) | 返回 最近的且小于这个数的整数 |
取整 | Math.floor( x) | 返回 最近的且大于这个数的整数 |
对数函数 | Math.log( e ) | 返回 e为底的对数 |
对数函数 | Math.log10( x ) | 返回 以10为底的对数 |
随机数 | Math.random() | 返回 [ 0,1)之间无符号的double值 |
二.Scanner类
java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。而这个Scanne对象r需要创建,才可以使用.
语法:Scanner 对象名 =new Scanner(System.in);
例如: Scanner sc =new Scanner(System.in);
|------------------|-----------------|
| 方法名 | 作用 |
| sc.next() | 接收字符串 |
| sc.nextLine() | 接收字符串 |
| sc.nextInterge() | 接收Int类型整数 |
| sc.nextFloat() | 接收 float 类型的数据 |
| sc.nextBoolean() | 接收 boolean类型的数据 |
从表格中,可以发现,需要什么数据就使用next+首字母大写的数据类型 ,而next() 与 nextLine() 都是输入字符串,那么区别是什么呢?
next():
- 1、一定要读取到有效字符后才可以结束输入。
- 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
- 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next() 不能得到带有空格的字符串。
nextLine():
- 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
- 2、可以获得空白。
三、String类、StringBuilder和StringBuffer类
String 类代表字符串,而 StringBuilder和StringBuffer是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder(StringBuffer) 对象中的内容是可变的。
三者之间的区别:
- String类:内容是不可变的
- StringBuilder和StringBuffer类:内容是可变的
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
💖String类
语法: String 对象名=new String();
示例:String str=new String();
|-------------|-----------------------|-----------------------------|
| | 方法 | 作用 |
| | str.charAt( x ) | 返回字符串下标为x 的字符 |
| | str.length() | 返回字符串的长度 |
| 转换为数组 | str.getBytes() | 将当前字符串转换为byte数组 |
| 转换为数组 | str.tcCharArray() | 将当前字符串转换为char数组 |
| | str.isEmpty() | 判断字符串是否为空,若空为true |
| 判断大小或相等 | str.equals(str1) | 比较 str和str1 是否相等,相同返回true |
| 判断大小或相等 | str.compareTo( str1 ) | 比较两个字符串的大小 |
| 分割字符串 | str.split( str1) | 将字符串分割为String数组,并且str1为分隔符 |
| 分割字符串 | str.subString( x ) | 截取从下标0开始到下标x 的字符串 |
| 分割字符串 | str.subString( x,y ) | 截取从下标x开始到下标y 的字符串 |
| 索引 | str.indexOf( str1) | 返回第一次出现的str1在str中的下标 |
| 索引 | str.indexOf( str1 ,x) | 返回从x下标开始第一次出现的str1在str中的下标值 |
两个字符串的比较详解:http://t.csdn.cn/ynEL9
💖StringBuilder和StringBuffer
两者使用,需要创建对象,并且可以构造初始化的字符串和容量大小,如果不设定容量大小则默认为16个字符。二者的常用方法基本一致。
|------------------------------|--------------------|
| 方法 | 作用 |
| append( str ) | 将str字符或者字符串追加在此序列中 |
| capacity() | 获取字符串长度 |
| insert( int x,char[ ] arr) | 在x下标开始插入字符 |
| delete(int start,int end) | 删除下标start到下标end的字符 |
| toString() | 转换为String类型的字符串 |
四.Arrays类
该类用于操作数组的各种方法(如排序和搜索),不需要创建对象,直接使用类名
|---------------------------|-----------------|
| 方法 | 作用 |
| Array.sort(数组名) | 将数组进行升序操作 |
| Array.equals(数组1,数组2) | 判断两个数组是否全等 |
| Array.copyOf(数组1,x) | 复制长度为x的数组1 |
| Array.binarySearch(数组1,x) | 二分查找,查找数组等于x的下标 |
| Array.toSring(数组1) | 将数组转换为字符串 |
五.Random类
该类可生成随机数,随机数可为很多数据类型的,使用时,需要创建对象。例如:
Random random =new Random();
|----------------------|------------------|
| 方法 | 作用 |
| random.nextInt(x).+y | 随机生成一个[ y,x)的整数 |
| random.nextBoolean() | 随机生成一个true和false |
六.时间类
时间类大致有6种。
|-------------------------|----------|
| 类名称 | 类名称 |
| java.util.Date(父类) | 年月日时分秒 |
| java.sql.Date(子类) | 年月日 |
| java.sql.Time(子类) | 时分秒 |
| java.sql.Timestamp(子类) | 年月日时分秒毫秒 |
| java.util.Calendar(日历类) | 年月日时分秒毫秒 |
java
public class JavaDateTest {
public static void main(String[] args) {
java.util.Date date = new java.util.Date();
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
java.sql.Time sqlTime = new java.sql.Time(date.getTime());
java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(date.getTime());
System.out.println("【java.util.Date】: " + date); // 【java.util.Date】: Fri Feb 11 13:12:39 CST 2022
System.out.println("【java.sql.Date】: " + sqlDate); // 【java.sql.Date】: 2022-02-11
System.out.println("【java.sql.Time】: " + sqlTime); // 【java.sql.Time】: 13:12:39
System.out.println("【java.sql.Timestamp】: " + sqlTimestamp); // 【java.sql.Timestamp】: 2022-02-11 13:12:39.248
java.util.Calendar calendar = java.util.Calendar.getInstance();
System.out.println("【java.util.Calendar】: " + calendar.getTime()); // 【java.util.Calendar】: Fri Feb 11 13:12:39 CST 2022
System.out.println(new java.util.Date(0L)); // Thu Jan 01 08:00:00 CST 1970
System.out.println(new java.sql.Date(0L)); // 1970-01-01
System.out.println(new java.sql.Time(0L)); // 08:00:00
System.out.println(new java.sql.Timestamp(0L)); // 1970-01-01 08:00:00.0
}
}
在代码中,getTime()是获取当前时间,
日历类的创建需要使用getInstance(),作用是:使用默认时区和区域设置获取日历。
七.ArrayList顺序表
ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表
创建语法:List<类型包装类> 变量名= new ArrayList<>();
常见方法:
|-----------------------------|---------------------------|
| 方法 | 解释 |
| boolean add(E e) | 尾插 e |
| void add(int index, E e) | 将e插入到 index 位置 |
| E remove(int index) | 删除 index 位置元素 |
| boolean remove(Object o) | 删除遇到的第一个 o |
| E get(int index) | 获取下标 index 位置元素 |
| void clear() | 清空顺序表 |
| E set(int index, E element) | 将下标 index 位置元素设置为 element |
| int indexOf(Object o) | 返回第一个。所在下标 |
| int lastIndexOf(Object o) | 返回最后一个o的下标 |
其中E代表数据类型
八、LinkedList与链表
LinkedList的底层是双向链表结构,LinkedList实现了List接口
创建语法: List<包装类> 变量名 = new LinkedList<>();
常用方法:
|-----------------------------|---------------------------|
| 方法 | 解释 |
| boolean add(E e) | 尾插e |
| add(int idex,E element) | 将e插入到index下标位置 |
| E remove(int index) | 删除 index 位置元素 |
| boolean remove(Object o) | 删除遇到的第一个 o |
| E set(int index, E element) | 将下标 index 位置元素设置为 element |
| E get(int index) | 获取下标 index 位置元素 |
| void clear() | 清空 |
注:E 是数据类型。
九.Stack栈和Queue队列
栈,先进先出的,只允许在固定的一端进行插入和删除元素操作
|-----------|-----------|
| 方法 | 解释 |
| Stack() | 构造一个空的栈 |
| push(E e) | 将e入栈,并返回e |
| pop() | 将栈顶元素出栈返回 |
| peek() | 获取栈顶元素 |
| size() | 获取栈中有效个数 |
| empty() | 判断是否为空 |
队列 ,Queue是个接口,在实例化时必须实例化LinkedList的对象,因为LinkedList实现了Queue接口
创建语法:Queue<包装类> 变量名 = new LinkedList<>();
|------------|-----------|
| 方法 | 解释 |
| offer(E e) | 入队 |
| poll() | 出队 |
| peek() | 获取队头元素 |
| size() | 队列中有效元素个数 |
| isEmpty() | 是否为空 |
十.PriorityQueue优先级队列,堆
PriorityQueue使用条件:
- 使用时必须导入PriorityQueue所在的包,即 import java.util.PriorityQueue;
- PriorityQueue中放置的元素必须要能够比较大小,不能插入无法比较大小的对象,否则会抛出
ClassCastException异常 - 不能插入null对象,否则会抛出NullPointerException
- 底层默认容量为11,没有容量限制,可以插入任意多个元素,其内部可以自动扩容
- PriorityQueue底层使用了堆数据结构,默认情况下是小堆
创建语法:PriorityQueue<包装类> 变量名 = new PriorityQueue<>();
|------------|----------------------|
| 函数名 | 功能介绍 |
| offer(E e) | 插入元素e,会自动扩容 |
| peek() | 获取优先级最高的元素,若空,返回null |
| poll() | 移除优先级最高元素,若空,返回null |
| size() | 获取有效元数个数 |
| clear() | 清空 |
| isEmpty() | 检测是否为空,空,返回treu |
以上便是Java的常用类和各数据结构的构造类及其方法
----------------懒惰的tq02