Javase8 常用类API知识总结《一看就会》

2023-10-13 11:10

本文主要是介绍Javase8 常用类API知识总结《一看就会》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      作者有话说:

        这篇文章会为你讲解javase的一些比较常用的类,同时附有代码实例、注释及运行结果,帮助读者和初学者更快速理解并掌握代码,希望看了这篇文章你能有所收获

目录

Java API概述

基本数据类型包装类 

装箱和拆箱 

Object类

Arrays类 

String类

String类的创建:

StringBuffer 和StringBuilder

Math类

 Random类

 Date类/Calendar类/ SimpleDateFormat类


Java API概述

API(Application Programming Interface):即 应用程序编程接口
API是 对java预先定义的类或接口功能和函数功能的说明文档,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组 例程的能力,而又无需访问源码,或理解内部工作机制的细节, 即就是为开发人员提供使用说明

Java API简介--来自百度 

 运行Java程序时,虚拟机装载程序的class文件所使用的Java API class文件。所有被装载的class文件(包括从应用程序中和从Java API中提取的)和所有已经装载的动态库(包含本地方法)共同组成了在Java虚拟机上运行的整个程序。 在一个平台能够支持Java程序以前,必须在这个特定平台上明确地实现API的功能。为访问主机上的本地资源,Java API调用了本地方法。由于Java API class文件调用了本地方法,Java程序就不需要再调用它们了。通过这种方法,Java API class文件为底层主机提供了具有平台无关性、标准接口的Java程序。对Java程序而言,无论平台内部如何,Java API都会有同样的表现和可预测的行为。正是由于在每个特定的主机平台上明确地实现了Java虚拟机和Java API,因此,Java程序自身就能够成为具有平台无关性的程序。

基本数据类型包装类 

Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类。

 包装类(如:Integer,Double等)这些类封装了一个相应的基本数据类型数值,主要用途包含两种:1.作为和基本数据类型对应的类类型存在。 2.包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

代码展示:

    int i = 3;Integer inum = new Integer(i);double dnum = 9.8;Double d = new Double(dnum);char cnum = 'A';Character c = new Character(cnum);float fnum = 9.8f;Float f = new Float(fnum);boolean bnum = false;Boolean b = new Boolean(bnum)
以Integer为例:
public static final int MAX_VALUE 最大的 int 型数( 2 31 -1
public static final int MIN_VALUE 最小的 int 型数( -2 31
构造方法
Integer(int a);
Integer(String a);
比较方法
static int compareTo(Integer a);
boolean equals(Object);
int max(int a,int b);
int min(int a,int b);
转换方法
static toBinaryString(int i); //将输入的int值转化成二进制形式并返回这个二进制数的字符串
static String toHexString(int i);
/*public static String toHexString (int i)以十六进制的无符号整数形式返回一个整数参数的字符串表示形式。 如果参数为负,那么无符号整数值为参数加上 232;否则等于该参数。*/
static String toOctalString(int i);// 以八进制的无符号整数形式返回一个整数参数的字符串表示形式。
int intValue();
static int parseInt(String s); /* 将字符串参数作为有符号的十进制整数进行分析。 static Integer valueOf (int i) 返回一个表示指定的 int 值的 Integer 实例。*/
String toString();
static Integer valueOf(int i)
static Integer valueOf(String s)
static Integer valueOf (String s) 返回保持指定的 String 的值的 Integer 对象。 从返回值可以看出他们的区别 parseInt ()返回的是基本类型int 而valueOf ()返回的是包装类Integer Integer是可以使用对象方法的 而int类型就不能和Object类型进行互相转换

装箱和拆箱 

基本数据类型转换为包装类的过程称为装箱,例如把 int 包装成 Integer 类的对象;包装类变为基本数据类型的过程称为拆箱,例如把 Integer 类的对象重新简化为 int。

装箱
        自动将基本数据类型转换为包装器类型
       装箱的时候自动调用的是Integer的valueOf(int)方法
拆箱
        自动将包装器类型转换为基本数据类型
       拆箱的时候自动调用的是Integer的intValue方法
//装箱int a = 12;Integer b = Integer.valueOf(a);
//拆箱int c = b.intValue();

public class Demo {public static void main(String[] args) {int m = 500;Integer num = m;  // 自动装箱int n = num;  // 自动拆箱System.out.println("n = " + n);Integer num1 = 500;System.out.println("num等价于num1返回结果为" + num.equals(num1));}
}

Object类

Object类是所有Java类的祖先(根基类)。每个类都使用 Object 作为超类(父类)。 所有对象(包括数组)都实现这个类的方法。 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类。
public class Person { ...
}
等价于:
public class Person extends Object {
...
}

需要特殊强调的是Object类中有两个方法 toStringequals方法

toString方法

Object类中定义有public String toString()方法,其返回值是 String类型,描述当前对象的有关信息。在进行String与其它类型数据的连接操作时(如:System.out.println(“info”+person)),将自动调用该对象类的toString()方法,当然我们也可以根据需要在用户自定义类型中重写toString()方法。

equals方法

 public boolean equals(Object obj)方法

Object equals 方法 定义为: x.equals ( y ) ,当 x y 是同一个对象的引用时返回 true 否则返回 false(比较地址),而JDK提供的一些类,如String,Date等,重写了Object的equals方法,调用这些类的equals方法,x.equals (y) ,当x和y所引用的对象是同一类对象且属性内容相等时(并不一定是相同对象),返回true 否则返回 false。(比较值)

Arrays类 

 java.util.Arrays类:用于操作数组工具类,里面定义了常见操作数组的静态方法。
equals 方法
 比较两个非同一数组是否相等,而数组本身的equals判断另一个数组是否它本身。(值)
public static boolean equals(type[]a,type[]a2)  参数的类型可以是原生数据类型和引用类型的任意一种类型,如果两个相等,则返回true,否则返回false。

 sort -排序

作用于数组的所有元素 public static void sort(type[] a) 作用于数组指定范围内的元素
public static void sort(type[] a, int fromIndex( 包括 ), int toIndex( 不包括 ))
将指定的类型(除 boolean 以外的任意原生数据类型)数组所有元素(或指定范围内的元素)按数字升序进行排序。
object 型数组,根据元素的自然顺序,对指定对象数组进行升序排序。
(fromIndex==toIndex,则排序范围为空)
自定义对象排序要 自定义类实现Comparable接口并且 重写compareTo方法

 binarySearch -使用二分搜索算法搜索指定数组

声明:
public static int binarySearch(type[] a, type key)
public static int binarySearch(long[] a,int fromIndex,int toIndex,long key)
描述:
使用二分搜索算法搜索指定的type型数组,以获得指定的值。
参数:
a - 要搜索的数组。
key - 要搜索的值。
fromIndex - 要排序的第一个元素的索引(包括)。
toIndex - 要排序的最后一个元素的索引(不包括)。
type -byte、double、float、object、long、int、short、char
如果key在数组中,则返回搜索值的索引;否则返回-1或者”-“(插入点)
toString() 方法
public static String toString(type[] a) :返回指定数组内容的字符串表示形式。
基本数组,字符串表示形式由数组的元素列表组成,括在[],相邻元素用“, ”(逗号加空格)分隔。

String类

       字符串是由多个字符组成的一串数据(字符序列)的字符串常量,java中所有字符串都是String类的实例.

String类的创建:

  1. String s = "abjcka";

先在栈中创建一个对String类的对象引用变量s,然后去字符串常量池中查找 有没有"abc", 如果没有则在常量池中添加”abc”, s引用变量指向常量池中 的”abc”,如果常量池中有,则直接指向改地址即可,不用重新创建

      2.String s = new String("sadasd");

在堆中创建新对象,值存储在堆内存的对象中

功能 方法

 String s = "中国红";/*字符串转为字节数组  “转码”*/byte [] bytes = s.getBytes();System.out.println(Arrays.toString(bytes));//字符串转为byte数组String c = new String(bytes, 3, 3, "utf-8");System.out.println(c);String q = f.toUpperCase();//把字符串中小写字母转换成大写字母String p = g.trim()+100;//去掉字符串首部和尾部的空白
String c = f.concat(s);//concat相当于+=
String h = g.replaceAll("\\|", "");//替换所有匹配项
String l = g.replaceAll("\\d", "A");
String j =g.replace("g", "G");//替换指定字符
String k = g.replaceFirst("f", "F");//替换第一个
String o = "66=10068:101=55";
String [] Strings1 = o.split(":"); //split分隔符 分割之后存进新数组里
System.out.println(Arrays.toString(Strings1));

详细String功能方法可以查阅API文档---

StringBuffer 和StringBuilder

  •  StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
  •  StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
  • String:是字符常量,适用于少量的字符串操作的情况

StringBuffer类:我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String 对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题 线程安全的可变字符序列

构造方法 public StringBuffer() public StringBuffer(String str)

添加功能 public StringBuffer append(String str) public StringBuffer insert(int offset,String str)

删除功能 public StringBuffer deleteCharAt(int index) public StringBuffer delete(int start,int end)

替换功能 public StringBuffer replace(int start,int end,String str)

反转功能 public StringBuffer reverse()//逆序

截取功能 public String substring(int start) public String substring(int start,int end) 

截取功能和前面几个功能的不同 返回值类型是String类型,本身没有发生改变

StringBuilder类功能和StringBuffer功能完全一致, StringBuffer是线程安全的 

String和StringBuffer添加字符串区别

  StringBuffer s = new StringBuffer("abcdeee");s.append("fff");s.append("ggg");s.append("hhh");System.out.println(s);String c = "abcdeeee";String d = c.concat("ffff");String e = d.concat("gggg");System.out.println(e);//输出的都是拼接的结果

输出结果: 

Math类

java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和 返回值类型一般为double型。

abs 绝对值

sqrt 平方根

pow(double a, double b) a的b次幂

max(double a, double b)

min(double a, double b)

random() 返回 0.0 到 1.0 的随机数

long round(double a) double型的数据a转换为long型(四舍五入)

代码实例: 

        System.out.println(Math.abs(-5));//5System.out.println(Math.ceil(9.2));//10.0向上取整System.out.println(Math.pow(2, 3));//8.0System.out.println(Math.sqrt(16));//4.0System.out.println(Math.random());//随机生成0-1的数

结果:

 

 Random类

                    Random类概述 此类用于产生随机数

构造方法 public Random()

成员方法 public int nextInt()

               public int nextInt(int n)

代码实例:

        Random r = new Random();byte [] bytes = new byte[6];r.nextBytes(bytes);System.out.println(Arrays.toString(bytes));//将随机数存进数组里System.out.println(r.nextInt());//随机找一个数System.out.println(r.nextBoolean());//随机选一个布尔值

结果:

 Date类/Calendar类/ SimpleDateFormat类

  1. date类表示当前系统时间
  2. Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可: Calendar c1 = Calendar.getInstance();
  3. SimpleDateFormat 日期格式化类

Date类代码演示:

Date d = new Date();System.out.println(d.getDate());/*带删除线的方法是过期方法,api中有新的方法代替它,它仍然可以使用*/System.out.println(d.getTime());//自1970-1-1 0:0:0 至今的毫秒差System.out.println(d.getYear());System.out.println(d.getMinutes());//SimpleDateFormat 日期格式化类SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS E");String sj = sdf.format(d);System.out.println(sj);

 

 Calendar类代码演示:

Calendar c = Calendar.getInstance();//日历类long a = c.getTimeInMillis();//自1970-1-1 0:0:0 至今的毫秒差System.out.println(a);Calendar c1=new GregorianCalendar();long b = c1.getTimeInMillis();//自1970-1-1 0:0:0 至今的毫秒差System.out.println(b);System.out.println(c1.get(Calendar.DAY_OF_WEEK));//今天是这周的第几天System.out.println(c1.get(Calendar.DAY_OF_YEAR));//今天是今年的第几天

 补充一下:

Calendar类实现了公历日历,GregorianCalendar是Calendar类的一个具体实现。Calendar 的getInstance()方法返回一个默认用当前的语言环境和时区初始化的GregorianCalendar对象。

这篇关于Javase8 常用类API知识总结《一看就会》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/202769

相关文章

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Java中如何正确的停掉线程

《Java中如何正确的停掉线程》Java通过interrupt()通知线程停止而非强制,确保线程自主处理中断,避免数据损坏,线程池的shutdown()等待任务完成,shutdownNow()强制中断... 目录为什么不强制停止为什么 Java 不提供强制停止线程的能力呢?如何用interrupt停止线程s

SpringBoot请求参数传递与接收示例详解

《SpringBoot请求参数传递与接收示例详解》本文给大家介绍SpringBoot请求参数传递与接收示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录I. 基础参数传递i.查询参数(Query Parameters)ii.路径参数(Path Va

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja