JAVA-常用类

常用类-串讲

1.Object类

概述: 所有类直接或间接的父类。

1. int hashCode():

返回的是给对象的哈希码值

1. 哈希码值是根据实际地址转换而来。
2. 虽然它不是实际地址,但是在理解上,可以认为它代表地址。
2. Class getClass()

1.返回值 :Class类

​ Class类中有一个getName()方法

 public String getName()以 String 的形式返回此 Class 对象所表示的实体
3. toString()

Object toString方法:

​ getClass().getName() + ‘@’ + Integer.toHexString(hashCode())

一般我们创建对象,直接用输出语句输出对象,默认的是调用 该对象的 toString 方法

4.boolean equals(Object obj)

判断对象与对象是否“相等”

*        public boolean equals(Object obj) {
*         return (this == obj);
*     }

对象的比较,应该是比较属性值是否相等,所以我们需要在实体类中重写equals()方法

== 与 equals 的区别:

5. Object clone() 和 void finalize()

2.String类

​ **概述:**由多个字符组成的一串数据,字符串也可以看成是字符数组。

​ 1. 字符串的字面值 “Hello” 可以被看成字符串的对象

​ 2.字符串是常量,一旦被赋值,就不能改变。

​ String s = “hello”;

​ s = “java”;

1.构造方法
*      构造方法:
*      public String()  无参构造
*      public String(byte[] bytes) 把字节数组转换成字符串。
*      public String(byte[] bytes,int index ,int length) 把字节数组的一部分转换为字符串。
*      public String(char[] value) 把字符数组转换成字符串
*      public String(char[] value,int index,int count) 把字符数组中的一部分转换为字符串。
*      public String(String original)初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列
*
*      成员方法:
*      public int length() 返回字符串长度
2.判断功能
* String类 判断功能
* boolean equals(Object obj):比较字符串是否相同(区分大小写)
*
* boolean equalsIgnoreCase(String str):比较字符串是否相同(忽略大小写)
*
* boolean contains(String str):判断 A字符串中是否包含str(连续的)
*
* boolean startsWith(String str):判断字符串是否以“str”开头
*
* boolean endsWith(String str):是否以”str“结尾
*
* boolean isEmpty():判断字符串是否为空

String s1 = null ; //没有对象

String s2 = “”; //有对象,但是对象内容为空

3.获取功能
*  String类:获取功能
*
* int length():获取字符串长度
*
* char charAt(int index):获取指定位置索引的字符
*
* int indexOf(int ch):返回指定字符在此字符串中第一次出现的索引
*      比如 'a' 或 97
*
* int indexOf(String str):返回指定的字符串在当前字符串第一次出现的索引(首字母出现的索引)
*
* int indexOf(int ch,int fromIndex):返回指定字符在指定位置后第一次出现的索引(包含指定位置索引)
*
* int indexOf(String str,int fromIndex):返回指定字符串在指定位置后第一次出现的索引(返回首字母出现的索引,查找时包含指定位置索引)
*
* String substring(int start):从指定位置截取当前字符串(包含start)
*
* String substring(int start,int end):从指定开始位置 截取到指定结束位置(包含Start,不包含end)
4.转换功能
*  String类:转换的方法
*
*  byte[] getBytes():把字符串转换为字节数组
*
*  char[] toCharArray():把字符串转化为字符数组
*
*  static String valueOf(char[] chs):把字符数组转化为字符串
*
*  static String valueOf(int i):把任意数据类型转化为字符串
*
*  String toLowerCase():将字符串转化为小写
*
*  String toUpperCase():将字符串转化为大写
*
*  String concat(String str):将两个字符串拼接起来
5.其他功能
* String类:其他方法
* 替换功能
* String replace(char old,char new):只要是 “old” ,就用“new”来替换。
* String replace(String old,String new)
*
* 去除字符串两端的空格
* String trim()
*
* 按字典顺序比较两个字符串
* int compareTo(String str)
* int compareToIgnoreCase(String str)

1.trim()

​ “ 最皮 王千钰 ”

2.compareTo()

3.StringBuffer (StringBuilder)

扩展

* 线程安全(多线程):
*          安全   ------ 同步 -------- 数据的安全性。
*              举例:银行账户:100块钱
*                  我拿着卡 在ATM上取这100块钱的时候。我媳妇同时在微信上给钱包充值
*          不安全 ------不同步 ----------- 数据的访问效率
*              举例:刷抖音,评论
*              第二个评论:哇塞,我竟然是第一个

概述:

​ 概述:线程安全的、带有缓冲区的可变字符串。可以通过某些方法调用改变该序列的长度和内容。

String 与 StringBuffer 区别

*   StringBuffer 和 String  的区别:
*      1.StringBuffer 长度是可变的 , 而 String 长度是不可变的。
*      2.StringBuffer进行拼接操作的时候,不会浪费太多资源。  
1.构造方法
*   public StringBuffer()  无参构造
*   public StringBuffer(int capacity) 构造一个不带字符,但具有指定初始容量的字符串缓冲区。
*   public StringBuffer(String str)构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
*                                  该字符串的初始容量为 16 加上字符串参数的长度。

容量和长度的区别:

​ 容量capacity:理论值

​ 长度length:实际值

2.添加功能
*  public StringBuffer append(String str) 可以将任意类型的数据添加到字符串缓冲区中,并且返回的是字符串缓冲区本身。
*  public StringBuffer insert(int offset,String str) 将str插入到缓冲区指定索引处,并且返回的是字符串缓冲区本身。
3.删除功能
*   删除功能
*      public StringBuffer deleteCharAt(int index)移除此序列指定位置的 char。此序列将缩短一个 char。并返回字符缓冲区本身
*      public StringBuffer delete(int start,int end)移除此序列的子字符串中的字符,包含start,不包含end
4.替换功能
*      替换功能
*          public StringBuffer replace(int start,int end,String str) 替换 包含start,不包含end
5.翻转功能
*      反转功能
*              public StringBuffer reverse()将此字符序列用其反转形式取代
6.截取功能
*  截取方法
*      public String substring(int start)
*      返回一个新的 String,它包含此字符序列当前所包含的字符子序列。该子字符串始于指定索引处的字符,一直到此字符串末尾。
*
*      public String substring(int start,int end)
*      返回一个新的 String,它包含此序列当前所包含的字符子序列。该子字符串从指定的 start 处开始,一直到索引 end - 1 处的字符。
面试题:

​ 1. 简述 String , StringBuffer , StringBuilder 三者的区别?

StringBuffer: 线程安全的 – 同步的----- 安全性高 ,访问效率低

StringBuilder:线程不安全的 – 不同步的-安全性低,访问效率高

​ 2. StringBuffer 与 数组的区别?

4. 数组高级

1.冒泡排序(升序)

​ 相邻两个元素依次比较,较大的向后移动,经过一轮比较之后,最大值会出现在最大索引处(最后面)。多轮比较后 我们会得到一个排好的序列

​ for( int i = 0 ; i<arr.length -1;i++){

​ for(int j = 0 ; i<arr.length-1-i ; j++){

​ if(arr[j] > arr[j+1]){

​ int temp = arr[j];

​ arr[j] = arr[j+1];

​ arr[j+1]=temp;

​ }

​ }

}

2.选择排序

​ 从0索引开始 依次与后面的元素比较,小的 和0索引 的元素进行交换,经过一轮比较之后,最小值应该出现在最小索引处(最前面),多轮比较后 我们会得到一个排好的序列。

​ for(int i = 0 ; i< arr.length-1 i++){

​ for(int j = 1+i ; j< arr.length ; j++){

​ if(arr[i] < arr[j]){

​ int temp = arr[j];

​ arr[j] = arr[i];

​ arr[i]=temp;

​ }

​ }

​ }

3.基本查找

​ 循环遍历,一个一个找

4.折半查找

​ 前提:数组是有序。

​ 思路:

​ 1.声明 最大索引 最小索引

​ 2.计算中间索引 mid

​ 3. 查找的值与中间索引进行比较

​ a. 相等: 直接返回mid。

​ b.不相等:

​ 1)查找的值大于中间索引的值

​ 右边: min = mid + 1

​ 2)查找的值小于中间索引的值

​ 左边:max = mid -1

5.Arrays类

​ 1.遍历打印数组元素: toString(int[] a);

​ 2.排序: sort(int[] a)

​ 3.查找:binarySearch(int[] a);

5.基本数据类型的包装类

概述:将基本数据类型包装成一个类,可以添加一些相应的方法,简化对于基本数据类型的操作。

byte Byte

short Short

int Integer

long Long

float Float

double Double

char Character

boolean Boolean

1.进制转换

二进制: toBinaryString(int i);

八进制 toOctalString(int i);

十六进制: toHexString(int i);

2.构造方法

​ 1. public Integer(int value)

​ 2 .public Integer(String s)

​ “10”,“java”

3. int 与 String的相互转换

​ 1.int ------>String

​ a. num + “ ”

​ b.String.valueOf(num);

​ c.new Integer(num).toString();

​ 2.String -------> int

​ a.new Integer(str)

​ b.Integer.parseInt(str)

4. 将int转换为任意进制

public static String toString(int i,int radix):i–要转换的数字 , radix:代表的是进制

​ 进制的范围:2 ~ 36

int parseInt(String s,int radix)
                    throws NumberFormatException

注意事项:

​ 字符串里的数字 不能超过 基数-1

5.自动装箱 自动拆箱

Integer i = 100; // Integer i = Integer.valueOf(100); 自动装箱。

​ i += 100; // Integer.valueOf (i.intValue() + 100) ;先做一次自动拆箱,再做一次自动装箱。

面试题:

​ 了解:byte常量池

6.Character类

​ char类型的包装类

​ 构造方法

​ public static Character valueOf(char c)

​ 成员方法

public static boolean isLowerCase(char ch) 判断字符是否是小写
public static boolean isUpperCase(char ch) 判断字符是否为大写字母。
public static boolean isDigit(char ch) 判断字符是否为数字
public static char toLowerCase(char ch) 将字符转换为小写
public static char toUpperCase(char ch) 将字符转换为大写

6.正则表达式

熟悉正则表达式的规则:

1.字符:

x 字符 x a 就代表字符‘a’

\\ 反斜线字符

\t 制表符 ('\u0009')

\n 新行(换行)符 ('\u000A')

`\r`     回车符 (`'\u000D'`)

2.字符类

[abc] abc 单匹配

[^abc] 任何字符,除了 abc(否定)

[a-zA-Z] azAZ,两头的字母包括在内(范围)

[0-9] 0-9的数字都包括在内

3.预定义字符类

. 任何字符 ,如果想表达 “ . ” 借助 \ " \. "

\d 0-9的数字都包括在内

\D 非数字 :[^0-9]

\s 空白字符

\S 非空白字符

\w 单词字符

\W 非单词字符

4.边界匹配器

^ 行的开头

$ 行的结尾

\b 单词边界

  1. 数量词

    X? x 出现1次或0次

    X* x出现0次 或者 多次

    X+ x出现1次或者多次

    x{n} x出现恰好n次

    x{n,} x出现至少n次

    x{n,m} x出现至少n次,最多不超过m次

使用正则表达式:

public boolean matches(String regex) 告知此字符串是否匹配给定的正则表达式。

校验QQ号: 5-15位 ,不能以0开头

​ String regex = "[1-9] \d{4,14} "

**校验手机号:**以1开头 ,第二位是3,5,8 ,剩余9位数字

​ String regex = “1[358]\d{9} ”

校验邮箱:

2. 分割功能
public String[] split(String regex)	根据给定正则表达式的匹配拆分此字符串。
3. 替换功能
public String replaceAll(String regex,String str)
		使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 
4. 获取功能

​ 1.定义正则表达式规则:String regex = 正则表达式

​ 2.创建Pattern对象 Pattern pattern = Pattern.compile(regex);

​ 3.获取匹配器对象 Matcher matcher = pattern.matcher(str);

  1. matcher.find() 判断有没有匹配的字符串

    String s = matcher.group();

    ​ while( matcher.find()){

    ​ String s =String s = matcher.group();

    ​ sout(s);

    ​ }

7.Math类

**概述:**与数学运算有关的类

成员变量

​ public static final double E

​ public static final double PI

成员方法:

public static int abs(int a) 返回 int 值的绝对值
public static double ceil(double a) 向上取整(比它大的整数,并且是最小的)
public static double floor(double a) 向下取整
public static int max(int a,int b)	返回两个 int 值中较大的一个
public static int min(int a,int b)  返回两个 int 值中较小的一个
public static double pow(double a,double b) 返回a的b次幂
public static double random()	返回带正号的 double 值,[0.0~ 1.0)
public static int round(float a) 四舍五入
public static double sqrt(double a) 平方根

**练习:**生成指定范围的随机数方法 start - end(1-00)

​ public static int getRandom(int start , int end ){

​ int num = (int)(Math.random()*(end-start)+1) + start

}

8.Random类

​ **概述:**生成随机数的类

1.构造方法
	1.	public Random()
		2.	public Random(long seed)
2. 成员方法
1.	public int nextInt() :生成随机
2.	public int nextInt(int n )  生成随机数:[0,n)

9.System类

概述: 和系统有关的类

1.gc()
public static void gc() 运行垃圾回收器

在对象中重写 finalize()方法

创建对象

对象 = null ;

System.gc()

2. exit()
public static void exit(int status) 终止当前正在运行的 Java 虚拟机。参数用作状态码;根据									 惯例,非 0 的状态码表示异常终止。
2. currentTimeMillis()
public static long currentTimeMillis() 回以毫秒为单位的当前时间
3.arrayCopy()
public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)
   
   参数:
   		src - 源数组。
		srcPos - 源数组中的起始位置。
		dest - 目标数组。
		destPos - 目标数据中的起始位置。
		length - 要复制的数组元素的数量

10. BigInteger类

**概述:**可以让超出int取值范围的数据参与运算。

1.构造方法
public BigInteger(String val)
2.成员方法
1. public BigInteger abs()
2. public BigInteger add(BigInteger val) 加
3. public BigInteger subtract(BigInteger val) 减
4. public BigInteger multiply(BigInteger val) 乘
5. public BigInteger divide(BigInteger val) 除
6. public BigInteger[] divideAndRemainder(BigInteger val) 返回 商和 余数组成的数组。

11.BigDecimal类

**概述:**为了解决float 和 double 参与运算丢失精度的问题

1.构造方法
public BigDecimal(String val)  将 int 转换为 BigDecimal。BigDecimal 的标度为零。
2.成员方法

1.绝对值

2.加

3.减

4.乘

5.除

6.public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)

参数:

​ divisor - 被除数

​ scale -小数点后保留几位。
​ roundingMode - 要应用的舍入模式

12.Date类

**概述:**表示特定的瞬间,精确到毫秒。

1.构造方法:

​ 1.

public Date() 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
public Date(long date)	分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

13.SimpleDateFormat类

**概述:**对Date进行格式化

1.构造方法
1.public SimpleDateFormat()
2.public SimpleDateFormat(String pattern)

y:年

M:月

d:天

H: 小时

m:分钟

s:秒

String pattern = ” yyyy年MM月dd日 HH:mm:ss“

14. Calendar 类

概述: 是一个抽象类,它提供了与日期操作有关的一些方法

1.创建对象
public static Calendar getInstance() 使用默认时区和语言环境获得一个日历
2.get()
public int get(int field) 返回给定日历字段的值。

calendar.get(Calendar.YEAR) ;//获得年字段

3. add()
1.public abstract void add(int field,int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量

4.set()
public final void set(int year,int month,int date)设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安宁#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值