API常用类

news/2024/12/22 20:43:48/

Java API概述

API(Application Programming Interface) 应用程序编程接口

是对Java预先定义的类或接口功能和函数功能的说明文档,目的是提供给开发人员进行使用帮助说明

基本数据类型封装类

基本数据类型包装类
byte        Byte
shortShort
charCharacter
int        Integer
longLong
floatFloat
doubleDouble
booleanBoolean

包装类的主要用途

        1.作为和基本数据类型对应的类型存在

        2.包含每种基本数据类型的相关属性如最大值,最小值等,以及相关的操作方法

包装类常用属性方法

System.out.println(Integer.MIN_VALUE);// -2147483648  最小的int型数(-2^31)System.out.println(Integer.MAX_VALUE);// 2147483647  最大的int型数(2^31-1)System.out.println(Integer.BYTES);// 4System.out.println(Integer.SIZE);// 32/*构造方法*/Integer i1 = new Integer("20");Integer i2 = new Integer(20);/*其他方法*/System.out.println(i1 == i2);// false/*public boolean equals(Object obj) {if (obj instanceof Integer) {return value == ((Integer)obj).intValue();}return false;}*/System.out.println(i1.equals(i2)); // true  比较两个数是否相等// 求两个数中的最大值System.out.println(Integer.max(10, 5));// 求两个数中的最小值System.out.println(Integer.min(10,5));/*转换方法*/System.out.println(Integer.toBinaryString(3));// 转为2进制System.out.println(Integer.toHexString(17));// 转为16进制System.out.println(Integer.toOctalString(9));// 转为8进制Integer i1 = new Integer(10);// 基本类型包装到对象中int i2 = i1.intValue();// 把对象中的基本类型取出来int i3 = Integer.parseInt("10");// 将String 类转为int类型i1.toString();// 将int包装类型 转为String类型Integer i4 = Integer.valueOf(10);// 将基本类型转为引用类型Integer i5 = Integer.valueOf("10");// 将String 转为引用类型

装箱和拆箱

装箱:   自动将基本数据类型转换为包装类型

           装箱的时候调用的是Integer的valueOf(int)方法

拆箱:   自动将包装器类型转换为基本数据类型

           拆箱的时候自动调用的是Integer的intValue方法

      

        /*自动装箱: 自动的将基本类型转为引用类型*/int a = 10;// 手动装箱Integer a1 = new Integer(a);Integer a2 = Integer.valueOf(a);// 自动装箱Integer a3 = a;Integer a4 = 10;/*底层代码public static Integer valueOf(int i) {-128                                +127if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);}*/// 自动拆箱: 底层默认调用intValue()int a5 = a3;

Object类

Object 类是所有Java类的祖先(根基类).每个类都使用Object作为父类.所有对象都实现这个类的方法.如果在类的声明中未使用extends关键字知名其基类,则默认基类为Object类

toString()方法   返回对象的字符串表示形式

 Car c = new Car("宝马", 30000);/*native 修饰的方法成为本地方法(有些方法Java是不实现的,直接调用把本地操作系统中的方法)输出一个对象时,默认会调用类中toString(),我们的类中如果没有定义toString(),找父类中的toString()Object类中的toString(){getClass().getName()+"@"  hashCode()  --->  转成16进制的字符串}*//* 若对象没有方法中没有重写toString(),则直接调用Object中的方法 com.zwy.javaapi.objectdemo.Car@1b6d3586若对象那个重写了Object中的toString方法@Overridepublic String toString() {return "Car{" +"name='" + name + '\'' +", press=" + press +'}';}则输出为  Car{name='宝马', press=30000.0}*/System.out.println(c.toString());

Arrays类

用于操作数组工具类,里面定义了常见数组的静态方法

equals方法

比较两个非同一数组中的内容是否相等

public static void main(String[] args) {int[] a = {1, 2, 3, 4, 5};int[] b = {1, 2, 3, 4, 5};/*Arrays.equals(a,b)  比较数组中的内容是否相等*/System.out.println(Arrays.equals(a,b));// true}

sort方法  排序

object型数组,根据元素的自然顺序,对指定对象数组进行升序排序

  public static void main(String[] args) {int[] a = {5,3,2,4,1};//Arrays.sort(a);  底层使用的是快速排序Arrays.sort(a,0,3);// 对某个区间排序,开始位置(包含开始),结束位置(不包含结束位置)System.out.println(Arrays.toString(a));// [1, 2, 3, 4, 5]}

自定义对象排序,自定义类实现Comparable接口,重写compareTo方法

        自定义类


public class User implements Comparable<User> {private int id;private String account;private String password;public User(int id, String account, String password) {this.id = id;this.account = account;this.password = password;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User{" +"id=" + id +", account='" + account + '\'' +", password='" + password + '\'' +'}';}/*为引用类型提供一个自定义排序规则此方法会在Arrays类中的sort()方法底层调用结果是用来判断大小  小于0  等于0  大于0*/@Overridepublic int compareTo(User o) {return this.id - o.id;}
}

测试

 public static void main(String[] args) {/*数组*/User user1 = new User(1, "123456", "111111");User user2 = new User(2, "123457", "111111");User user3 = new User(3, "123458", "111111");User user4 = new User(4, "123454", "111111");User user5 = new User(5, "123459", "111111");/*创建User类型数组*/User[] users = new User[]{user1, user2, user3, user4, user5};Arrays.sort(users);System.out.println(Arrays.toString(users));}

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

public static void main(String[] args) {int [] a = {8,1,5,9,6,2,3,4,7};/*二分查找法(这般查找) 前提: 有序的*/Arrays.sort(a);System.out.println(Arrays.binarySearch(a,3));// 返回负数表示没有找到/*public static int binarySearch(int[] a, int fromIndex, int toIndex,int key) {rangeCheck(a.length, fromIndex, toIndex);return binarySearch0(a, fromIndex, toIndex, key);}a  表示要搜索的数组,fromIndex  要搜索的第一个元素的索引(包括), toIndex  要搜索的最后一个元素的索引(不包括), key  要搜索的值*/System.out.println(Arrays.binarySearch(a,0,6,3));}

toString方法

返回指定数组内容的字符串表示形式

String 类

由多个字符组成的一串数据,值一旦创建不可改变,一旦值改变,就会创建一个新的对象

 private final char value[];

String 有两种创建形式:

第一种:

String s = "abc";

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

第二种:

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

String s = new String("abc");

String 类方法中有判断功能的方法

String s1 = "abc";String s2 = new String("abC");System.out.println(s1.equals(s2));// 比较字符串内容是否相等System.out.println(s1.equalsIgnoreCase(s2));// 比较字符串内容是否相等(忽略大小写)System.out.println(s1.contains("ac"));// 是否包含指定的子串System.out.println(s1.isEmpty());// 判断是否为""System.out.println(s1.startsWith("ab"));// 判断以指定字符开头System.out.println(s1.endsWith("bc"));// 判断以指定字符结尾

String 类方法中有获取功能的方法

        String s = "abcdefgd";System.out.println(s.length());char c = s.charAt(4);// 获取指定位置(索引)的字符System.out.println(c);int index = s.indexOf("d");// 从前向后找,只找首次出现的位置System.out.println(index);int index1 = s.indexOf("d",index+1);// 从前向后找,从指定位置开始System.out.println(index1);int index2 = s.lastIndexOf("d");// 从后向前查找,首次出现的位置System.out.println(index2);String s1 = "abcdefgd";String s2 = s1.substring(3);// 从指定的位置开始截取字符串,直接到最后一位,最终返回一个新的字符串对象System.out.println(s1);System.out.println(s2);String s3 = s1.substring(2, 6);// 截取指定区间  包含开始位置,不包含结束位置System.out.println(s3);

String 类方法中有获取功能的方法

        String s = "abcd";char[] chars = s.toCharArray(); // 将字符串转换为一个新的char数组System.out.println(Arrays.toString(chars));//  [a, b, c, d]String s1 = new String(chars);  //将char数组转为字符串System.out.println(s1);// abcdString s2 = String.valueOf(chars);System.out.println(s2);// abcdString s3 = "abcdEFG";System.out.println(s3.toUpperCase());// 转大写  ABCDEFGSystem.out.println(s3.toLowerCase());// 转小写  abcdefgString s4 = s3.concat("xxxxx"); // + 可以来连接其他类型System.out.println(s4);// abcdEFGxxxxxString s5 = "ab:cde:efg";String[] split = s5.split(":"); // 按照指定的分隔符,将字符串拆分为数组System.out.println(Arrays.toString(split));// [ab, cde, efg]String s6 = "你好";// 默认是utf-8 编码  在utf-8编码中,一个汉字占3个字节byte[] b = new byte[0];b=s6.getBytes("UTF-8"); // 编码System.out.println(Arrays.toString(b)); // [-28, -67, -96, -27, -91, -67]String s7 = new String(b,"UTF-8");// 解码System.out.println(s7);// 你好String s8  = new String(b,0,3,"UTF-8");// 解码第0-3System.out.println(s8);// 你

String 类方法中有替换功能的方法

        String s1 = "abcdefg";// 替换字符System.out.println(s1.replace('a', 'w')); // wabcdefg// 替换字符串  若未找到要更改的字符串,则不做处理System.out.println(s1.replace("ab", "wj"));// wjcdefgString s2 = "abcdabceabc";// 将所有匹配的字符串全部替换System.out.println(s2.replaceAll("abc", "wjw"));// wjwdwjwewjw// 替换第一个匹配的字符串System.out.println(s2.replaceFirst("abc","wjw"));// wjwdabceabcString s3 = " Hello World ";System.out.println(s3);// " Hello World "// 删除字符串前后的空格System.out.println(s3.trim());// "Hello World"

StringBuffer类

StringBuffer是Java中的一个类,用于创建和操作可变字符串,类似于String类,但它允许用户修改字符串的内容而不创建新的对象

        /*线程安全,可变字符串char[] value;AbstractStringBuilder(int capacity) {value = new char[capacity];}super(16); // 无参super(str.length() + 16);  // 有参当向StringBuffer中添加内容时,是将内容添加到底层的数组中,数组没有被final修饰当数组装满时,会创建一个新的数组,将新数组地址给底层数组,StringBuffer对象是不会改变的*///new StringBuffer(); // 默认底层char数组长度是16/* StringBuffer sb = new StringBuffer("abcd");sb.append("ef111111"); // 向末尾追加内容sb.append("ef2222");sb.append("ef3333");System.out.println(sb);*/StringBuffer sb = new StringBuffer("abcdefg");//sb.insert(2,"666"); // 向指定的位置差插入字符串//sb.deleteCharAt(2);// 删除指定位置的字符// sb.delete(0,2);// 删除指定区间内容,包含开始,不包含结束//sb.replace(0,3,"xxx");// 将指定区间的字符替换//sb.reverse();// 逆序//String sub =  sb.substring(2);// 截取一个字符串副本返回// String sub1 =  sb.substring(2,4);// 截取一个字符串副本返回//System.out.println(sub);System.out.println(sb);String s1 = "abcd";System.out.println(s1.length());//4System.out.println(sb.length());// 返回的是底层数组中实际装入字符的个数

StringBuilder类

StringBuilder用于创建和操作可变字符串,它与StringBuffer类似,但是不是线程安全的,因此在单线程环境下使用StringBuilder比StringBuffer更高效.

 /*多线程不安全  可变字符串@Overridepublic StringBuilder append(String str) {super.append(str);return this;}@Overridepublic synchronized StringBuffer append(String str) {toStringCache = null;super.append(str);return this;}String             :底层都是数组实现   final char[] 值不能改变 ,改变后会创建一个新的对象StringBuffer       :线程安全的   可变字符串  char[]StringBuilder      :线程不安全   可变字符串*/public static void main(String[] args) {StringBuilder stringBuilder = new StringBuilder();stringBuilder.append("aaa");}

String类,StringBuffer类和StringBuild类的区别

String: 是字符常量,适用于少量的字符串操作的情况

StringBuilder: 适用于单线程下在字符缓冲区进行大量操作的情况

StringBuffer: 使用多线程下在字符缓冲区进行大量操作的情况

Math类

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

public static void main(String[] args) {int a = 2;int b = 3;int c = -4;int d = 4;System.out.println(Math.abs(c));// 求绝对值  4System.out.println(Math.sqrt(d));// 求平方根  2System.out.println(Math.pow(a, b));// 求a的b次幂 8System.out.println(Math.max(a, b));// 求a和b中的最大值  3System.out.println(Math.min(a, b));// 求a和b中的最小值  2System.out.println(Math.random());// 返回0.0到1.0的随机数}

Random类

此类用于产生随机数

 public static void main(String[] args) {Random r = new Random();System.out.println(r.nextInt());System.out.println(r.nextInt(8));// 生成0~8之间的随机数}

System类

System类包含一些有用的类字段和方法,它不能被实例化

    public static void main(String[] args) {System.exit(1);// 终止当前虚拟机的运行System.out.println(System.currentTimeMillis());// 返回当前时间(单位:毫秒)}

Date类

使用Date类代表当前系统时间

public static void main(String[] args) {long l = System.currentTimeMillis();Date date = new Date();// 创建一个日期对象,里面包含了程序运行时的那一刻的时间,提供方法方便实现System.out.println(date.getTime());// 1682928491899System.out.println(date.getYear()+1900);// 有划线的称为过期方法,不建议使用,有新方法代替System.out.println(date.getMonth()+1);Date date1 = new Date(1682928491899L);System.out.println(date1);}

Calendar类

Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是头名的,只需要使用getInstance方法创建即可

    public static void main(String[] args) {Calendar c = Calendar.getInstance();System.out.println(c.get(Calendar.YEAR));// 获取系统当前的年份}

SimpleDateFormat类

SimpleDateFormat日期格式化类

public static void main(String[] args) throws ParseException {SimpleDateFormat Myformat = new SimpleDateFormat("yyyy-MM-dd");Date now = new Date();// 日期转为字符串System.out.println( Myformat.format(now)); // 2023-05-15// 字符串转日期Date parse = Myformat.parse("2023-05-15");// Mon May 15 00:00:00 CST 2023System.out.println(parse);}


http://www.ppmy.cn/news/69868.html

相关文章

在外Windows公网远程连接MongoDB数据库

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 转载自远程内网穿透的文章&#xff1a;公网远…

OPPO关停哲库业务,工程师造芯何去何从?

5月12日&#xff08;上周五&#xff09;&#xff0c;新浪科技从OPPO处了解到&#xff0c;OPPO将终止ZEKU业务。3000多人团队突然原地解散&#xff0c;网上唏嘘声一片&#xff01; ZEKU最初成立于2019年&#xff0c;是OPPO的全资子公司&#xff0c;欧加集团百分之百注资成立。总…

Elasticsearch:结合两全其美:Elasticsearch 与 BM25 和 HNSW 的混合搜索

就搜索算法而言&#xff0c;没有万能的解决方案。 不同的算法在不同的场景下效果更好&#xff0c;有时需要算法的组合才能达到最好的效果。 在 Elasticsearch 中&#xff0c;一种流行的组合搜索算法的方法是使用混合搜索&#xff0c;将用于文本搜索的 BM25 算法与用于最近邻搜索…

分布式消息队列RocketMQ概念详解

目录 1.MQ概述 1.1 RocketMQ简介 1.2 MQ用途 1.3 常见MQ产品 2.RocketMQ 基本概念 2.1 消息 2.2 主题 2.3 标签 2.4 队列 2.5 Producer 2.6 Consumer 2.7 NameServer 2.8 Broker 2.9 RocketMQ 工作流程 1.MQ概述 1.1 RocketMQ简介 RocketMQ 是阿里开源的分布式消…

实验10 人工神经网络(1)

1. 实验目的 ①理解并掌握误差反向传播算法&#xff1b; ②能够使用单层和多层神经网络&#xff0c;完成多分类任务&#xff1b; ③了解常用的激活函数。 2. 实验内容 ①设计单层和多层神经网络结构&#xff0c;并使用TensorFlow建立模型&#xff0c;完成多分类任务&#xf…

[230523]托福写作第一次课 | 10:20~11:20

目录 1. 第一课内容 2. 独立写作 Sample1 Sample2 练习Sample3 3. 作业 1. 第一课内容 1. 分析同学们当前的基础和学习计划 2. 分析托福写作考察重点 3. 讲解独立写作题型分类 4. 讲解文章展开技巧 5. 重点练习开头段展开方法 2. 独立写作 Sample1 agree or disagree: l…

全新版本,手把手教你配置c\c++

上一篇图片多&#xff0c;语句乱&#xff0c;内容乱 这一篇采用全新的教程 这次在不删软件的前提下进行 老规矩先把之前看的教程残余删除 如果你有很多插件和设置这边建议先备份 打开c盘&#xff0c;在搜索栏里输入你的用户名 在箭头位置搜索你的用户名&#xff0c;就是你…

Pandas Power Play: 构建数据帝国的两表JOIN和group by之旅

在数据分析的过程中&#xff0c;常常需要把多张表格进行合并&#xff0c;或者按照某些规则进行分组统计。Pandas是Python中一个非常强大的数据处理库&#xff0c;其中的JOIN和group by函数能够帮助我们轻松地完 成这些任务。本教程将详细介绍如何使用这两个函数&#xff0c;让…