Java基础知识梳理

好久没写博客,今天看到草稿箱里一篇躺了快一年的文章,删了又可惜,还是发出来吧

Java基础语法

1、Java语言跨平台实现:依赖于JVM

J2SE J2ME J2EE
img

2、数据类型
Java数据类型
3、Random类
Random
4、Java内存分配图解
Java中的内存分配图解
5、命名规则

img

面向对象基础

1、类的定义与使用

定义
code

使用
code
2、对象内存图

一个对象的内存图
code
方法共用的内存图

code
两个引用指向同一个对象
code
3、成员变量和局部变量的区别

img
4、private关键字封装成员变量,get,set方法访问。(get,set方法可自动生成)
5、this关键字的使用:当局部变量隐藏成员变量
code

常用API

1、String
1.1
img
img
1.2 String类的用法
判断
img
获取
img
转换
img
其它
img
2、StringBuilder


String拼接浪费空间,StringBuilder可以直接追加

StringBuilder类的常用方法:append reverse
code

注意StringBuilder类与String类是不同的类,需要toString方法转换
code
3、ArrayList

集合类、泛型
code
4、FileWriter && FileReader
IO流

FileWriter fw = new FileWriter(''d:\\a.txt'');
fw.write("hello");
fw.flush();
fw.close();

5、BufferedWriter && BufferedReader
IO流
code
在这里插入图片描述
BufferedWriter类newline()方法:
在这里插入图片描述
BufferedReader类readline()方法

面向对象

static

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码块

在这里插入图片描述
1.局部代码块
在这里插入图片描述
2.构造代码块
在这里插入图片描述
3.静态代码块
在这里插入图片描述

继承

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

super && this

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

抽象

抽象方法必须在抽象类中,抽象方法一般出现在子类较多,且需要根据具体子类重写方法的时候。
在这里插入图片描述

接口

在这里插入图片描述
在这里插入图片描述
关系
在这里插入图片描述
接口的优点
在这里插入图片描述
接口与抽象类的区别
在这里插入图片描述
案例分析
在这里插入图片描述

匿名对象

在这里插入图片描述

final

在这里插入图片描述

多态

在这里插入图片描述
向上转型和向下转型
在这里插入图片描述

权限修饰符

常见规则

在这里插入图片描述

内部类

正则表达式

Collection接口(jdk8中接口中的方法可以有方法体,不能被实例化)

add()
clear()
contains()
isEmpty()
remove()
size()
toArray()
public class CollectionDemo2 {
	public static void main(String[] args) {		
		//创建集合对象
		//Collection c = new Collection();//Collection是接口,不能实例化
		Collection c = new ArrayList();//多态,父类引用指向子类对象  
		
		//boolean add(E e)  
		System.out.println(c.add("hello"));//永远可以添加成功,因为ArrayList他允许重复
		System.out.println(c.add("world"));
		
		//void clear():清空集合
		//c.clear();
		
		//boolean contains(Object o)  :判断集合中是否包含指定元素
		//System.out.println(c.contains("java"));
		
		//boolean isEmpty() :是否为空
		//System.out.println(c.isEmpty());
		
		
		//boolean remove(Object o) :删除元素
		//System.out.println(c.remove("java"));
		
		//int size() :返回集合中的元素个数
		//System.out.println(c.size());
		
		//Object[] toArray()  :将集合转换成一个Object类型的数组
		Object[] objs = c.toArray();
		for (int i = 0; i < objs.length; i++) {
			System.out.println(objs[i]);
		}
		
		
		
		System.out.println(c);
	}
}

迭代器 Iterator

/*
 * 集合的遍历方式:
 * 		1.toArray(),可以把集合转换成数组,然后遍历数组即可
 * 		2.iterator(),可以返回一个迭代器对象,我们可以通过迭代器对象来迭代集合
 * 
 * Iterator:可以用于遍历集合
 * 	E next()  :返回下一个元素
 *  boolean hasNext()  :判断是否有元素可以获取
 * 
 *  注意:Exception in thread "main" java.util.NoSuchElementException
 *  	使用next方法获取下一个元素,如果没有元素可以获取,则出现NoSuchElementException
	
 */
public class IteratorDemo {
	public static void main(String[] args) {
		//method();
		//创建集合对象
		Collection c = new ArrayList();
		//添加元素
		c.add("hello");
		c.add("world");
		c.add("java");
		
		//获取迭代器对象
		Iterator it = c.iterator();
		
		//Object next()  :返回下一个元素
		//boolean hasNext()  :判断是否有元素可以获取
				
		while(it.hasNext()) {
			System.out.println(it.next());
		}
	}



//toArray方式遍历
	private static void method() {
		//创建集合对象
		Collection c = new ArrayList();
		//添加元素
		c.add("hello");
		c.add("world");
		c.add("java");
		//获取数组
		Object[] objs = c.toArray();
		//遍历数组
		for (int i = 0; i < objs.length; i++) {
			System.out.println(objs[i]);
		}
	}

并发修改异常

/*
 * 需求:判断集合中是否包含元素java,如果有则添加元素android
 * Exception in thread "main" java.util.ConcurrentModificationException:并发修改异常
 * 迭代器是依赖于集合的,相当于集合的一个副本,当迭代器在操作的时候,如果发现和集合不一样,则抛出异常
 * 
 * 解决方案:
 * 		你就别使用迭代器
 * 		在使用迭代器进行遍历的时候使用迭代器来进行修改
 */
public class IteratorDemo3 {
	public static void main(String[] args) {
		//method();
		
		//创建集合对象
		//Collection c = new ArrayList();
		List c = new ArrayList();
		//添加元素
		c.add("hello");
		c.add("world");
		c.add("java");
		
		//我们可以通过遍历来获取集合中的每一个元素,然后进行比较即可
		/*Iterator it = c.iterator();
		while(it.hasNext()) {
			String s = (String)it.next();
			if(s.equals("java")) {
				c.add("android");
			}
		}*/  以上代码块会出现并发修改异常,应该修改迭代器中的内容,让其更新集合
		
		//Iterator没有add方法,我们使用器子接口ListIterator
		ListIterator lit = c.listIterator();
		while(lit.hasNext()) {
			String s = (String)lit.next();
			if(s.equals("java")) {
				lit.add("android");
			}
		}
		
		System.out.println(c);

	}


}

泛型

/*
 * 使用集合存储自定义对象并遍历
 * 由于集合可以存储任意类型的对象,当我们存储了不同类型的对象,就有可能在转换的时候出现类型转换异常,
 * 所以java为了解决这个问题,给我们提供了一种机制,叫做泛型
 * 
 * 泛型:是一种广泛的类型,把明确数据类型的工作提前到了编译时期,借鉴了数组的特点
 * 泛型好处:
 * 			避免了类型转换的问题
 * 			可以减少黄色警告线
 * 			可以简化我们代码的书写
 * 
 * 什么时候可以使用泛型?
 * 		问API,当我们看到<E>,就可以使用泛型了
 * 			
 */
        //创建集合对象
        ArrayList<Student> c = new ArrayList<Student>();
        //遍历集合对象
        Iterator<Student> it = c.iterator();
        while(it.hasNext()) {
        
            Student stu = it.next();
            System.out.println(stu.name);
            
        }

增强for循环

在这里插入图片描述

public static void main(String[] args) {
	    //创建集合对象
		Collection<String> c = new ArrayList<String>();
		
		//添加元素
		c.add("hello");
		c.add("world");
		c.add("java");
		
		//增强for循环;有代码提示foreach
		for (String string : c) {
			c.add("android");//会出错,并发修改异常,只能修改迭代器对象,不能修改集合对象
			System.out.println(string);
		}
	}

List

在这里插入图片描述

/*
 * List:
 * 		有序的(存储和读取的顺序是一致的)
 * 		有整数索引
 * 		允许重复的
 * 
 * List的特有功能:
 * 			void add(int index, E element)  
 * 			E get(int index)  
 * 			E remove(int index)  
 *  		E set(int index, E element)
 *  
 *   增删改查
 *   
 */

接口List实现的常用子类

/*
 * List的常用子类:
 * 		ArrayList
 * 			底层是数组结构,查询快,增删慢
 * 		LinkedList
 * 			底层结构是链表,查询慢,增删快
 * 
 * 如何选择使用不同的集合?
 * 		如果查询多,增删少,则使用ArrayList
 * 		如果查询少,增删多,则使用LinkedList
 * 		如果你不知道使用什么,则使用ArrayList
 * 
 * LinkedList的特有功能:
 * 			void addFirst(E e)  
 * 			void addLast(E e) 
 			E getFirst()  
 			E getLast()  
 			E removeFirst() 
 			E removeLast() 
 * 				
 */


public static void main(String[] args) {
			LinkedList list = new LinkedList();
			list.add("hello");
			list.add("world");
		
			//void addFirst(E e)  :将元素添加到索引为0的位置
 			//void addLast(E e) :将元素添加到索引为size()-1的位置
			list.addFirst("java");
			list.addLast("android");
			
 			//E getFirst()  :获取索引为0的元素
 			//E getLast()  :获取索引为size()-1的元素
			//System.out.println(list.getFirst());
			//System.out.println(list.getLast());
			
 			//E removeFirst() :删除索引为0的元素并返回
 			//E removeLast() :删除索引为size()-1的元素并返回
			System.out.println(list.removeFirst());
			System.out.println(list.removeLast());
			
			
			System.out.println(list);
	}

Set

Collections工具类

试题:Collection和Collections有什么区别?

  •  Collection是集合体系的最顶层,包含了集合体系的共性
    
  •  Collections是一个工具类,方法都是用于操作Collection
    
static int  binarySearch(List list, Object key) 使用二分查找法查找指定元素在指定列表的索引位置

static void copy(List dest, List src) :是把源列表中的数据覆盖到目标列表

static void fill(List list, Object obj) :使用指定的对象填充指定列表的所有元素

static void reverse(List list)  :反转

static void shuffle(List list): 随机置换

static void  sort(List<T> list) :按照列表中元素的自然顺序进行排序

static void swap(List list, int i, int j) :将指定列表中的两个索引进行位置互换

Map

/*
 * 	Map的常用功能:
 * 		映射功能:
 * 			 	V put(K key, V value) 
 * 		获取功能:
 * 				V get(Object key) 
 * 				int size() 
 * 		判断功能:
 * 				boolean containsKey(Object key) 
 				boolean containsValue(Object value) 
 				boolean isEmpty() 
 
 * 		删除功能:
 * 				void clear()  
 * 				V remove(Object key)  
 * 
 * 		遍历功能:
 * 				Set<Map.Entry<K,V>> entrySet() 
 * 
 * 
 * 			Set<K> keySet() 
 * 			Collection<V> values()   
 * 
 * 	public static void main(String[] args) {
		//创建Map对象
		Map<String,String> map = new HashMap<String,String>();
		//添加映射关系
		map.put("ITCAST001", "张三");
		map.put("ITCAST002", "李四");
		map.put("ITCAST005", "李四");
		
		//Set<K> keySet() : 以Set的形式获返回所有的key
		Set<String> keys = map.keySet();
		for (String key : keys) {
			System.out.println(key);
		}
		System.out.println("-----------");
		
		//Collection<V> values() :
		Collection<String> values = map.values();
		for (String value : values) {
			System.out.println(value);
		}
		
		
	}
 
 * 			
 
 */
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值