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

news2024/11/18 1:36:55

目录

前言

一、Math类

二.Scanner类

三、String类、StringBuilder和StringBuffer类

💖String类

💖StringBuilder和StringBuffer

四.Arrays类

五.Random类

六.时间类

七.ArrayList顺序表

八、LinkedList与链表

九.Stack栈和Queue队列

十.PriorityQueue优先级队列,堆


🎁博主介绍:博客名为tq02,已学C语言、JavaSE,目前学MySQL和JavaWed

🎥学习专栏:  C语言         JavaSE       MySQL基础

🎄博主链接:tq02的博客_CSDN博客-C语言,Java,MySQL领域博主

前言

         本文记录的是各种各样的函数及其方法,以及数据结构----顺序表、链表、栈、队列及其创建和方法。官方查询链接: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(日历类)年月日时分秒毫秒
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

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

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

相关文章

UE5 DLC

前言 在网上找了很多文档,并没有介绍DLC如何创建,但是对比多篇文档后,可以总结为DLC也是Pak包,本质上还是补丁包,B站上有一篇视频介绍了: [UE4]如何在虚幻4游戏里添加DLC的教程(中英机翻)_哔哩哔哩_bilibili 但是也感觉不对,因为要改Build.cs文件。故研究了一下插件式…

【python】python五月国内社会消费品零售总额数据分析(代码+数据+报告)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、51CTO技术博主 &#x…

ARM微控制器 AM2432BSEFHIALXR、AM2432BSFFHIALV技术参数(32位MCU)

1、AM2432BSEFHIALXR 32位MCU采用293引脚FCCSP封装&#xff0c;工作频率最高可达800MHz。该微控制器专为需要结合处理和实时通信的工业应用而构建&#xff0c;例如远程I/O模块和电机驱动器。 核心处理器&#xff1a;ARM Cortex-M4F&#xff0c;ARM Cortex-R5F 内核规格&#xf…

2.数据结构--空间复杂度

文章目录 一、空间复杂度讲解二、计算下列经典例题的空间复杂度1.冒泡排序的空间复杂度 O(1)2.斐波那契递归的空间复杂度 O(N)3.计算阶乘递归的空间复杂度 O(N) 三、时间复杂度和空间复杂度的对比四、常见的函数的时间复杂度和空间复杂度的总结 一、空间复杂度讲解 1.空间复杂…

复习第五课 C语言-初识数组

目录 【1】初识数组 【2】一维数组 【3】清零函数 【4】字符数组 【5】计算字符串实际长度 练习&#xff1a; 【1】初识数组 1. 概念&#xff1a;具有一定顺序的若干变量的集合 2. 定义格式&#xff1a; 数组名 &#xff1a;代表数组的首地址&#xff0c;地址常量&…

【iOS】ARC内存管理

内存管理 内存管理的思考方式iOS底层内存管理方式1. tagged pointer2. on-pointer iSA--非指针型iSA3. SideTables&#xff0c;RefcountMap&#xff0c;weak_table_t 内存管理有关修饰符__strong修饰符对象的所有者和对象的生命周期__strong对象相互赋值方法参数中使用__strong…

LeetCode 热题 100(一):哈希。49. 字母异位词分组、128. 最长连续序列。

LeetCode100链接&#xff1a;LeetCode 热题 100 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台 一、49. 字母异位词分组 题目要求&#xff1a; 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。…

【ACM】—蓝桥杯大一暑期集训Day2

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前正在学习C/C、Java、算法等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL&#xff…

10秒搞定!教你如何轻松压缩jpg格式图片大小!

大家在日常拍照时&#xff0c;都会发现拍摄出来的JPG图片体积比较大&#xff0c;使用和保存时都会比较麻烦。那么该怎样压缩图片大小呢&#xff1f; 首先&#xff0c;我们需要了解什么是JPG压缩。JPG是一种有损压缩格式&#xff0c;通过减少图像中的信息量来使文件大小缩小。使…

Java实现多文件上传及进度条提示-源码下载

1、方案概述 1、案例框架使用的是springmvc5.3.16版本,jackson使用的是2.13.3版本。 2、前端使用的是Layui2.8.11框架,这个框架上手较为容易。 3、使用关键类CommonsMultipartResolver和MultipartHttpServletRequest实现多文件捕获。 2、效果预览 【选择文件】 【上传过…

Android JNI线程的同步 (十三)

🔥 Android Studio 版本 🔥 🔥 了解线程同步的两个变量 🔥 pthread_mutex_t 互斥锁 线程的互斥: 目前存在两个线程 , 线程A和线程B, 只允许只有一个资源对临界资源进程操作 (大概意思就是 : A线程 进入操作临界资源的时候 , 那么 B线程 就要进行等待 . 等到 A线程…

感受C++模版的所带来的魅力,扎实基础,扩展思维

一、泛型编程思想 首先我们来看一下下面这三个函数&#xff0c;如果学习过了 C函数重载 和 C引用 的话&#xff0c;就可以知道下面这三个函数是可以共存的&#xff0c;而且传值会很方便void Swap(int& left, int& right) {int temp left;left right;right temp; } …

Nuxt.js--》解密Nuxt.js:构建优雅、高效的现代化Vue.js应用

博主今天开设Nuxt.js专栏&#xff0c;带您深入探索 Nuxt.js 的精髓&#xff0c;学习如何利用其强大功能构建出色的前端应用程序。我们将探讨其核心特点、灵活的路由系统、优化技巧以及常见问题的解决方案。无论您是想了解 Nuxt.js 的基础知识&#xff0c;还是希望掌握进阶技巧&…

【C++】Eigen库实现最小二乘拟合

前言 入职第二周的任务是将导师的Python代码C化&#xff0c;发现Python中存在Numpy包直接调用np.polyfit就好了&#xff0c;但是C不存在需要造轮子。 #include <iostream> #include <cmath> #include <vector> #include <Eigen/QR> #include "x…

re学习(15)BUUCTF 2019红帽杯easyRe(寻找数据+xor问题)

参考视频&#xff1a; 【BUUCTF】每天一个CTF11“2019红帽杯easyRe”_哔哩哔哩_bilibili &#xff08;本人觉得看视频比看博客效率能提高十倍&#xff0c;呜呜呜&#xff0c;还是视频香~~~与君共勉&#xff09; 下载地址&#xff1a; BUUCTF在线评测 前言&#xff1a;虽然…

Spring Boot集成Redisson实现分布式锁

Spring Boot集成Redisson实现分布式锁 在分布式系统中&#xff0c;为保证数据的一致性和并发访问的安全性&#xff0c;我们经常会使用分布式锁来协调多个节点之间对共享资源的访问。Redisson是一个基于Redis的Java驻内存数据网格&#xff08;In-Memory Data Grid&#xff09;和…

【C++】string类模拟

文章目录 成员变量和查看接口迭代器&#xff08;读和读写&#xff09;operator[]&#xff08;读和读写&#xff09;c_str()size() 构造函数用字符串构造用对象构造&#xff08;两种方法&#xff09;析构 赋值运算符重载扩容和调整reserve()resize()clear() 增删查改push_back()…

C++的switch函数用法

一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case&#xff0c;且被测试的变量会对每个 switch case 进行检查。 语法 C 中 switch 语句的语法&#xff1a; switch(expression){ case constant-expression : statement(s); break; // 可选的 case c…

Redis数据类型 — Zset

目录 Zset内部设计 跳表哈希表 ZipList ZSet中每一个元素都需要指定一个score值和member值&#xff1a;<1> 可以根据score值排序后<2> member必须唯一<3> 可以根据member查询分数 Zset内部设计 因此&#xff0c;zset底层数据结构必须满足键值存储、键必…

AutoCAD如何通过C#进行插件开发?

文章目录 0.引言1.开发工具准备2.VS&#xff08;C#&#xff09;创建插件3.使用插件 0.引言 AutoCAD是一款广泛应用于工程设计和建筑行业的计算机辅助设计软件。通过使用C#语言进行插件开发&#xff0c;可以扩展AutoCAD的功能&#xff0c;实现定制化的需求。插件可以实现自动化绘…