Java自学笔记 — 首篇博文

本文介绍了作者初次搭建博客遇到的网页篡改问题,以及学习Java异常处理的经历。通过示例代码展示了如何处理用户输入非整数的情况,并强调了try-catch-finally语句中finally块的执行特性。

Java自学笔记 — 首篇博文

前言

原本打算写博客记录下,但是由于懒惰鸽了好久,自身表达能力也十分缺欠。主要由于最近搭建个人博客遇到的事,决心开始记录点什么。

博客趣事

作为小白一名。搭建博客当然采用Hexo+Github啦,搭建过程还算顺利,遇到问题也都解决了。当自己的博客部署到GitHub时,甭提多开心了,虽说根本没什么技术含量。第二步就开始找Hexo主题,直接百度,打开某条结果,突然出现的界面让我心惊胆颤:

在这里插入图片描述
看到这界面着实让我吓了一大跳,最主要的是当时确实还挂着梯(Github浏览下载太慢),连忙关掉界面,关掉代理。后来真的开始慌了,查了好久,只有类似ip警告之类。一种说法是网站为了防止恶意攻击而采取的保护措施,也有帖子说网警根本没功夫管着闲事。一两个小时后,冷静下来。找到那条历史记录,在安卓模拟器里打开,显示一样的界面。心里想着模拟器和电脑的IP应该不一样,就开始怀疑网页本身的问题。破罐子破摔,下面有个继续访问的按钮,点了进去,如下:
在这里插入图片描述
附上网址,枫糖有兴趣可以看看。简单来说就是搭建个人博客系统时用开源的valine评论系统,而该系统本身有漏洞,被人注入,重写了页面。
至此松了一口气,不用担心警察叔叔找上门了。最后附上被攻击的地址yigile主题,打开时切记冷静!冷静!

Java笔记—异常

趣事写完了,进入正题。看了很多Java学习路径规划,最终选择韩顺平老师的Java基础课程,第一部分看完了,但是代码量很少,也紧着着开始第二部分。对应学习笔记的第12章异常。
异常分为编译时异常和运行时异常。类Throwable快捷键Ctrl+B追入源码,右键Diagrams显示类图,添加常用子类。类图如下所示:
在这里插入图片描述
其中编译异常必须处理,用try-catchthrow抛出异常,而运行时异常系统会主动处理,向调用该方法的语句块抛出。

课后题目

利用异常使用户输入一个整数,若不是整数则给出提示信息,直到输入整数。
个人程序

package com.hz.exception_;

import java.util.Scanner;

/**
 * @author Lspero
 * @version 1.0
 */
public class ExceptionExercise {
    public static void main(String[] args) {
        int key = 0;
        int a = 0;
        do{
            try {
                Scanner scanner = new Scanner(System.in);
                a = scanner.nextInt();
                key = 1;
            } catch (Exception e) {
                System.out.println("请输入一个整数:");
            }
        }while (key == 0);
        System.out.println(a);
    }
}

老师讲解

package com.hz.exception_;

import java.util.Scanner;

/**
 * @author Lspero
 * @version 1.0
 */
public class ExceptionExercise02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = 0;
        while (true){
            System.out.println("请输入一个整数");
            try {
                num = Integer.parseInt(scanner.next());
                break;
            } catch (NumberFormatException e) {
                System.out.println("你输入的不是整数");
            }
        }
        System.out.println("你输入的值是 " + num);
    }
}

自己设计时没想到break语句和死循环的组合,而是使用了一个关键字来控制程序的执行。

细节

try-catch-finall语句中不管是否发生异常finall语句块必须执行,在方法中就算异常处理语句中含有return语句也不会立刻返回,详见下面代码:

package com.hz.exception_;

/**
 * @author Lspero
 * @version 1.0
 */
public class TryCatch02 {
    public static int method(){
        int i = 1;
        try {
            i++;//i=2
            String[] str = new String[3];
            if(str[0].equals("tom")){//空指针异常,跳到第21行捕获
                System.out.println(str[0]);
            }else {
                str[0] = "jack";
            }
            return 1;
        } catch (ArrayIndexOutOfBoundsException e1) {
            return 2;
        } catch (NullPointerException e2){
            return ++i; //i=3,由于finally代码块必须执行,因此先不会返回,将i存入临时变量temp
        } finally {
            ++i;//i=4
            //输出i=4,由于此处没有返回语句,因此要执行捕获异常时的return语句,返回临时变量temp,而不是此刻的i=4
            System.out.println("i = " + i);
        }
    }
    public static void main(String[] args) {
        System.out.println(method());//输出返回的值即临时变量3
    }
}

总结

第一篇总算写完了,尽可能两天一篇吧。很多东西刚起步,写的不好,希望大佬可以指正。实际内容很少,下次应该多总结少些废话。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值