栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-10-26

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-26

Java自学笔记 — 首篇博文 前言

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

博客趣事

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


看到这界面着实让我吓了一大跳,最主要的是当时确实还挂着梯(Github浏览下载太慢),连忙关掉界面,关掉代理。后来真的开始慌了,查了好久,只有类似ip警告之类。一种说法是网站为了防止恶意攻击而采取的保护措施,也有帖子说网警根本没功夫管着闲事。一两个小时后,冷静下来。找到那条历史记录,在安卓模拟器里打开,显示一样的界面。心里想着模拟器和电脑的IP应该不一样,就开始怀疑网页本身的问题。破罐子破摔,下面有个继续访问的按钮,点了进去,如下:

附上网址,枫糖有兴趣可以看看。简单来说就是搭建个人博客系统时用开源的valine评论系统,而该系统本身有漏洞,被人注入,重写了页面。
至此松了一口气,不用担心警察叔叔找上门了。最后附上被攻击的地址yigile主题,打开时切记冷静!冷静!

Java笔记—异常

趣事写完了,进入正题。看了很多Java学习路径规划,最终选择韩顺平老师的Java基础课程,第一部分看完了,但是代码量很少,也紧着着开始第二部分。对应学习笔记的第12章异常。
异常分为编译时异常和运行时异常。类Throwable快捷键Ctrl+B追入源码,右键Diagrams显示类图,添加常用子类。类图如下所示:

其中编译异常必须处理,用try-catch或throw抛出异常,而运行时异常系统会主动处理,向调用该方法的语句块抛出。

课后题目

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

package com.hz.exception_;

import java.util.Scanner;


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;


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_;


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
    }
}
总结

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/353541.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号