API-简述

API

1、概念

  API:(Application Programming Interface),引用程序接口,是一种计算机接口,它定义多种软件中介之间的交互,以及可以进行的调用(call)或请求(request)的种类,如何进行调用或发出请求,应使用的数据格式,应村寻的惯例等。它还可以提供扩展机制,以便用户可以通过各种方法对现有功能进行不同程度的扩展。一个API可以是完全定制的,针对某个组件的,也可以是基于行业标准设计的以确保互操作性。通过信息隐藏,API实现模块化编程,从而允许用户独立地使用接口。
  简要的说:你写一个demo,想要加入某些功能,可能是数组、集合、字符串甚至是文件,又想通过某些方法对这些数据进行操作,又不想一步一步的把这些方法的底层代码写一遍,这时候你就需要去了解对应的API,以便于解决对应的问题。

2、JAVA常用API

2.1、java.lang.Object

在这里插入图片描述

2.2.1 概念

所有对象的顶级父类,存在于java.lang包中,这个包不需要我们手动导包。

2.2.2 常用方法

在这里插入图片描述


1. boolean equals(Object obj) 指示其他某个对象是否和此对象“相等”
在这里插入图片描述
2. int hashcode(); 返回该对象的哈希码值

在这里插入图片描述
什么是hash code
  hash code是一种编码方式,在Java中,每个对象都会有一个hashcode,Java可以通过这个hashcode来识别一个对象。至于hashcode的具体编码方式,比较复杂(事实上这个编码是可以由程序员通过继承和接口的实现重写的),可以参考数据结构书籍。而hashtable等结构,就是通过这个哈希实现快速查找键对象。这是他们的内部联系,但一般编程时无需了解这些,只要知道hashtable实现了一种无顺序的元素排列就可以了。.
hash code/哈希值/散列值

两个对象值相同(x.equals(y) == true),不一定相等。
对象相同hash值一定相同,hash值相同对象不一定相同

3. String toString(); 返回该对象的字符串表示;
在这里插入图片描述
4. protected void finalize();当垃圾回收器确定不存在对该对象更多的引用时,由对象的垃圾回收器调用此方法

2.2、String

字符串对象
2.2.1 概念

  string是C++、java、VB等编程语言中的字符串,字符串是一个特殊的对象,属于引用类型。 在java、C#中,String类对象创建后,字符串一旦初始化就不能更改,因为string类中所有字符串都是常量,数据是无法更改,由于string对象的不可变,所以可以共享。对String类的任何改变,都是返回一个新的String类对象。 C++标准库中string类以类型的形式对字符串进行封装,且包含了字符序列的处理操作。

String字符串是一个对象,不是对象你怎么使用”.meshtod();“ 显然基本类型无法直接调用方法,因为它不是一个对象

因为String时引用类型,实际上是一个对象,因此不能仅仅使用"=="比较,而是需要使用equals();方法比较String的类容

在这里插入图片描述

2.2.2 String对象创建
  1. 如果时第一次使用字符串,java会在字符串常量池创建一个对象
  2. 再次使用相同类容时,会直接访问常量池中的存在
    在这里插入图片描述
  • 创建方式一:new String(char[])
    字符串底层维护了一个char[]
char[] c={'a','学','习','b'}
String d=new String(c);
System.out.println(d);
//结果为a学习b
  • 创建方式二:直接创建
    常量池里直接常见对象(本质还是char[]),再次使用相同类容,会去常量池中找到已经存在的对象,不会新建
String a="学习使我快乐";
2.2.3 字符串的直接拼接
  • 利用String类,在做字符串拼接的过程效率极其低下
  • 每一次的拼接都会产生新的对象,而不是拼接完之后产生对象
public class test1111 {
    public static void main(String[] args) {
         String a="aaa";
         String b="bbb";
         String c="ccc";
         String d=a+b+c;
        System.out.println(d);
		//输出结果是--aaabbbccc
    }
}
2.2.4 String常用的方法
  • char charAt(int index)—返回指定索引出的char值(字符串底层是char[],所以存在索引)
  • int length()—返回此字符串的长度
  • boolean equals()–将此字符串和指定的对象比较。当且仅当该对象不为null,并且是与此对象表示相同字符序列的String对象时,结果才是true
  • boolean startsWith()----测试此字符串是否以指定的前缀开始
  • boolean endsWith()-----测试此字符串是否以指定的后缀结束
  • String[] split()-----根据给定的正则表达式的匹配拆分此字符串,返回的时一个数组
  • String trim()-----返回字符串的副本,忽略签到空白和尾部空白
  • boolean isEmpty()—当且仅当length()为0时返回true
  • byte[] getBytes()—使用平台的默认字符集将此String编码为byte序列,并将结果存储到一个新的byte数组中
  • int indexof()—返回指定字符串中第一次出现字符或者字符串的索引
  • int lastIndexOf()–返回指定字符串最后一次出现字符或者字符串的索引
  • String substring()—根据条件返回一个子字符串,也就是原先字符串的一部分,根据这个方法结合indexof和lastindexof犯法,可以进行文件类型的判断

了解正则表达式

概述:正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
详情:正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。

2.3 StringBuilder和StringBuffer

transient关键字只能修饰变量,不能修饰类和方法,被transient
关键字修饰的变量都不能被序列化,静态变量无论是否被transient修饰
都不能序列化

关于transient和序列化有一个非常好的博客点击查看
在这里插入图片描述

2.3.1 StringBuffer和StringBuilder的特点
  1. 封装了char[]数组
  2. 是可变的字符序列
  3. 提供了一组可以对字符内容修改的方法
  4. 常用append()方法完成字符串的链接
  5. 内部字符数组默认初始容量是16;initial capacity of characters
  6. 如果大于16会尝试扩容,新数组的大小,原来的2倍+2,容量如果还不够,直接扩容到需要的容量大小–newCapacity=value.length*2+2;
  7. StringBuffer1.0出道,线程安全,StringBuilder1.5出道,线程不安全
2.3.2 StringBuffer
  • StringBuffer对象代表一个字符序列,当一个SringBuffer对象被创建后,通过StringBuffer提供的append(),insert(),reverse(),setCharAt(),setLength()等方法可以改变这个字符串的序列。一旦通过StringBuilder生成一个最终想要的字符串就可以调用它的toString()方法将其转换为一个String对象
  • StringBuffer线程安全的原因就是方法上sychronized同步锁,加锁实现了线程安全,但是同样的会降低效率
    在这里插入图片描述
2.3.3 StringBuilder
  • StringBuilder也代表可变字符串对象,实际上,StringBuilder和StringBuffer基本相似,两个类的构造器和方法基本也相同。不同的是StringBuffer是线程安全的,StringBuilder则没有实现线程安全功能,所以StringBuilder性能略高。
2.3.4 StringBuffer和StringBuilder常用的函数

StringBuffer和StringBuilder和有许多方法和String一样,这是因为最后会执行toString()方法,变为字符串

  • Stringbuffer append();将参数追加到序列
  • String toString()—返回此序列中数据的字符串表示形式
  • StringBuffer insert()-----在此序列中插入参数
  • char charAt(int index)返回此序列中指定索引出的char值
  • StringBuilder reverse() 将此字符序列用其反转形式取代(这个和序列化无关,只是把数组的排序完全反转)
2.3.4 StringBuffer和StringBuilder的拓展

区别
1、 在线程安全上,

–StringBuffer是旧版本就提供的,线程安全的。@since JDK1.0

–StringBuilder是jdk1.5后产生,线程不安全的。@since 1.5

2、 在执行效率上,StringBuilder > StringBuffer > String

3、 源码体现:本质上都是在调用父类抽象类AbstractStringBuilder来干活,只不过Buffer把代码加了同步关键字,使得程序可以保证线程安全问题。

2.4、包装类

2.4.1 与基本类型的对应关系
基本类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

在这里插入图片描述

2.4.2 java.lang.Number的方法
  • byte byteValue()—以byte形式返回指定数值
  • abstract double doubleValue()–以double形式返回指定的数值
  • abstract float floatValue()–以float的形式返回指定的数值
  • abstract short shortValue()—以short形式返回指定的数值
  • abstract long longvalue()—以long形式返回指定的数值
  • Number提供个各种获取值的方式,完成了强转,把包装类转换为了基本类型的数据
2.4.3 Integer
  • 创建对象(包装类是一个对象,因为是对象才有方法可调用

new Integer(5);创建新对象
Integer.valueOf(5);没有创建新对象

  • 注:
      在Integer类中,包含256个Interger缓存对象,范围是-128到127.
      在使用valueOf()时,如果时指定范围内的值,访问缓存对象,而不是新建对象,如果时指定范围外的值,直接新建对象。
public class test1112 {
    public static void main(String[] args) {
        Integer a=new Integer(5);
        Integer b = Integer.valueOf(5);
        Integer c = Integer.valueOf(5);
        System.out.println(a==b);//false
        System.out.println(b==c);//true
        System.out.println(a.equals(b));//true
    }
}
2.4.4 Double
  • 创建对象
  • new DOuble(3.14)与Double.valueOf(3.14)没有区别,因为没有缓存对象
2.4.5 包装类常用方法
  • boolean equals() 比较对象的内容,而非对象本身
  • int hashCode() 返回此对象的hash码
  • static int paeseInt() j将字符串转换为基本数据类型,Integer.parsh("-9")
  • static String toBinaryString(基本数据类型) 以二进制整数形式返回一个整数字符串
  • static String toOctalString(基本数据类型),以八进制整数形式返回一个整数字符串
  • static String toHexString(基本数据类型),以十六进制整数形式返回一个整数字符串
  • int compareTo(Integer antherInteger) 如果该等于返回0,如果大于返回大于零的值,如果小于返回小于零的值
  • static Integre decode(string) 将String解码为包装类
  • String toString() 返回一个表示该Interger值的String值
2.4.6 包装类的自动装箱和自动拆箱
  • 自动装箱:把基本类型包装成一包装类的对象
    Integer a = 5;//a时引用类型,引用了包装对象的地址
    编译器会完成对象的自动装箱:Interger a=integer.valueOf(5);
  • 自动拆箱:从包装对象中自动取出基本类型值
    int i=a;//a现在时包装类型,没法给变量赋值,需要把5取出来
    编译器会完成自动拆箱:int i=a.intValueof();

2.5 日期类Date

2.5.1 概述

存在于java.util.Date包
用来封装一个毫秒值,表示一个精确的时间点
从1970-1-1日0点开时的毫秒值

2.5.2 创建对象
  • new Date();封装的时系统当前时间的毫秒值
  • new Date(80000000L);封装指定的时间点
public class test1112 {
    public static void main(String[] args) {
        Date a = new Date();
        System.out.println(a);//Thu Nov 12 09:47:03 CST 2020
        Date b = new Date(8000000000000000L);
        System.out.println(b);//Fri Nov 28 22:13:20 CST 255479
        String c = a.toLocaleString();
        System.out.println(c);//2020-11-12 9:47:03
    }
}
2.5.3 常用方法
  • 常用方法
  • boolean euqals() 比较两个日期的相等性
  • int getDate() 返回此Date对象标识的月份中的某一天
  • int getDay() 表示返回日期对象一周中的某一天
  • int getHours() 表示返回日期对象一天中的某小时
  • int getMinutes()表示此对象表示当前小时过去的分钟
  • int getSeconds()表示当前分钟过去的秒数
  • int getTime() 返回1970年1月1日零点到现在所经历的秒数
  • boolean before(Date) 测试此日期是否在指定日期之前
  • boolean after(Date)测试此日期是否在指定日期之后
  • int compareTo() 如果参数 Date 等于此 Date,则返回值 0;如果此 Date 在 Date 参数之前,则返回小于 0 的值;如果此 Date 在 Date 参数之后,则返回大于 0 的值。

2.6 日期类工具SimoleDateFormat

2.6.1 概述

日期格式化工具,可以把Date对象格式化为字符串,也可以把日期字符串解析为Date对象

2.6.2 创建对象

在这里插入图片描述

  • new SimpleDateFormat(格式)
    格式:yyyy-MM-dd HH;mm:ss
    MM/dd/yyyy
2.6.3 常见方法
  • Date parse(String text,ParsePosition pos)
    解析字符串的文字,生成Date
  • StringBuffer format() 将给定的Date格式化为日期/时间字符串,并将结果添加到给定的StringBuffer
2.6.4 SimpleDateFormat的作用
  • 可以自定义设定输入字符串的格式,并且能让这个字符串格式化为日期对象
public class test1112 {
    public static void main(String[] args) throws ParseException {
        System.out.println("输入日期");
        String s = new Scanner(System.in).nextLine();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd");
        Date parse = simpleDateFormat.parse(s);
        String string = parse.toLocaleString();
        System.out.println(string);

    }
}
//输出结果
	输入日期
	2020.11.11
	2020-11-11 0:00:00
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值