API

本文深入探讨了Java API,包括核心的java.lang包和java.util包,详细讲解了Object类及其常用方法如hashCode()、toString()和equals()。此外,还介绍了String类的不可变性、常用方法以及正则表达式的应用。同时,提到了序列化和反序列化的过程,以及IO流中的字节流和字符流的基本概念。
摘要由CSDN通过智能技术生成

#什么是API

API(应用程序接口)是一些别人写好的一些预先定义的函数,让我们去用

##常见API:

    1)Java.util包是java中的工具包,包含各种实用工具类/集合类/日期时间工具等各种常用工具包
    import java.util.Scanner;
    import java.util.Arrays;

    2)java.lang包是java的核心,包含了java基础类
    包括基本Object类/String类/Class类/基本数学类等最基本的类,这个包无需导入,默认会自动导入
    import java.lang.Object;
    import java.lang.String;
    import java.lang.StringBuilder/StringBuffer;
    正则表达式
    包装类等等 –
 

#顶级父类java.lang.Object

##什么是Object类

Object是Java中所有类的超类,Java中的类都直接或者间接的继承自Object
如果一个类没有明确的指定父类,那么这个类默认继承Object
java.lang包是Java的核心包,无需导包,会自动导入

##Object类常用方法:

1、hashCode()
2、toString()
3、equals()

hashCode():

默认实现:根据对象的地址值生成一个唯一的int类型的哈希码值
重写后:根据对象传入的属性值生成哈希码值       
只要两个哈希码值/int值不一样,就说明是两个对象;
两个对象如果hashCode值相同,则两个对象可能相同(有可能两个不相等的对象有相同的hashcode)

toString:

默认实现:打印对象的【类名@十六进制的哈希码】地址值
重写后: 对于自定义的类                              打印对象的 类型 + 属性 +属性值
             对于String类,会自动重写toString()        打印的是字符串的具体内容   

equals:

默认实现:比较两个对象的地址值,默认使用==比较
重写后:对于自定义的类                             比较两个对象的类型+属性+属性值
           对于String类,会自动重写equals()         比较的是两个字符串的具体内容

###==和equals的区别

* ==比较的是左右两边的值,
      1)如果左右两边是(八大)基本类型,比较的是字面值
        比如1和1,3.4和3.4   1 == 1、 3.4 == 3.4
      2)如果左右两边是引用类型,比较的是引用类型变量保存的地址值
       直接写打印语句so(s2.equals(s3)); 比较的是s2和s3的地址值,因为没重写,结果为false

###在JS中==和===的区别

#String类

##String 类概述:

String是一个底层封装char[]数组的 对象,字符串不可变

###为什么字符串不可变(面试)


通过底层实现可以看出:String类被final修饰,是常量;不可以被继承

##String类常用API   长大小前后下标

###面试题

java 怎样从一个string字符串中判断某个字母出现多少次

错误示例:for循环里面的变量是下标,必须从0开始到s.length()-1结束
从头到尾循环
判断相等,自增
例如判断a
int  cout=0;
String  s=new String("abcdefaaabc");
for(int i=1;i<s.length();i++){
    if(s.charAt(i)=='a')
    cout++;就这样就可以了
}
如果不要判断大小写。s.toLowerCase()全变了再判断
//正确示例
public class Test {
    public static void main(String[] args) {
       sum();
    }
    
    public static void sum() {
        int count = 0;
        String s = "ababbababbabababbabab";
        for (int i = 0; i<=s.length()-1; i++){
            if (s.charAt(i) == 'a') {
                count++;
            }
        }
        System.out.println(count);
    }
  }

如何在Java中反转字符串? 面试 //反转字符串程序字符串的反转,如:输入abc,输出cba

字符串操作:如何实现字符串的反转及替换?:可用字符串构造一StringBuffer 对象,然后调用StringBuffer 中的reverse方法即可实现字符串的反转,调用replace 方法即可实现字符串的替换。

  如何实现字符串的反转及替换?_一个傻子程序媛的博客-CSDN博客_如何实现字符串的反转及替换

##java.lang.StringBuilder、StringBuffer-字符串拼接   安率源用

 ##String的衍生 数据的校验:正则表达式

###简述正则表达式及其用途

在编写处理字符串的程序时,经常会有查找符合某些复杂规则的字符串的需要。 
正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本 
规则的代码。

用途:

正则表达式概述:正则速学速查
  正则表达式操作的都是String类型的数据
  可以校验数据,看看用户输入的数据是不是我们规定的格式的数据
                常用来判断用户输入的内容是否符合格式的要求,注意是严格区分大小写的。
               假如输入的不是正确的账号,就不进行提交了

String提供的正则表达式方法
    Matches(正则)匹配的意思 : 判断当前字符串能否匹配正则表达式
        例:if (input.matches(regex)) {//如果身份证号正确
                System.out.println("恭喜你!输入正确!");
    replaceAll(正则,子串) : 替换子串
    split(正则) : 拆分字符串

一般不用自己写:需要什么正则表达式直接百度即可,网上别人已经写好了,只需要稍微看看正确不正确即可

#序列化和反序列化

##1. 序列化(如何实现):

将程序中对象的各项信息,序列化输出到文件中保存
方向是Out,使用的流是ObjectOutputStream
使用的方法是out.writeObject(目标对象);
注意:如果一个类的对象想要被序列化,那么这个类必须实现Serializable接口

###什么情况下需要序列化

1.当你想把的内存中的对象保存到一个文件中或者数据库中时候;

2.当你想用套接字在网络上传送对象的时候;

3.当你想通过RMI传输对象的时候;

##2. 反序列化(如何实现):

将之前输出到文件中的数据,读取回程序中,并把读到的数据重新恢复成对象
方向是in,使用的流是ObjectInputStream
使用的方法是in.readObject();
注意:反序列化指定的文件路径,必须与序列化输出的文件路径一样
注意:一次序列化操作对应一次反序列化操作,或者UID必须保持一致,如果不一致,会报错

#IO流 字节流 字符流

##输入流/输出流:

流(看是输入还是输出从程序角度看)
我们写的代码都存在java内存中
输出:idea软件内容存到文档
输入:别人给的文档里的东西在idea显示出来

##常见的流

面试 : 字符流和字节流的区别?并且他们的父类叫什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值