JAVA实用类

枚举

枚举是指的由一组固定常量组成的类型:一种新的类型—枚举(Enum)
枚举定义的语法格式:

​ 【Modifier】enum enumName{

​ enumContantName1[,enumConstantName2…[;]]

​ //[filed,method]

​ }

​ Modifier 是访问修饰符,如public等

​ enum是关键字

​ enumContantName1[,enumConstantName2…[;]]表示枚举常量,枚举常量之间以逗号隔开

​ //[filed,method] 表示其他的成员,包括构造方法,置于枚举常量的后面

​ 在枚举中,如果除了定义常量,还定义了其他成员,则枚举常量列表必须以分号(;)结尾

​ 枚举其实就是一种类型,是java.lang.Enum类的子类

程序中使用枚举有哪些好处
1.枚举可以使代码更易维护,有助于确保变量指定的合法,期望的值
2枚举更容易于编程时的输入,使用枚举赋值,之需要输入枚举名,然后输入一个点(.)就能将所有的值显示出来
**使用switch来枚举

public enum Sex {
    Male,Female
}
public void  doWhat(Week day){
        switch (day){
            case MON:
            case TUE:
            case THU:
            case WED:
            case FRI:
                System.out.println("工作日,努力写代码");
                break;
            case SAT:
                System.out.println("星期六,看电影");
                break;
            case SUN:
                System.out.println("星期日,打球");
                break;
                default:
                    System.out.println("地球上一周只有7天");

包装类

基本数据类型:int double float char boolean byte

引用数据类型:(有方法有属性的)

比如包装类:Integer Double Float Character Boolean Byte

为了对基本数据类型进行更多的操作,更方便的操作,Java就针对每一种基本数据类型提供了对应的类类型。包装类类型。

byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

集合:List list=new ArrayList();

list.add();//添加元素,只能add是object值;

集合只能装Object类型的,为了能装基本数据类型,java都给其包装成引用类型;
注意:Integer的数据直接赋值,如果在-128到127之间,会直接从缓冲池中获取数据,如果不再该范围内,每次并创建新的空间。、

字符方法:
public static boolean isUpperCase(char ch):判断给定的字符是否是大写的字符
public static boolean isLowerCase(char ch): 判断给定的字符是否是小写字符
public static boolean isDigit(char ch):判断给定的字符是否是数字符
public static char toUpperCase(char ch): 把给定的字符转换为大写字符
public static char toLowerCase(char ch):把给定的字符转换为小写字符

字符串方法
字符串特点:一旦被赋值,就不能改变
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类判断功能:
boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
boolean equalsIgnoreCase(String str):比较字符串的内容,是否相同,忽略大小写
boolean contains(String str):判断大写字符串中是否包含小写字符串
boolean startsWith(String str):判断字符串是否以某个指定字符串开头
boolean endsWith(String str):判断字符串是否以某个指定字符串结尾
boolean isEmpty():判断字符串是否为空

String的获取功能
int length(): 获取字符串的长度
char charAt(int index):获取指定索引位置的字符
int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引
为什么这里是int类型,而不是char类型?
原因是:‘a’和97其实都可以代表’a’ 。
int indexOf(String str):回指定字符串在此字符串中第一次出现处的索引
int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引
String substring(int start):从指定位置开始截取字符串,默认到末尾。
String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。

String的转化功能
byte[] getBytes():把字符串转换为字节数组
char[] toCharArray():把字符串转换为字符数组
static String valueOf(char[] chs):把字符数组转换为字符串
static String valueOf(int i):把int类型的数据转成字符串。
注意:String类的valueOf方法可以把任意类型的数据转成字符串。
String toLowerCase():把字符串转成小写。
String toUpperCase():把字符串转成大写。
String concat(String str):把字符串拼接。

String其他功能:
替换功能:
String replace(char old,char new)
String replace(String old,String new)*
String trim()去空格
int compareTo(String str)按照字典顺序比较两个字符串

BigDecimal类:不可变的、任意精度的有符号十进制数,可以解决数据丢失问题。
BigInteger 可以让超过Integer范围的数据进行运算。

Math类

Math:用于数学运算的类。
Math 类位于 java.lang 包,它的构造方法是 private 的,因此无法创建 Math 类的对象,并且 Math 类中的所有方法都是类方法,可以直接通过类名来调用它们。如:Math.max(1,2)
成员变量:
public static final double PI
public static final double E
成员方法:
public static int abs(int a):绝对值
public static double ceil(double a):向上取整
public static double floor(double a):向下取整
public static int max(int a,int b):最大值 (min自学)
public static double pow(double a,double b):a的b次幂
public static double random():随机数 [0.0,1.0)
public static int round(float a) 四舍五入(参数为double的自学)
public static double sqrt(double a):正平方根
注意:Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值。

StringBuffer

StringBuffer:
线程安全的可变字符串。
安全:医院的网站,银行网站
效率:新闻网站,论坛之类的
StringBuffer的构造方法:
public StringBuffer():无参构造方法
public StringBuffer(int capacity):指定容量的字符串缓冲区对象
public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
StringBuffer的方法:
public int capacity():返回当前容量。 理论值
public int length():返回长度(字符数)。 实际值
StringBuffer的反转功能:
public StringBuffer reverse()
StringBuffer的添加功能:
public StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身。
public StringBuffer insert(int offset,String str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身。
StringBuffer的删除功能:
public StringBuffer deleteCharAt(int index):删除指定位置的字符,并返回本身。
public StringBuffer delete(int start,int end):删除从指定位置开始指定位置结束的内容,并返回本身。
StringBuffer的替换功能:
public StringBuffer replace(int start,int end,String str):从start开始到end用str替换。
StringBuffer的截取功能:注意返回值类型不再是StringBuffer本身了
public String substring(int start)
public String substring(int start,int end)
面试题:

1:String,StringBuffer,StringBuilder的区别?
A:String是内容不可变的,而StringBuffer,StringBuilder都是内容可变的。
B:StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高

2:StringBuffer和数组的区别?
二者都可以看出是一个容器,装其他的数据。
但是呢,StringBuffer的数据最终是一个字符串数据。
而数组可以放置多种数据,但必须是同一种数据类型的。

3:形式参数问题
StringBuffer作为参数传递。
String作为参数传递。

总结:一般需要进行字符串的拼接和反转时,使用StringBuffer。

Scanner类

使用Scanner类可以很方面地获取用户的键盘输入,Scanner是一个基于正则表达式的文本扫描器,它可以从文件、输入流、字符串中解析出基本类型值和字符串值。Scanner类提供了多个构造器,不同的构造器可接受文件、输入流、字符串作为数据源,用于从文件、输入流、字符串中解析数据。
Scanner主要提供了两个方法来扫描输入:
hasNextXxx():是否还有下一个输入项,其中Xxx可以是Int、Long等代表基本数据类型的字符串。如果需要判断是否包含下一个字符串,则可以省略Xxx。
nextXxx():获取下一个Scanner类输入项。Xxx的含义与前一个方法中Xxx相同。

System类

System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。
由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。
成员方法
native long currentTimeMillis():

该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。

void exit(int status):

该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。

void gc():

该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况。

int identityHashCode(Object x):

返回对象精确HashCode值,也就是根据该对象的内存地址得到的hashCode值,不受重写hashCode()方法的影响。

String getProperty(String key):

该方法的作用是获得系统中属性名为key的属性对应的值。系统中常见的属性名以及属性的作用如下表所示:

Object类

Object类是所有Java类的根父类
如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类

1public Object()构造构造器
2public boolean equals(Object obj)普通比较对象的内存地址值
3public int hashCode()普通获取得Hash码
4public String toString()普通对象打印时调用

toString()方法

toString方法是系统将会输出该对象的“自我描述”信息,用以告诉外界对象具有的状态信息
Object 类提供的toString方法总是返回该对象实现类的类名 + @ +hashCode值。

注意这里toString并不是真正意义上的打印内存地址值

在进行String与其它类型数据的连接操作时,自动调用toString()方法

可以根据需要在用户自定义类型中重写toString()方法 如String类重写toString()方法,返回字符串的值。

==和equals方法

= =:

  1. 基本类型比较值:只要两个变量的值相等,即为true。

  2. 引用类型比较引用(是否指向同一个对象):只有指向同一个对象时,==才返回true。

  3. 用“==”进行比较时,符号两边的数据类型必须具有继承关系(可自动转换的基本数据类型除外),否则编译出错

equals():所有类都继承了Object,也就获得了equals()方法。还可以重写。
只能比较引用类型,其作用与“==”相同,比较是否指向同一个对象。
格式:obj1.equals(obj2)
特例:当用equals() 方法进行比较时, 对类File、String、Date及包装类(Wrapper Class)来说,是比较类型及内容而不考虑引用的是否是同一个对象;
原因:在这些类中重写了Object类的equals()方法。
当自定义使用equals()时,可以重写。用于比较两个对象的“内容”是否都相等

equals从写规则
两个对象的地址值相同,返回true
参数为null,返回false
比较属性值,如果属性相同,返回true;不相同返回false

对称性: 如果x.equals(y)返回是“ true ”, 那么y.equals(x) 也应该返回是“true”。

自反性: x.equals(x)必须返回是“true”。

传递性: 如果x.equals(y)返回是“true”,而且y.equals(z)返回是“true”,那么z.equals(x)也应该返回是“true”。

一致性: 如果x.equals(y)返回是“true”,只要x和y属性一直不变,不管你重复x.equals(y)多少次,返回都是“true”。

任何情况下,x.equals(null),永远返回是“false”;
x.equals(和x不同类型的对象)永远返回是“false”。

==和equals的区别

== 既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值,对于引用类型就是比较内存地址

equals的话,它是属于java.lang.Object类里面的方法,如果该方法没有被重写过默认也 是==;我们可以看到String等类的equals方法是被重写过的,而且String类在日常开发中用的比较多,久而久之,形成了equals是比较值的错误观点。

具体要看自定义类里有没有重写Object的equals方法来判断。

通常情况下,重写equals方法,会比较类中的相应属性是否都相等。

对象“克隆”

Java 7新增的Objects类

Objects提供了一些工具方法来操作对象。比如:
hashCode():返回指定对象的hashCode值。
toString:返回指定对象的“描述性”字符串。
requiredNonNull:检查对象是否为null,为null抛出异常,不为null直接返回当前对象。

Random类

Random类概述
此类用于产生随机数
如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
构造方法
public Random():创建一个新的随机数生成器。
public Random(long seed) :使用单个 long 种子创建一个新的随机数生成器。
成员方法
public int nextInt():返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。

public int nextInt(int n):返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。

处理日期的类

public int get(int field)

可以获得年月日

Calendar rightNow=Calendar.getInstance();//获得Calendar子类对象
int year=rightNow.get(Calendar.YEAR);
int month = rightNow.get(Calendar.MONTH);
int data=rightNow.get(Calendar.DATE);
System.out.println(year+","+month+","+data);
rightNow.add(Calendar.YEAR,-3);//获得三年前的年  月日一样
year=rightNow.get(Calendar.YEAR);

Date类

Data():根据当前毫秒值来确定创建日期对象

Date date = new Date();  创建当前日期对象
System.out.println(date);	输出日期	
long l = System.currentTimeMillis();    创建当前日期秒数
System.out.println(l);					输出秒数
Date date1 = new Date(l);				用秒数来创建当前日期	
System.out.println(date1);				输出日期
Date date=new Date(); 					创建当前日期对象
long time = date.getTime();				创建当前日期秒数
System.out.println(time);				输出

date----》String

Date date=new Date();					创建当前日期对象
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");  
String s = simpleDateFormat.format(date);   把秒转换成特定格式
System.out.println(s);						输出

String----》date

String s1="2022年07月21日 09:10:57";
SimpleDateFormat simpleDateFormat1= new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");  		特定格式
Date date1=simpleDateFormat1.parse(s1);		转换,需要抛异常
System.out.println(date1);						输出

正则表达式

格式:

String contect="内容";    如:asdasdasfff
Pattern pattern = Pattern.compile("规则");		
Matcher matcher= pattern.matcher(contect);
while (matcher.find()){
    System.out.println(matcher.group(0));

规则:

在这里插入图片描述

在这里插入图片描述

\w还可以匹配下划线

如何不指定大小写?

在这里插入图片描述

\s匹配任何空白字符
\S匹配任何非空白字符

(3)选择匹配符

在这里插入图片描述

(4)限定符

在这里插入图片描述

在这里插入图片描述

Java匹配是贪婪匹配,即尽可能匹配多的
非贪婪匹配,在限定符后面加一个 ?

(5)定位符

在这里插入图片描述

\b边界可能是字符串最后,也可以是空格的字符串子串的后面

(6)分组

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张天靖09

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

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

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

打赏作者

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

抵扣说明:

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

余额充值