Java基础知识点复习

  • Post author:
  • Post category:java




Java知识点复习



复习点1:打印圣诞树(多重for循环)
public class Chirstmas {

	public static void main(String[] args) {
		int h = 5;//定义层数
		for(int i=1;i<=h;i++){//控制层数
			for(int j=0;j<h-i;j++){//控制空格数 = 总层数 - 当前层数i
				System.out.print(" ");//打印空格
			}
			for(int k=0;k<i*2-1;k++){//控制*数 = 当前层数i*2-1
				System.out.print("*");//打印*
			}
			System.out.println();//打印一层后换行
		}
	}

}


复习点2:

面向过程(POP)-Process Oriented Programming

面向对象(OOP)-Object Oriented Programming



复习点3:


静态属性



静态方法

随着类的加载

保存在方法区

,而

实例

随着对象的建立

存在于堆内存



复习点4:Instanceof

Instanceof关键字用来判断一个对象是否是指定类所创建的实例

public class Test1 {

	public static void main(String[] args) {
		Person person = new Person();
		Person man = new Man();
		Person woman = new Woman();
		Test1.meeting(person,man,woman);
	}
	
	public static void meeting(Person...persons ){
		for(int i=0;i<persons.length;i++){
			persons[i].eat();
			persons[i].toilet();
			if(persons[i] instanceof Man){
				((Man)persons[i]).smoke();
			}else if(persons[i] instanceof Woman){
				((Woman)persons[i]).makeUp();
			}
		
		}
	}

}



复习点5:单例模式
public class Dog_1 {
	private static Dog_1 dog = null;//懒汉式
	private Dog_1(){
		
	}
	public static Dog_1 getDog(){
		if(dog==null){
			 dog = new Dog_1();
		}
		return dog = new Dog_1();
		
	}

}



public class Dog_2 {
	private static final Dog_2 dog = new Dog_2();//饿汉式
	private Dog_2(){
		
	}
	public static Dog_2 getDog(){
		return dog;
	}

}





复习点6:

接口中所有属性,默认修饰符是public static final

接口中所有方法,默认修饰符是public abstract



复习点7:匿名内部类

基于接口实现匿名内部类

public interface Product {
	public double getPrice();
	public String getName();

}



public class Demo {

	public static void main(String[] args) {
		Demo demo = new Demo();
		demo.printProduct(new Product(){
			
			@Override
			public double getPrice() {
				double price = 2.5;
				return price;
			}

			@Override
			public String getName() {
				String name = "water";
				return name;
			}
		});

	}
	
	public void printProduct(Product p){
		System.out.println(p.getName());
		System.out.println(p.getPrice());
	}

	

}

基于类实现匿名内部类

public abstract class Person {
	public abstract void eat();
	public abstract void sleep();

}



public class Test1 {

	public static void main(String[] args) {
		Test1 test = new Test1();
		test.printPerson(new Person(){

			@Override
			public void eat() {
				System.out.println("吃饭");
				
			}

			@Override
			public void sleep() {
				System.out.println("睡觉");
			}
			
		});
		

	}
	
	public void printPerson(Person p){
		p.eat();
		p.sleep();
	}

}



复习点8:日期和时间
public class Test1 {

	public static void main(String[] args) throws ParseException {
		Date date = new Date();
		Locale locale = Locale.getDefault();
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss",locale);
		String time = dateFormat.format(date);
		System.out.println(time);
		
		String timeString = "2008-02-23  12:23:30";
		SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss",locale);
		Date parse = dateFormat2.parse(timeString);
		long time2 = parse.getTime();
		System.out.println(time2);

	}

}

复习点9:枚举

public class Test2 {
	
	enum  Season{
		SPRING,SUMMER,AUTUMN,WINTER;
	}

	public static void main(String[] args) {
			Season s = Season.SPRING;
			switch(s){
			case SPRING:
				System.out.println("春天");
				break;
			case SUMMER:
				System.out.println("夏天");
				break;
			case AUTUMN:
				System.out.println("秋天");
				break;
			case WINTER:
				System.out.println("冬天");
				break;
			
			}

	}

}



复习点9:二分法
public class Test04 {

	public static void main(String[] args) {
		int[] arr = new int[]{1,3,2,4,5,7,6};
		Arrays.sort(arr);//排序
		for(int i:arr){
			System.out.print(i+" ");
		}
		System.out.println();
		
		int choose = Test04.choose(arr, 5);
		System.out.println(choose);
		

	}
	
	public  static  int choose(int[] arr ,int value ){
		int min = 0;
		int max = arr.length-1;
		int mid = (min + max)/2;
		while(arr[mid]!=value){
			if(max>min){
				if(value<arr[mid]){
					max = mid - 1;
					mid = (max + min)/2;
				}else if(value>arr[mid]){
					min = mid +1;
					mid = (max + min)/2;
				}
			}else{
				return -1;
			}
			
		}
		return mid;
	}

}


复习点10:递归算法

递归算法求斐波拉及第N项值

public class Test05 {
//0 1 1 2 3 5 8 13 21……
	public static void main(String[] args) {
		int fib = Test05.fib(8);
		System.out.println(fib);

	}
	
	public static int fib(int n){
		if(n>0){
			if(n==1){
				return 0;
			}
			if(n==2){
				return 1;
			}
			return fib(n-2)+fib(n-1);
		}else{
			return -1;
		}
	}

}


复习点11:集合应用场景
Collection 这是一个纯粹的接口,用于引用List,Set的实现对象。
List 如果需要保留存储顺序,并且允许保留重复元素,使用List 接口的实现类。

如果查询较多,那么使用ArrayList。

如果存取较多,那么使用LinkedList。

如果需要线程安全,那么使用vector.
Set 如果不需要保留存储顺序,并且需要去掉重复元素,使用List 接口的实现类。

如果我们需要将元素排序,那么使用TreeSet.

如果我们不需要排序,使用HashSet, HashSet比TreeSet效率高<br / > 如果我们不需要保留存储顺序,又要过滤重复元素,那么使用 LinkedHashSet.
Map 如果保留key/value形式数据,使用Map接口的实现类

如果需要将元素排序,使用TreeSet。

如果我们不需要排序,使用HashSet,HashSet比TreeSet效率高。


复习点12:HashMap两种遍历方式
public class Test02 {

	public static void main(String[] args) {
		HashMap<String, String> hashMap = new HashMap<>();
		hashMap.put("云南", "昆明");
		hashMap.put("四川", "成都");
		hashMap.put("贵州", "贵阳");
		hashMap.put("广西", "南宁");
		//使用KeySet
	    //将key转成Set集合,通过迭代器取出Set集合中的每一个key,再通过key获取相应的value
		Set<String> keySet = hashMap.keySet();
		Iterator<String> iterator = keySet.iterator();
		while(iterator.hasNext()){
			String key = iterator.next();
			String value = hashMap.get(key);
			System.out.println("key="+key+"  value"+value);
		}
		//这种方式一般不使用。
		//将key.value转成Set集合(entrySet()),通过迭代器取出Set集合中的每一个entrySet.
		
		Set<Entry<String,String>> entrySet = hashMap.entrySet();
		Iterator<Entry<String, String>> iterator2 = entrySet.iterator();
		while(iterator2.hasNext()){
			Entry<String, String> entry = iterator2.next();
			String key = entry.getKey();
			String value = entry.getValue();
			System.out.println("key="+key+"  value"+value);
		}
		
	

	}

}



版权声明:本文为weixin_48291026原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。