20145310 《Java程序设计》第5周学习总结

教材学习内容总结

本周主要进行第八章和第九章的学习。

java中所有的错误都会打包为对象,可以try catch代表错误的对象后做一些处理。运用try、catch,还可以在捕捉处理错误之后,尝试恢复程序正常执行流程。

import java.util.*;

public class AVE {

    public static void main(String[] args) {
Scanner console =new Scanner (System.in);
double sum=0;
int count =0;
while(true)
{
try{ int number=console.nextInt();
if(number==0)
{
break;
}
sum+=number;
count++;
}catch (InputMismatchException ex){
System.out.printf("略过非整数输入:%s%n",console.next());
}
}
System.out.printf("AVE %.2f%n",sum/count);
} }

程序运行结果:

如果父类异常对象在子类异常前被捕捉,则catch子类异常对象的区块将永远不会被执行。误会被包装为对象,这些对象是可抛出的,因此设计错误对象都继承自java.lang.Throwable类。

在异常发生时,可使用try 、catch处理当时可进行的异常处理,在catch区块进行完部分错误处理之后,可以使用throw(注意不是throws)将异常再抛出。

import java.io.*;
import java.util.Scanner;
public class FileUtil {
public static String readFile(String name) throws FileNotFoundException{
StringBuilder text = new StringBuilder();
try{
Scanner console = new Scanner (new FileInputStream(name));
while(console.hasNext()){
text.append(console.nextLine())
.append('\n');
}
}catch(FileNotFoundException ex){
ex.printStackTrace();
throw ex;
}
return text.toString();
}
}

只有java是采用受检异常的语言。

若收集的对象经常会有变动索引的情况,也许考虑链接方式操作的List会比较好,像是随时会有客户端登录或注销的客户端List,使用LinkedList会有比较好的效率。

在收集过程中若有相同对象,则不再重复收集,如果有这类需求,可以使用Set接口的操作对象。

public class StackTraceDemo1
{
public static void main(String[] args)
{
try
{
c();
}
catch (NullPointerException ex)
{
ex.printStackTrace();
}
} static void c()
{
b();
} static void b()
{
a();
} static String a()
{
String text = null;
return text.toUpperCase();
}
}

查看堆栈追踪最简单的方法,就是直接调用异常对象的 printStackTrace()。

在使用 throw 重抛异常时,异常的追踪堆栈起点,仍是异常的发生根源,而不是重抛异常的地方,


public class StackTraceDemo2 {
public static void main(String[] args) {
try{
c();
}catch(NullPointerException ex){
ex.printStackTrace();
}
}
static void c(){
try{
b();
}catch(NullPointerException ex) {
ex.printStackTrace();
throw ex;
}
}
static void b(){
a();
}
static String a(){
String text = null;
return text.toUpperCase();
}
}

无论try区块中有无异常,若撰写finally区块,则finally区块一定会被执行

public class FinallyDemo {
public static void main(String[] args) {
System.out.println(test(true));
}
static int test(boolean flag){
try{
if(flag){
return 1;
}
}finally{
System.out.println("finally...");
}
}return 0;
}

收集对象的共同行为定义在Collection中。

java.util.ArrayDeque操作了Deque接口,可以使用ArrayDeque来操作容量有限的堆栈。

如果对象有操作Queue,并打算以队列方式使用,且队列长度受限,通常建议使用offer()、poll()与peek()等方法。

import java.util.*;
interface Request{
void execute();
}
public class RequestQueue {
public static void main(String[] args) {
Queue requests = new LinkedList();
offerRequestTo(requests);
process(requests);
}
static void offerRequestTo(Queue requests){
for(int i=1;i<6;i++){
Request request = new Request(){
public void execute(){
System.out.printf("处理数据%f%n",Math.random());
}
};
requests.offer(request);
}
}
static void process(Queue requests){
while(requests.peek()!=null){
Request rquest = (Request) request.poll();
request.execute();
}
}
}

其他(感悟、思考等,可选)

学习的东西越来越难了,光敲代码是没有用的,还是要多思考,多练习,否则会学得很不扎实,比如上周考试的操作题就不会。所以以后还需要在java上投入更多的时间练习。

代码托管截图:

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 100/100 2/2 10/10 初步认识java
第二周 150/250 1/3 12/22 掌握Java基础语法
第三周 537/787 2/4 20/42 认识对象,对象封装
第四周 500/1287 1/5 20/62 继承与多态,接口与多态
第五周 300/1587 1/6 20/82

参考资料

20145310 《Java程序设计》第5周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. Android XListView下拉刷新、上拉载入更多

    source code: https://github.com/Maxwin-z/XListView-Android 提供了两个接口: a) IXListViewListener:  触发下拉刷新.上 ...

  2. Exchange Management Console Error

    Exchange 2010 error solved : The WS-Management service cannot process the request. The system load q ...

  3. A Secure Cookie Protocol 安全cookie协议 配置服务器Cookie

    Title http://www.cse.msu.edu/~alexliu/publications/Cookie/cookie.pdf AbstractCookies are the primary ...

  4. GITLAB服务基础

    1.GITLAB介绍 一个基于GIT的源码托管解决方案基于Ruby on rails开发集成了nginx postgreSQL redis sidekiq等组件 2. 资源 官网:https://ab ...

  5. openresty跑定时任务配置、ngx.timer.every接口使用

    openresty的定时任务是要跟worker绑定的.如果不绑定特定的worker,那么所有启动的woker都会去执行定时任务. 一般情况下默认绑定worker_id=0的,这样在nginx整个进程里 ...

  6. Linux NAPI处理流程分析

    2017-05-10 今天重点对linux网络数据包的处理做下分析,但是并不关系到上层协议,仅仅到链路层. 之前转载过一篇文章,对NAPI做了比较详尽的分析,本文结合Linux内核源代码,对当前网络数 ...

  7. 华为交换机VRP用户界面配置及Telnet登录实验

    user privilege level level 设置使用以上用户界面登录后的用户级别 5 acl acl-number { inbound | outbound } (可选)在用户界面上应用AC ...

  8. 单舵轮(叉车)AGV里程计数据解算

    单舵轮(叉车)AGV里程计数据解算 2016-07 单舵轮AGV,一般包含一个驱动轮和两个从动轮,驱动轮是同时具备行走和转向两个功能的舵轮,因此,单舵轮AGV的运动学自由度为2个.舵轮线速度V1,舵轮 ...

  9. 转载SQL_trace 和10046使用

    SQL_TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,SQL_TRACE是非常常用的方法.本文就SQL_TRACE的使用作简单探讨,并 ...

  10. python全栈开发从入门到放弃之socket并发编程多进程

    1.1 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程 ...