java复习总结3

异常简介

阻止当前方法或作用域,称之为异常

Throwable : Error Exception

Exception 分为检查异常和非检查异常

非检查异常有空指针异常,数组下标越界异常,类型转换异常,算术异常等

检查异常:文件异常,SQL异常

处理异常

try-catch以及try-catch-finally

java中的异常抛出

throw - 将产生的异常抛出

throws - 声明将要抛出何种类型的异常(声明)

自定义异常

class自定义异常类 extends 异常类型{

}

java中的异常类

总结

1 处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理

2 在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常

3 对于不确定的代码,也可以加上try-catch,处理潜在的异常

4 尽量去处理异常,切记只是简单的调用printStackTrace()去打印输出

5 具体如何处理异常,要根据不同的业务需求和异常类型去决定

6 尽量添加finally语句块去释放占用的资源

“==” 和 equals() 有什么区别?

==: 判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象

equals(): 比较存储在两个字符串对象中的内容是否一致

包装类主要提供了两大类方法:

1. 将本类型和其他基本类型进行转换的方法

2. 将字符串和本类型及包装类互相转换的方法

基本类型转换为字符串有三种方法:

1. 使用包装类的 toString() 方法

2. 使用String类的 valueOf() 方法

3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串

Calendar 类

java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();

java中的集合框架

java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象。

集合的作用

在类的内部,对数据进行组织。

简单而快速的搜索大数量的条目

有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素

有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型

集合与数组的对比

数组的长度固定,集合长度可变

数组只能通过下表访问元素,类型固定,而有的集合可以

通过任意类型查找所映射的具体对象

java中的集合框架结构

Collection   Map

Collection(List Queue Set)

Map(Hashmap)

Collection接口、子接口以及实现类

Collection接口

是List、Set和Queue接口的父接口

定义了可用于操作List、Set和Queue的方法-增删改查

List接口及其实现类-ArrayList

List是元素有序并且可以重复的集合,被称为序列

List可以精确的控制每个元素的插入位置,或删除某个位置元素

ArrayList-数组序列,是List的一个重要实现类

ArrayList底层是由数组实现的

泛型

集合中的元素,可以是任意类型的对象(对象的引用)

如果把某个对象放入集合,则会忽略他的类型,而把他当做Object处理

泛型则是规定了某个集合只可以存放特定类型的对象

会在编译期间进行类型检查

可以直接按指定类型获取集合元素

Set接口及其实现类-HashSet

Set是元素无序并且不可以重复的集合,被称为集

HashSet-哈希集,是Set的一个重要实现类

Set是无序的,List是有序的

Set中,添加某个对象,无论添加多少次,最终只会保留一个该对象

还可以添加空的对象

Map和HashMap

Map接口

Map提供了一种映射关系,其中的元素是以键值对(key-value)的

形式存储的,能够实现根据key快速查找value

Map中的键值对以Entry类型的对象实例形式存在

键(key值)不可重复,value值可以

Map支持泛型,

HashMap类

HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现

HashMap中的Entry对象是无序排列的

key值和value值都可以为null,但是一个hashMap只能有一个key值为null的映射

(key值不可重复)

 案例:
       package hpu.edu.cn.Admin;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class MapTest {

	/**
	 * @param args
	 */
	public Map<String, Student> students;
	public MapTest(){
		this.students = new HashMap<String,Student>();
	}
	public void testPut(){
		Scanner console = new Scanner(System.in);
		int i = 0;
		while(i < 3){
			System.out.println("请输入学生ID:");
			String ID = console.next();
			Student st = students.get(ID);
			if(st == null){
				System.out.println("请输入学生姓名:");
				String name = console.next();
				Student newSt = new Student(ID,name);
			    students.put(ID, newSt);
			    System.out.println("成功添加学生:" + students.get(ID).name);
			    i++;
			}else{
				System.out.println("该学生ID已被占用!!");
				continue;
			}

		}
	}
	public void testKeySet(){
		Set<String> keySet = students.keySet();
		System.out.println("总共有:" + students.size() + "个学生!!");

		for (String stuId:keySet) {
			Student st = students.get(stuId);
			if(st != null){
				System.out.println("学生:" + st.name);
			}
		}
	}
	public void testRemove(){
		Scanner console = new Scanner(System.in);
		while(true){
			System.out.println("请输入要删除学生的ID:");
			String ID = console.next();
			Student st = students.get(ID);
			if(st == null){
				System.out.println("该ID不存在!!");
				continue;
			}
			students.remove(ID);
			System.out.println("成功删除学生:" + st.name);
			break;
		}
	}
	/*
	 *
	 * entrySet方法来遍历Map
	 **/
	public void testEntrySet(){
		Set<Entry<String,Student>> entrySet = students.entrySet();
		for(Entry<String,Student> entry:entrySet){
			System.out.println("取得键:" + entry.getKey());
			System.out.println("对应的值为:" + entry.getValue().name);

		}
	}
	public void testModify(){
		System.out.println("请输入要修改的学生ID:");
		Scanner console = new Scanner(System.in);
		while(true){
			String stuID = console.next();
			Student student = students.get(stuID);
			if(student == null){
				System.out.println("该ID不存在!请重新输入!");
				continue;
			}

			System.out.println("当前该学生ID,所对应的学生为:" + student.name);
			System.out.println("请输入新的学生姓名:");
			String name = console.next();
			Student newSt = new Student(stuID,name);
			students.put(stuID,newSt);
			System.out.println("修改成功!!");
			break;
		}
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        MapTest mt = new MapTest();
        mt.testPut();
        mt.testKeySet();
	 mt.testRemove();
        mt.testEntrySet();
	}

}
时间: 2024-09-27 12:07:11

java复习总结3的相关文章

java复习整理之集合

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.ios培训..Net培训</a>.期待与您交流!------ java复习整理之集合: Collection:集合中的最顶层接口,提供了一些操作集合的共性方法添加:boolean add(E e)boolean addAll(Collection<? extends E> c)删除:void

Java复习第一天---Javascript的基本知识点

1.HelloWord: 2.基础语法: 3.嵌入HTML 借助window.onload事件在整个窗体载入完毕之后运行程序代码 4.事件驱动: 5.DOM操作 5.1 查找元素节点 5.1.1 依据id值 方法:document.getElementById(id值) 获取到的是一个元素节点 var bj = document.getElementById("bj"); alert(getText(bj)); 5.1.2 依据标签名 方法:document.getElementsBy

Java复习第四天---IO流

File类测试 //根据指定的文件名和路径创建File对象 File file = new File("myFile.txt"); //file.exists();检测文件是否存在 boolean exists = file.exists(); System.out.println(exists); //按照file对象指定的路径和文件名创建一个新的文件 file.createNewFile(); exists = file.exists(); System.out.println(e

Java复习第二天---JavaSE基础

[1]以下关于 JVM 的叙述,哪些项正确? A.JVM 运行于操作系统之上,它依赖于操作系统 B.JVM 运行于操作系统之上,它与操作系统无关 C.JVM 支持 Java 程序运行,它能够直接运行 Java 字节码文件 D.JVM 支持 Java 程序运行,它能够直接运行 Java 源代码文件 扩展名为.java的是源代码文件(文本文件):开发时编写代码的文件 扩展名为.class的是字节码文件(二进制):系统运行时执行的文件 [2]下列选项中正确的表达式是: A.byte b = 128; 

java 复习001

java 复习001 比较随意的记录下我的java复习笔记 ArrayList 内存扩展方法 分配一片更大的内存空间,复制原有的数据到新的内存中,让引用指向新的内存地址 ArrayList在内存不够时默认是扩展为1.5倍 + 1个 ArrayList,LinkedList,Vector 区别 Vector内存扩展和ArrayList一样,不过Vector是默认扩展为2倍 Vector支持线程的同步,因此牺牲了访问性能 ArrayList,Vector都是使用数组实现,插入删除效率低 Linked

java复习汇总之面试篇

这些个人感觉都是基础,希望看的园友不要喷. 1.什么是servlet线程安全,如何解决? 2.spring事物管理,在项目中你是怎么管理事物的? 3.java中的有几种线程? 4.java有几种锁? 5.怎么理解java中的多态,项目中何时用到抽象类? 6.如何处理js,sql注入? 7.struts2拦截器的原理? 8.如何理解spring AOP? 11.java中常用的集合,在项目中用到时,有什么需要注意的? 12.如果优化项目中sql,为什么要那样优化? 13.java性能优化? 14.

Java复习第三天---集合框架的相关知识

集合框架总览: Collection 接口常用方法 //1.add()向集合中添加数据 c.add(apple01); c.add(apple02); c.add(apple03); c.add(apple04); c.add(apple05); //2.isEmepty()检测当前集合是否为空 boolean empty = c.isEmpty(); System.out.println("is empty:"+empty); //3.size()返回当前集合的长度 int size

Int与Integer(Java复习一)

最近一直在复习java,写一下其中自己的疑惑点.第一个讲Int和Integer. 首先,应该明确的式Int是数据类型,Integer是封装Int的一个类. 八大数据类型,java都有封装.boolean->Boolean;char->Character;byte->Byte;short->Short;int->Integer;long->Long;float->Float;double->Double; 后者就成了类. 区别一: 在比较两个数大小的时候两者就

java复习预科知识-Markdown学习

java复习预科知识-Markdown学习 写在前面 1.最近深感在家学习效率低下,java基础不太稳固,因此趁放假在家,也无法走动,闲来无事,借写博客进行复习.2月份争取一天一更,每篇博客仅探讨一个小的技术点. 2.Markdown语法并不属于java语法,但是现在几乎所有的博客网站都支持该语法,关于该语法的介绍就不做介绍了,本套系列博客都是基于该语法进行编写,并发布在博客园网站内.百度上搜孤傲的咸鱼,欢迎各位读者关注. 1."标题"语法 # 表示一级标题 => h1标签 ##

Java复习——枚举与注解

枚举 枚举就是让某些变量的取值只能是若干固定值中的一个,否则编译器就会报错,枚举可以让编译器在编译阶段就控制程序的值,这一点是普通变量无法实现的.枚举是作为一种特殊的类存在的,使用的是enum关键字修饰 枚举常量 枚举常量默认都是使用static final修饰的,所以语法建议使用大写,一个枚举类在第一次被实例化的时候,这些常量就会被创建,这些常量都是枚举类子类的对象 public enum WeekDay{ //每一个枚举的元素(枚举常量)就是一个枚举类子类的对象,是使用static fina