Java 面试题个人总结

一.单例开发模式

1.构造器私有化

2.对象只能通过方法中获取

例子:

饿汉模式:

不管你什么情况,我都先把对象new出来

public class Product {
	private static Product product = new Product();
	
	private Product() {
		
	};
	
	public static Product getProduct() {
		return product;
	}
}

懒汉模式:

只有需要的时候,我才想到要new个新对象

public class Product {
	private static Product product;
	
	private Product() {
		
	};
	
	public static Product getProduct() {
		if(product == null) {
			synchronized (Product.class) {   //双检锁,解决高并发下,单例模式的线程安全
				if(product == null) {
					product = new Product();
				}
			}
		}
		return product;
	}
}

二.static 静态代码块

static代码块,完全可以看做一个没有参数,没有名称,没有返回值的静态方法.它会在类加载时自动调用,并在main方法前面调用。

静态代码块与静态方法区别:

静态代码块:自动调用

静态代码方法:被动调用

三.java正则表达式

在java.util.regex.*包下,主要由Pattern和Mathcher这俩个类组成

Pattern:如下官方文档的例子,很容易可以得知,主要调用类里面的compile的方法,传入正则的规则

Mathcher:这就是真正影响搜索内容的类

官方实例:

 Pattern p = Pattern.compile("a*b");
 Matcher m = p.matcher("aaaaab");
 boolean b = m.matches();

注意:如果输入的内容为空,将会报空指针异常

java中不只只Pattern类支持regex正则,

String类中的部分方法也同样支持正则,如mathes(),splite(),replaceAll(),repalceFirst()

四.多线程 synchronized关键字,wait(),notify(),sleep()

Thread线程

synchronized:  当多个线程同时使用一个对象的时候,这是时候需要加上synchonized(同步锁);

wait(): 调用后会释放掉对象的锁,之后线程需要通过notify()唤醒

sleep():休眠,不会释放对象的锁

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值