Java基础---常用类大全以及各数据结构的方法大全

简介: Java基础---常用类大全以及各数据结构的方法大全

前言

        本文记录的是各种各样的函数及其方法,以及数据结构----顺序表、链表、栈、队列及其创建和方法。官方查询链接: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() 获取字符串长度
方法 作用
append( str  )  将str字符或者字符串追加在此序列中
capacity() 获取字符串长度

四.Arrays类

       该类用于操作数组的各种方法(如排序和搜索),不需要创建对象,直接使用类名

方法 作用
Array.sort(数组名) 将数组进行升序操作
Array.equals(数组1,数组2) 判断两个数组是否全等
方法 作用
Array.sort(数组名) 将数组进行升序操作
Array.equals(数组1,数组2) 判断两个数组是否全等

五.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(日历类) 年月日时分秒毫秒
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
void add(int index, E e) 将e插入到 index 位置
E remove(int index) 删除 index 位置元素
boolean remove(Object o) 删除遇到的第一个 o
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

tq02
+关注
目录
打赏
0
0
0
0
7
分享
相关文章
java实现队列数据结构代码详解
本文详细解析了Java中队列数据结构的实现,包括队列的基本概念、应用场景及代码实现。队列是一种遵循“先进先出”原则的线性结构,支持在队尾插入和队头删除操作。文章介绍了顺序队列与链式队列,并重点分析了循环队列的实现方式以解决溢出问题。通过具体代码示例(如`enqueue`入队和`dequeue`出队),展示了队列的操作逻辑,帮助读者深入理解其工作机制。
|
16天前
|
Java 中的 toString() 方法详解:为什么它如此重要?
在Java开发中,`toString()`方法至关重要,用于返回对象的字符串表示。默认实现仅输出类名和哈希码,信息有限且不直观。通过重写`toString()`,可展示对象字段值,提升调试效率与代码可读性。借助Lombok的`@Data`注解,能自动生成标准化的`toString()`方法,简化开发流程,尤其适合字段较多的场景。合理运用`toString()`,可显著提高开发效率与代码质量。
49 0
重学Java基础篇—Java类加载顺序深度解析
本文全面解析Java类的生命周期与加载顺序,涵盖从加载到卸载的七个阶段,并深入探讨初始化阶段的执行规则。通过单类、继承体系的实例分析,明确静态与实例初始化的顺序。同时,列举六种触发初始化的场景及特殊场景处理(如接口初始化)。提供类加载完整流程图与记忆口诀,助于理解复杂初始化逻辑。此外,针对空指针异常等问题提出排查方案,并给出最佳实践建议,帮助开发者优化程序设计、定位BUG及理解框架机制。最后扩展讲解类加载器层次与双亲委派机制,为深入研究奠定基础。
69 0
Java 类和对象
本文介绍了Java编程中类和对象的基础知识,作为面向对象编程(OOP)的核心概念。类是对象的蓝图,定义实体类型;对象是具体实例,包含状态和行为。通过示例展示了如何创建表示汽车的类及其实例,并说明了构造函数、字段和方法的作用。同时,文章还探讨了访问修饰符的使用,强调封装的重要性,如通过getter和setter控制字段访问。最后总结了类与对象的关系及其在Java中的应用,并建议进一步学习继承等概念。
Java 中的 equals 方法:看似简单,实则深藏玄机
本文深入探讨了Java中`equals`方法的设计与实现。默认情况下,`equals`仅比较对象引用是否相同。以`String`类为例,其重写了`equals`方法,通过引用判断、类型检查、长度对比及字符逐一比对,确保内容相等的逻辑。文章还强调了`equals`方法需遵循的五大原则(自反性、对称性等),以及与`hashCode`的关系,避免集合操作中的潜在问题。最后,对比了`instanceof`和`getClass()`在类型判断中的优劣,并总结了正确重写`equals`方法的重要性,帮助开发者提升代码质量。
50 1
Java 中 .length 的使用方法:深入理解 Java 数据结构中的长度获取机制
本文深入解析了 Java 中 `.length` 的使用方法及其在不同数据结构中的应用。对于数组,通过 `.length` 属性获取元素数量;字符串则使用 `.length()` 方法计算字符数;集合类如 `ArrayList` 采用 `.size()` 方法统计元素个数。此外,基本数据类型和包装类不支持长度属性。掌握这些区别,有助于开发者避免常见错误,提升代码质量。
49 1
|
1月前
|
《从头开始学java,一天一个知识点》之:方法定义与参数传递机制
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 🚀 这个系列就是为你打造的Java「速效救心丸」!我们承诺:每天1分钟,地铁通勤、午休间隙即可完成学习;直击痛点,只讲高频考点和实际开发中的「坑位」;拒绝臃肿,没有冗长概念堆砌,每篇都有可运行的代码标本。上篇:《输入与输出:Scanner与System类》 | 下篇剧透:《方法重载与可变参数》。
55 25
|
1月前
|
《从头开始学java,一天一个知识点》之:输入与输出:Scanner与System类
你是否也经历过这些崩溃瞬间?三天教程连`i++`和`++i`都说不清,面试时`a==b`与`equals()`区别大脑空白,代码总是莫名报NPE。这个系列就是为你打造的Java「速效救心丸」!每天1分钟,地铁通勤、午休间隙即可学习。直击高频考点和实际开发中的“坑位”,拒绝冗长概念,每篇都有可运行代码示例。涵盖输入输出基础、猜数字游戏、企业编码规范、性能优化技巧、隐藏技能等。助你快速掌握Java核心知识,提升编程能力。点赞、收藏、转发,助力更多小伙伴一起成长!
48 19
重学Java基础篇—类的生命周期深度解析
本文全面解析了Java类的生命周期,涵盖加载、验证、准备、解析、初始化、使用及卸载七个关键阶段。通过分阶段执行机制详解(如加载阶段的触发条件与技术实现),结合方法调用机制、内存回收保护等使用阶段特性,以及卸载条件和特殊场景处理,帮助开发者深入理解JVM运作原理。同时,文章探讨了性能优化建议、典型异常处理及新一代JVM特性(如元空间与模块化系统)。总结中强调安全优先、延迟加载与动态扩展的设计思想,并提供开发建议与进阶方向,助力解决性能调优、内存泄漏排查及框架设计等问题。
49 5
|
1月前
|
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
68 11
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等