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():休眠,不会释放对象的锁


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章