Lazy loaded image
学习思考
Lazy loaded imageJavaSE——标准库
字数 7303阅读时长 19 分钟
2025-1-20
2025-3-22
type
status
date
slug
summary
tags
category
icon
password

API

API即应用程序接口(Application Programming Interface)。
Java API就是JDK中提供使用的类,这些类将底层的代码实现封装了起来,不需要关心这些类是如何实现的,只需要知道这些类如何使用即可。

Object

Object是Java语言中的根类,即所有的类的父类;Object中的所有方法,子类都能使用(接口不是Object的子类)。

常用方法

equals()

equals方法用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。
  • 基本数据类比较的是内容(值)
  • 引用数据类型比较的是内存地址值
  • String的equals比较的是内容
注意:在复写Object中的equals方法时,一定要注意public boolean equals(Object obj)的参数是Object类型,在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。

toString()

toString方法返回该对象的字符串表示,其实该字符串内容就是object中getClass.getName()+"@" +Integer.toHexString(hasCode())。
由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。

String

String 类代表字符串,Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
String类是一个常量,其本质就是private final 修饰的字符数组;它们的值在创建之后不能更改,也就是说一旦这个字符串确定了,那么就会在内存区域中就生成了这个字符串;字符串本身不能改变,但str变量中记录的地址值是可以改变的。
字符串有大量的重载的构造方法,通过String类的构造方法可以完成字符串对象的创建。

创建对象

s3和s4的创建方式有什么不同呢?
  • s3创建:在内存中只有一个对象,这个对象在字符串常量池中。
  • s4创建:在内存中有两个对象,一个new的对象在堆中,一个字符串本身对象,在字符串常量池中。

构造方法

查找方法

  • length():字符串中有多少个字符
    • subString():获取部分字符串
      • startsWith():字符串是否以指定字符串开头,结尾同理
        • contains():字符串中是否包含另一个字符串
          • toCharArray()、getBytes():将字符串转成一个字符或字节数组
            • equals():判断两个字符串中的内容是否相同
              • toString():获取该字符串对象中的内容
                • 直接打印引用类型变量时,默认调用该类型进行重写后的toString方法。

              方法练习

              1. 获取指定字符串中,大写字母、小写字母、数字的个数。
                1. 思路:
                2. 为了统计大写字母、小写字母、数字的个数,创建3个计数的变量
                3. 为了获取到字符串中的每个字符,进行字符串的遍历,得到每个字符
                4. 对得到的字符进行判断,如果该字符为大写字母,则大写字母个数+1;如果该字符为小写字母,则小写字母个数+1;如果该字符为数字,则数字个数+1
                5. 显示大写字母、小写字母、数字的个数
              1. 将字符串中,第一个字母转换成大写,其他字母转换成小写,并打印改变后的字符串。
                1. 思路:
                2. 把字符串分为两个部分,第一部分为字符串中第一个字母,第二部分为剩下的字符串
                3. 把第一部分字符串转换成大写字母,把第二部分字符串转换成小写字母
                4. 把两部分字符串连接在一起,得到一个完整的字符串
              1. 查询大字符串中,出现指定小字符串的次数,如“hellojava,nihaojava,javazhenbang”中查询出现“java”的次数。
                1. 思路:
                2. 在大串中,查找小串出现的位置,出现了就次数+1
                3. 在上次小串出现位置的后面继续查找,需要更改大串的内容为上次未查询到的字符串
                4. 回到第一步,继续查找小串出现的位置,直到大串中查询不到小串为止

              StringBuffer

              StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。
              StringBuffer是个字符串的缓冲区,字符串缓冲区支持可变的字符串,即它就是一个容器,可以装很多字符串,并且能够对其中的字符串进行各种操作。

              方法调用

              注意:append、delete、insert、replace、reverse方法调用后,返回值都是当前对象自己,所以说,StringBuffer它可以改变字符序列的长度和内容。

              方法链式调用

              在开发中,会遇到调用一个方法后,返回一个对象,然后使用返回的对象继续调用方法的情况;这种时候,可以把代码放在一起,如append()方法一样。

              方法练习

              将int[] arr = {34,12,89,68};中元素转成字符串,格式为[34,12,89,68]。
              无论多少数据,数据是什么类型都不重要,只要最终变成字符串就可以使用StringBuffer这个容器。

              StringBuilder

              StringBuilder类也是字符串缓冲区,它提供一个与StringBuffer兼容的API,但不保证同步;该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍);如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer要快。

              正则表达式

              概念

              正则表达式(Regular Expression),在代码中常简写为regex;正则表达式是一个字符串,使用单个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串;在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本,比如注册邮箱时限制用户名和密码的长度。

              语法规则

              类别
              例子
              含义
              字符
              x
              代表的是字符x
              \'
              代表的是反斜线字符''
              \t
              代表的是制表符
              \n
              代表的是换行符
              \r
              代表的是回车符
              字符类
              [abc]
              a、b 或 c(简单类)
              ![abc]
              任何字符,除了 a、b 或 c(否定)
              [a-zA-Z]
              a到 z 或 A到 Z,两头的字母包括在内(范围)
              [0-9]
              0到9的字符都包括
              [a-zA-Z_0-9]
              代表的字母或者数字或者下划线(即单词字符)
              预定义字符类
              .
              任何字符
              \d
              数字:[0-9]
              \w
              单词字符:[a-zA-Z_0-9]如"com.itheima.tests"
              边界匹配器
              ^
              代表的是行的开头
              $
              代表的是行的结尾
              \b
              代表的是单词边界
              数量词
              X?
              X,一次或一次也没有
              X*
              X,零次或多次
              X+
              X,一次或多次
              X{n}
              X,恰好 n 次
              X{n,}
              X,至少 n 次
              X{n,m}
              X,至少 n 次,但是不超过 m 次

              相关String类方法

              • boolean matches(String正则的规则)
                • "abc".matches("[a]"):匹配成功返回true
              • String[] split(String正则的规则)
                • "abc".split("a"):使用规则将字符串进行切割
              • String replaceAll( String正则规则,String 字符串)
                • "abc0123".repalceAll("[\d]","#"):按照正则的规则,替换字符串

              正则表达式匹配练习

              正则表达式切割练习

              正则表达式替换练习

              正则表达式邮箱地址验证

              Date

              毫秒值概念

              • 时间和日期类:java.util.Date
              • 毫秒概念:1000毫秒=1秒
              • 毫秒的0点:System.currentTimeMillis() 返回值long类型参数
              • 获取当前日期的毫秒值:3742769374405
              • 时间原点公元1970年1月1日,午夜0:00:00,英国格林威治,毫秒值就是0

              构造方法

              • 空参构造:public Date()
              • 带参构造:public Date(long times)

              get/set方法

              • public long getTime():将当前的日期对象,转为对应的毫秒值
              • public void setTime(long times):根据给定的毫秒值,生成对应的日期对象

              日期格式化SimpleDateFormat

              DateFormat是对日期进行格式化(自定义)的类,它以与语言无关的方式格式化并解析日期或时间,可帮助进行格式化并解析任何语言环境的日期。对于月、星期,甚至日历格式(阴历和阳历);日期/时间格式化子类(如 SimpleDateFormat类)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。
              对日期进行格式化的步骤:
              1. 创建SimpleDateFormat对象
                  • 在类构造方法中,写入字符串的日期格式((自己定义)
              1. SimpleDateFormat调用方法format对日期进行格式化
                  • public String format(Date date):传递日期对象,返回字符串
              日期模式:
              字符串
              含义
              yyyy
              年份
              MM
              月份
              dd
              月中的天数
              HH
              0-23小时
              mm
              小时中的分钟
              ss
              注意:字母表示的每个字段不可以随便写。

              字符串转成日期对象

              1. 创建SimpleDateFormat的对象:构造方法中,指定日期模式
              1. 子类对象调用parse方法传递String,返回Date
              注意: 时间和日期的模式yyyy-MM-dd,必须和字符串中的时间日期匹配。

              Calendar

              Calendar是日历类,在Date后出现,替换掉了许多Date的方法,该类将所有可能用到的时间信息封装为静态成员变量,方便获取;Calendar是抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,将语言敏感内容处理好,再返回子类对象。

              常用方法

              • getTime():把日历对象,转成Date日期对象
              • et(日历字段):获取指定日历字段的值
                • set(int field,int value):设置指定的时间
                  • add(int field, int value):进行整数的偏移
                  • int get(int field):获取指定字段的值

                    日期练习

                    活了多少天

                    计算闰年

                    System

                    System中代表程序所在系统,提供了对应的一些系统属性信息和系统操作。
                    System类不能手动创建对象,因为构造方法被private修饰,阻止外界创建对象,System类中的都是static方法,类名访问即可;在JDK中,有许多这样的类。

                    currentTimeMillis方法

                    currentTimeMillis()方法:用于计算程序的执行时间。

                    exit方法

                    gc方法

                    getProperties方法

                    arraycopy方法

                    练习

                    1. 验证for循环打印数字1-9999所需要使用的时间(毫秒)
                      1. 将src数组中前3个元素,复制到dest数组的前3个位置上
                          • 复制元素前:src数组元素[1,2,3,4,5],dest数组元素[6,7,8,9,10]
                          • 复制元素后:src数组元素[1,2,3,4,5],dest数组元素[1,2,3,9,10]
                      1. 循环生成100-999之间的的三位数并进行打印该数,当该数能被10整除时,结束运行的程序

                        Math

                        Math 类是包含用于执行基本数学运算的方法的数学工具类,如初等指数、对数、平方根和三角函数;类似这样的工具类,其所有方法均为静态方法,并且一般不会创建对象。

                        常用方法

                        Arrays

                        此类包含用来操作数组(比如排序和搜索)的各种方法,需要注意的是,如果指定数组引用为 null,则访问此类中的方法都会抛出空指针异常NullPointerException。

                        常用方法

                        数组复制练习

                        大数计算

                        BigInteger

                        Java中long型为最大整数类型,对于超过long型的整数已经不能被称为整数了,它们被封装成BigInteger对象;在BigInteger类中,四则运算都是方法来实现,而不是采用运算符。

                        概述和构造方法

                        四则运算

                        BigDecimal

                        double和float类型在运算中很容易丢失精度,造成数据的不准确,Java提供的BigDecimal类可以实现浮点数据的高精度运算。

                        四则运算

                        浮点数据的除法运算和整数不同,可能出现无限不循环小数,因此需要对所需要的位数进行保留和选择舍入模式。
                         
                        上一篇
                        JavaSE——面向对象
                        下一篇
                        JavaSE——集合

                        评论
                        Loading...