JavaSE基础方法总结

数据工具类

//Arrays.sort(arrs);// 对整个数组进行升序排列
//Arrays.sort(arrs,2,5); //  对数组中下标2开始,到5结束的数组进行升序排列
System.out.println(Arrays.toString(arrs));

 

类和对象的关系

类是对象的类型,对象是类的实例

类是对象的抽象化,对象是类的具象化

类是一个抽象的概念,不能表示出个体来;对象是个体存在的概念,可以指定到某一个上面

 

 

面试题:方法重写和方法重载的区别

方法重载:在同一个类中,方法名相同,方法的参数个数不同,顺序不同,类型不同,和访问修饰符无关,和返回值类型无关的多个方法叫做方法重载

方法重写:在两个有继承关系的类中,子类和父类的方法名相同,方法参数项(个数,顺序,类型)相同,子类访问修饰符不小于父类访问修饰符,子类的返回值类型是父类的返回值类型或是其子类类型,这种关系就叫做方法重写。

 

 

Exception 和 Error 的区别

Exception(异常):在程序运行中出现的不正常事件,遇到异常,会终止程序运行,为避免程序被终止,可以通过一些代码来规避这种问题,遇到异常后,处理这种异常,以达到程序正常运行的目的

Error(错误):在程序运行当中,遇到没办法处理的软件错误或硬件错误,虚拟机会选择终止运行程序。

Bug(漏洞):程序当中的不合理现象

 

 

ArrayList的方法

方法含义
size()获取集合的长度
get(int index)获取指定索引的元素
add(Object o)在列表末尾增加一个元素
add(int index,Object o)在列表指定为值增加一个元素
remove(int index)删除指定索引的元素,超出范围则越界
remove(Object o)删除指定元素,如果列表中没有该元素,不做操作
clone(Collection c)复制集合
contains(Object o)判断是否有该元素
toArray(Collection c)转换成数组
增 add(index, element);

addAll(index, Collection)

删 remove(index)

改 set(inidex, element)

查 get(index)

subList(from , to )

listIterator()

ArrayList和LinkedList

ArrayList 是一个以数组实现的列表,是线程不安全的。在遍历数组时速度比较快

LinkedList是双重链表形式的,是线程不安全的。在遍历数组时比较慢,插入或删除时比较快

ArrayList扩容规则:(原始集合长度*3/2)+1

 

HashSet集合中存放的数据不可以重复,set中没有索引值,很可能每一次读取set中的元素的顺序不一样。

 

Map类型用来存储键值对类型的数据

HashMap类型是线程不安全的,HashTable是线程安全的、

 

总结

List 元素有顺序,可以重复

|--ArrayList 一块连续的空间,线程不安全 如需要线程安全可使用Vector

|--LinkedList 元素分别在不同空间,每个元素通过内存地址链接

Set Set内元素没有顺序,不可以重复,每次读取的顺序可能不一样

|--HashSet

Map

|--HashMap 以键值对形式存在,key不可以重复,value可以重复,key和value可以是任意类型

 

 

Date 类

Date代表日期或时间,精确到毫秒(1秒 = 1000毫秒)。

构造函数:

Date()://创建一个代表当前时间的Date对象;
​
Date(long date)://指定毫秒数创建Date对象;
getTime():获取Date对象的毫秒数;
​
after(Date when):判断当前Date是否在when之后,如果是就返回true,否则返回false;
​
before(Date when):判断当前Date是否在when之前,如果是就返回true,否则返回false;
​
compareTo(Date anotherDate):比较两个日期的大小,如果当前Date等于指定Date,就返回0。如果当前Date小于指定Date,就返回负数;如果当前Date大于指定Date,就返回整数。

 

DateFormat类

 

构造函数:

SimpletDateFormat()//创建一个SimpletDateFormat对象,需要调用applePattern方法指定模式;
​
SimpleDateFormat(String pattern)//创建一个指定模式的SimpleDateFormat对象;
常用方法:

String format(Date d)://把一个Date对象格式化成指定模式的字符串;
​
Date parse(String source)://把日期的文本解析成指定模式的Date对象;
 

 

Calenda类

// 创建Calendar对象
Calendar c = Calendar.getInstance();
// 相当于
Calendar c = new GregorianCalendar();

常用方法

// 创建Calendar对象
Calendar c = Calendar.getInstance();
// 相当于
Calendar c = new GregorianCalendar();
常用方法

void add(int field, int amount)://给指定日期字段添加或减去指定的时间量;
​
boolean after(Object when)://判断是否在指定时间之后,返回结果;
​
boolean before(Object when)://判断是否在指定时间之前,返回结果;
​
Date getTime()://获取日历代表的Date对象;
​
int get(int field)://获取Calendar日历字段的值;
​
void set(int field, int value)://设置Calendar指定日历字段的值;

 

System类

System类提供了一些有用的属性和方法(获取标准输入输出流、数组复制、访问环境变量等等)。System不需要实例化。

  • 获取标准输入输出流的属性:

in:获取标准的输入流;

out:获取标准的输出流;

err:获取错误输出流;

常用方法:

void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
    //从源数组src的srcPos位置开始,复制length个元素到目标数组dest的destPos位置。
    
long currentTimeMillis()://获取当前时间的毫秒数;相当于new Date().getTime()
​
exit(int n)://退出jvm虚拟机。如果n非零,代表不正常关闭jvm虚拟机;
    
gc()://通知运行垃圾回收器尽快回收没有用的资源;
    
String getEnv(String name):获取环境变量(了解)

 

正则表达式

1、匹配

方式一:使用Pattern对象来实现。

// 创建Patther对象
Pattern p = Pattern.compile(规则);
// 创建匹配器
Matcher m = p.matcher(匹配内容);
// 调用matches方法执行匹配,如果匹配成功返回true,否则返回false。
m.matches();

方式二:使用字符串的matches方法。

String regex = "规则";
String content = "匹配内容";
content.matches(regex); // 如果返回true,代表匹配成功,否则失败

2、切割

字符串提供提供了split方法,该方法用于把字符串按照指定规则进行切割,该方法会返回一个字符串的数组。

public class Demo954 {

	public static void main(String[] args) {
		String ip = "192.168.3.144";
		String regex = "\\."; // 匹配.
		
		String[] ips = ip.split(regex);
		System.out.println(Arrays.toString(ips));
	}

}

3、替换字符串

String replaceAll(String regex, String replacement)//把字符串中指定内容全部替换成新的内容。

4、查找匹配内容

Matcher匹配器提供了查找匹配内容的方法:

boolean find()://查找匹配的内容,如果找到则返回true,否则返回false;

String group()://获取匹配内容;

模式:

字符类:

. 匹配任意一个字符。如果要匹配. ,则需要进行转义。比如: \\.

[abc]或[a-c]或[a|b|c]: 匹配a或b或c中任意一个字符。

[^abc] :匹配除了a或b或c以外任意一个字符。

边界字符:

^ 以什么开头

$ 以什么结尾

\b 单词的边界 hello world \b[a-z]{5}\b

数量词:

+ :1个或多个

*: 0个或多个

?: 0个或1个

{n}: 至少出现n次

{n,}:

{n,m}

 

 

Collections工具类

int binarySearch(List<? extends Comparable<? super T> list , T key) 
    //使用二分法查找集合中的某个元素。在调用该方法前,必须保证集合元素的自然顺序按照升序排列。
    
int binarySearch(List<? extends T> list, T key, Comparator<? super T> c):
    //使用二分法查找集合中的某个元素。在嗲用该方法前,必须要根据指定比较器(第三个参数)对集合进行升序排列。
void reverse(List list)://对List集合的元素进行翻转;

void shuffle(List list)://把集合元素的位置随机进行重新分配;

void sort(List list)://按照集合元素的自然顺序进行升序排列;

void sort(List list, Comparator c)://按照指定比较器对集合元素进行排序;

 

File类

构造函数:

new File(String pathname)://按照给定的文件或目录路径创建File对象。

常用方法:

//创建的方法:
createNewFile()://创建一个新的文件;

mkdir()://创建一个空目录;

mkdirs()://创建多级目录;
    
//删除的方法:

delete()://删除一个文件或空目录。如果目录中有其他内容,必须要先清空目录,然后才能够删除该目录。

deleteOnExit()://执行该方法时候不会马上删除文件,只有虚拟机退出前才会删除该文件;
    
//判断的方法:

exists()://判断文件或目录是否存在;

isDirectory()://判断是否是目录,如果是就返回true,否则返回false;

isHidden()://判断该文件是否是隐藏文件;

//查看的方法:

getName()://获取文件名;

getPath()://获取文件或目录的路径;

getAbsolutePath()://获取文件或目录的绝对路径;

length()://获取文件的长度,以字节为单位,如果文件为空,则返回0L。

lastModified()://获取文件的最后修改时间,以毫秒为单位;

File[] listFiles()//:获取该目录下所有文件或目录的File对象;

File[] listFiles(FileFilter filter)//指定过滤器把目录下文件或子目录获取出来;

 

FileInputStream

InpuStream:所有输入字节流的父类

|- FileInputStream: 读文件的输入字节流

构造函数:

FileInputStream(File file)://使用File对象创建一个FileInputStream对象;

FileInputStream(String name)://指定文件名创建一个FileInputStream对象

相关方法:

close()://关闭流;

read()://每次读取一个字节数据;

read(byte[] buf)://每次可以读取多个数据,读取数据的长度取决于数组的大小;

read(byte[] buf, int offset, int length)://指定从offset位置开始读取length个数据到数组中;

 

FileOutputStream

OutputStream:所有输出字节流的父类。

|- FileOutputStream:写文件的输出字节流。

构造函数:

FileOutputStream(File file):

FileOutputStream(File file , boolean append)://如果append为true,那么每次把数据写入文件的末尾。

FileOutputStream(String name):

FileOutputStream(String name , boolean append)://如果append为true,那么每次把数据写入文件的末尾。

主要方法:

close()://关闭流

write(byte[] buf)://把一个字节数组的数据全部写入输出流中;

write(byte[] buf, int offset, int length)://把字节数组指定offset位置开始的length个字节数据写入输出流中;

write(int b)://每次写入一个字节数据;

 

BufferedInputStream

构造函数:

BufferedInputStream(InputStream in)://创建BufferedInputStream对象的时候需要传入另外一个InputStream对象。BufferedInputStream需要借助传进来InputStream对象读取数据,它本身不具备读数据的能力。

常用方法:

read()://每次从缓存中读取一个字节数据;

read(byte[] buf, int offset, int length)://每次从缓存中的offset位置开始读取length个数据到buf数组中;

 

BufferedOutputStream

构造函数:

BufferedOutputStream(OutputStream out)://BufferedOutputStream本身并不具备写数据的能力。他需要借助传进来的OutputStream对象写数据。

主要方法:

flush()://把缓存数组中的数据写入磁盘。

write(int b)://每次把一个字节数据写入缓存数组中;

write(byte[] buf, int offset, int length)://每次从字节数组buf的offset位置开始写入length个字节到缓存数组中。

 

FileReader

Reader:所有输入字符流的父类。

|- FileReader:读文件的输入字符流。

构造函数:

FileReader(File file)://创建一个FileReader对象;

FileReader(String name):

常用方法:

 
close()://关闭流

read()://每次读取一个字符;

read(char[] buf)://每次读取一个数组长度的多个字符,并保存在数组中;

read(char[] buf, int offset, int length)://每次从offset位置开始读取length个字符到数组buf中;

 

FileWriter

Writer:所有输出字符流的父类。

|- FileWriter:写文件的输出字符流。

构造函数:

FileWriter(File f):

FileWriter(File f, boolean append)://如果append为true,就是在文件的末尾追加新的内容;

FileWriter(String name):

FileWriter(String name, boolean append)://如果append为true,就是在文件的末尾追加新的内容;

主要方法:

write(String str)://把字符串写入字符输出流中;

close()://关闭流;

flush()://清空流中的缓冲;

 

转换字符流

InputStreamReader:把输入字节流转换成输入字符流;

OutputStreamWriter:把输出字节流转换成输出字符流;

 

对象流

作用:实现对象的序列化和反序列。

序列化:把一个对象保存在文件中的过程。

反序列化,把一个文件的对象的数据读取出来的过程。

ObjectInputStream:对象输入字节流,实现反序列化。

ObjectOutputStream:对象输出字节流,可以实现把一个对象输出到文件中(序列化)。

 

序列化的对象必须要实现Serializable接口。该接口的主要作用用来标识这个类是可序列化的。

 

Properties

主要方法:

load(InputStream in)://从输入流中加载配置文件;

getProperty(String key)://根据key获取值。

setProperty(String key, String value)://向Properties中添加一个键值。

store(OutputStream out, String comment)://把Properties对象中的数据写入到配置文件中;

 

线程

方式一: 继承Thread

方式二:使用new创建Thread对象,并传入Runnable对象

 

线程的不同状态

准备状态:创建线程的时候。

可运行状态:调用线程的start方法,线程并不会马上执行,只有获得cpu的执行权才会执行;

运行状态:线程获得cpu的执行权,线程开始执行。

阻塞状态:线程的执行权被其他线程抢去了,或者调用了线程wait或sleep方法(线程放弃它的cpu执行权)。

如果其他线程调用notify或notifyAll的时候,线程重新进入可运行状态;

消亡状态:线程执行完毕;

 

同步代码块

synchronize(锁对象) {
    // 可能出现线程安全问题的代码
    ...
}

 

线程通讯的方法

Object类提供了线程通讯的方法:
wait()://让当前线程进入锁对象监听器对象的线程池中等待,释放锁对象,直到被其他线程唤醒为止。

notifyAll()://唤醒锁对象监听器对象的线程池中的所有线程。

notify()://唤醒锁对象监听器对象的线程池中的其中一个线程。

Lock和Condition

jdk1.5提供用于线程通讯两个类。


Lock:锁对象;

	lock():获取锁;

	unlock():释放锁;

	newCondifition():获取锁对象的监听器;

Condition:锁对象的监听器;

	await():相当于wait方法;

	signal():相当于notify方法;

	signalAll():相当于notifyAll方法;

 

Lock和Synchronized实现线程通讯之间的区别?

1)Lock手动获取锁和释放锁,而Synchronized自动获取锁和释放锁;

2)Lock的监听器可以看得见,而Synchronized的锁对象的监听器是看不见;

3)Lock使用await、signal、signAll方法实现线程的通讯,而synchronized使用Object类的wait、notify、notifyAll方法实现线程通讯;

 

线程其他方法

interrupt方法

一个线程调用了wait、join、sleep方法进入阻塞状态后,如果调用了interrupt方法,该方法会把现成的阻塞状态清除,并抛出InterrupteException异常。

join方法

该方法用于实现线程让步。当前线程可以让其他线程先执行,然后让执行当前线程。

 

Timer和TimerTask

Timer:代表定时器;

TimerTask:代表定时任务;

 

UDP协议

UDP协议的特点:

1)不安全,可能会发生丢包;2)传输的数量限制在64kb以内;3)传输速度快,效率高;4)UDP是分为发送端和接收端,进行点对点的数据传输;

发送端:DatagramSocket对象

接收端:DatagramSocket,对外暴露一个端口;

TCP协议

UDP: 1)不安全,可能会发生丢包;2)传输的数量限制在64kb以内;3)传输速度快,效率高;4)UDP是分为发送端和接收端,进行点对点的数据传输;

TCP:1)安全的,不会发生丢包;2)传输数据大小没有限制,通过IO流进行数据传输;3)数据传输速度比UDP慢;4)TCP分客户端和服务端;

TCP协议传输之前要经过三次握手:

1)第一次握手:客户端发送一个数据给服务端,确认服务端是否在线;

2)第二次握手:服务端给客户端返回一个响应;

3)第三次握手:客户端再次发送一个确认给服务端,完成三次握手;

服务端:ServerSocket

客户端:Socket

 

 

反射

Class对象:

方式一:使用Class.forName(“包名+类名”)来获取指定类的Class对象;

方式二:通过调用一个对象的getClass方法来获取该对象所在类的Class对象;

方式三:通过“类名.class”来获取一个类的Class对象;

 

Constructor对象

Constructor代表构造器。

  • Class对象提供的方法:

Constructor[] getConstructors():获取一个类的所有公共构造函数;

Constructor getConstructors(Class... parameterType):根据参数获取指定公共的构造函数;
  • Constructor对象提供的方法:

T newInstance(Object... args):创建实例,实例的类型就是Constructor的泛型类型;

 

Field对象

ield代表类的成员属性。

  • 获取Field的方法:

Field[] getFields():获取一个类或接口中所有公共的字段;

Field getField(String name):获取一个类或接口指定的公共字段;

Field[] getDeclaredFields():获取一个类或接口所有声明所有字段;

Field getDeclaredField(String name):获取一个类或接口所声明的指定字段;
  • 操作Field的方法:

void set(Object obj, Object value):设置Field的值。如果该Field是非静态的成员属性,那么第一个参数就是该成员属性所在对象。如果该Field是静态的,那么第一个参数为null;第二参数要设置字段的值。

void setAccessible(boolean flag):设置是否取消java的语法检查。true代表取消,false代表不取消;(暴力反射)

Object get(Object obj):获取该Field对象所代表的值。如果该Field是非静态的,那么第一个参数就是该Field所在对象。如果是静态的,第一个参数可以为null;

Method对象

Object invoke(Object obj, Object... parameterType):调用方法,如果该方法是非静态的,那么第一个参数就是该方法的调用者对象;如果该方法是静态的,那么第一个参数可以为null;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值