异常

  1. System.exit(非0整数):用来终止程序,可以避免执行finally,如下可以参考

     import java.util.Scanner;​public class one {{System.out.println("ajkdjak");}​public static void main(String[] args ){one o = new one();Scanner input = new Scanner(System.in);int a,b;try{System.out.print("输入第一个数:");a = input.nextInt();System.out.print("输入第二个数:");b = input.nextInt();System.out.println("他们的商为:" + a / b);}catch(Exception e) {System.exit(1);System.out.println("这是结束点1");e.printStackTrace();}finally{System.out.println(这是结束点3);}System.out.println("这是结束点2");​}}
  2. return关键字在异常处理中的作用

    1. 因为finally是必然会执行的语句,那么如果finally中存在一个返回值,那么不管try块或者catch块中的返回值是什么,它都会被覆盖成return语句中的返回值,然后注意下System,exit的执行优先度大于return,所以执行完exit()以后,其他函数就没用了,下面给你们个例子

       
      import java.util.Scanner;​public class one {{System.out.println("ajkdjak");}​public static void main(String[] args ){one o = new one();System.out.println("返回值为"+test());}public static int test(){int a,b;Scanner input = new Scanner(System.in);System.out.println("this is a test");try{System.out.print("输入第一个数:");a = input.nextInt();System.out.print("输入第二个数:");b = input.nextInt();System.out.println("他们的商为:" + a / b);return 21793;}catch(Exception e) {System.exit(1);System.out.println("这是结束点1");e.printStackTrace();return 1231;}finally{System.out.println("这是结束点3");return -1;}//System.out.println("这是结束点2");}}

      然后注意下上面的写法,最后的32条语句是会报错的,因为你都已经return完了,所以导致32号语句写了根本没用,只是增加了代码量,所以就直接无了,所以你要让最后的语句输出出来,可以参考下面

       
      import java.util.Scanner;​public class one {{System.out.println("ajkdjak");}​public static void main(String[] args ){one o = new one();System.out.println("返回值为"+test());}public static int test(){int a,b;Scanner input = new Scanner(System.in);System.out.println("this is a test");try{System.out.print("输入第一个数:");a = input.nextInt();System.out.print("输入第二个数:");b = input.nextInt();System.out.println("他们的商为:" + a / b);//return 21793;}catch(Exception e) {//System.exit(1);System.out.println("这是结束点1");e.printStackTrace();//return 1231;}finally{System.out.println("这是结束点3");//return -1;}System.out.println("这是结束点2");return 0;}​
  1. 使用throw关键字声明异常类型

    1. 我感觉这个类型最大的作用就是给了使用者自己定义一些错误发生的途径,让一整个自定义函数具备了报错的能力,下面是代码实现

       import java.util.Scanner;​public class Two {​public static void main(String[] args){try{test();}catch (Exception e){e.printStackTrace();}finally {System.out.println("this is a test");}}​public static void test()throws Exception{System.out.println("please input your age ");Scanner scanf= new Scanner(System.in);int age= scanf.nextInt();if(age>18 && age<80){System.out.println("welcome to our hotel");}else {throw new Exception("your age is not allowed ");}}}
       import java.util.Scanner;​public class Two {​public static void main(String[] args){test();}​public static void test(){System.out.println("please input your age ");Scanner scanf= new Scanner(System.in);int age= scanf.nextInt();try{if(age>18 && age<80){System.out.println("welcome to our hotel");}else {throw new Exception("your age is not allowed ");}}catch (Exception e){e.printStackTrace();}finally {System.out.println("this is a test");}}}
    2. 上面是两种实现方式,你喜欢哪一种就用哪一种就好.我对这种机制的理解就是,给了你权限去让你自己定义错误类

  2. 自定义异常类

    1. 这个就是我在上面提到的那个东西,下面给下写法

       public class HotelAgeException extends Exception{public HotelAgeException(){super("your age is not allowed");}}
    2. 这种写法注意写下继承,然后捕获catch还是一样,用父类可以捕获一切,然后这个给你定义出来,我目前就只想可能可以少写些文字这种功能

    3. 注意下当子类重写父类抛出异常的方法时,声明的异常必须是父类方法所声明的异常的同类或者子类.其实感觉就是个权限问题,因为继承了父类以后要么走横向发展 的道路,要么就走纵向深度的道路,只要别走回去的老路,不然就是越权.注意下重写和重载还是有区别的

  3. 异常链简介

    1. 我个人感觉没啥用,其实就是在不使用什么异常的构造方法的时候,指挥显示最后一个异常抛出 的信息.如果以后有用到的话,我在补充,现在属实没想到用法,就简单写下它的构造格式吧

       public class yichanglian {public static void main(String[] args){try{testthree();}catch (Exception e){e.printStackTrace();}finally {​}}public static void testOne()throws Exception{throw new  Exception("this is Exception1");}public static void testTwo()throws Exception{try {testOne();}catch (Exception e){throw new Exception("this is Exception2",e);}}public static void testthree()throws Exception{try {testTwo();}catch (Exception e){Exception e1= new Exception("this is Exception 3");e1.initCause(e);throw e1;}}}
    2. 注意下最后一个throw如果没有,其实也没事,就27行注释掉,这个说白就是自己构造一个异常,但只有抛出时这个异常才有用,这个异常不是程序必须执行的异常

包装类

  1. 手动装箱和自动装箱

     
    package xiangzi;​public class wrap {public static void main(String[] args){int t1=18;Integer t2= t1;//自动Integer t3= new Integer(t1);//手动System.out.println("t1="+t1);System.out.println("t2="+t2);System.out.println("t3="+t3);}}
    1. 注意下装箱的过程中如果用的jetbrain的话,第七行new那里会被划线,没事的,无所谓.

  2. 手动拆箱和自动拆箱

     package xiangzi;​public class wrap {public static void main(String[] args){int t1=18;Integer t2= t1;Integer t3= new Integer(t1);System.out.println("t1="+t1);System.out.println("t2="+t2);System.out.println("t3="+t3);​int t4=t2;int t5=t3.intValue();System.out.println("t4="+t4);System.out.println("t5="+t5);}}
  3. 基本数据类型和字符串之间的转化

     package xiangzi;​public class TestTwo {public static void main(String[] args ){int t1=18;String t2 = Integer.toString(t1);int t3 = Integer.parseInt(t2);int t4 = Integer.valueOf(t2);System.out.println("t2="+t2);System.out.println("t3="+t3);System.out.println("t4="+t4);}}
    1. 注意下,这里用的都是Integer这个类的静态方法.

    2. 第一种将字符串转变为包装类是直接调用导致的,第二种是先将字符串转化为包装类然后在通过自动拆箱完成的数据转化

  4. 需要知道的一些知识

    1. 包装类默认初始值不是0而是null

其他

  1. 我在实现那个java异常机制的时候,才切实体会到,在一个类中静态方法只能调用静态方法.

  2. 重载: 发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。

  3. 重写: 发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类方法访问修饰符为private则子类就不能重写该方法。

java学习笔记2022.1.13相关推荐

  1. java学习笔记 2022.2.11

    2022.2.11 on java 8 摘录(反射) 加载.这是由类加载器执行的.该步骤会先找到字节码(通常在类路径中的磁盘上,但也不一定),然后从这些字节码中创建一个Class对象. 链接.链接阶段 ...

  2. java学习笔记2022.1.11

    因为我提前的傻逼行为,导致1.11的笔记基本全没了,没保存的泪流满面,然后缺失的是方法内部类还有匿名内部类,有时间的话会补完,没时间就算了 首先谈方法内部类 public class D {publi ...

  3. java学习笔记2022.2.11

    on java 8 摘录(反射) 面向对象编程的一个基本目标就是,让编写的代码只操纵基类(本例中为Shape)的引用 Shape接口中的方法draw()是可以动态绑定的,因此客户程序员可以通过泛化的S ...

  4. java 学习笔记2022.1.26

    排序 Comparator接口 有关于Comparator接口,这个接口一般是作为参数放在排序方法里的,最开始我也觉得挺别扭的,后面想了想,这也主要是因为在java中,单独的一个函数不能存在,所以设计 ...

  5. java学习笔记2022.1.15

    其他 public class PokeDemo {public static void main(String[] args ){try {Pokemon a1 = PokemonManage.ge ...

  6. java学习笔记2022.1.17

    ### 包装类 1. 需要知道的一些知识点 package xiangzi;public class TestOne {public static void main(String[] args){I ...

  7. java学习笔记2022.1.12

    异常 五个异常关键词 try-catch-finally的写法格式 public void method(){try {//代码段1//产生异常的代码段}catch(异常类型 e){//对异常进行处理 ...

  8. 2022年Java学习笔记目录

    一.2022年Java任务驱动课程 任务驱动,统摄知识点:2022年Java程序设计讲课笔记 二.2022年Java学习笔记 (一)踏上Java开发之旅 Java学习笔记1.1.1 搭建Java开发环 ...

  9. Java学习笔记:2022年1月7日

    Java学习笔记:2022年1月7日 摘要:今天的这篇笔记主要是通过讲解基本的JVM结构来理解Java中一些行为的运行机制,进而更加的深入理解Java的运行原理. 文章目录 Java学习笔记:2022 ...

最新文章

  1. 你还是只会用数组吗?不懂Java集合,还想找工作?(集合概述)
  2. spring基于注解程序开发
  3. apache解析php的方法
  4. android audiotrack权限,Android中AudioRecord和AudioTrack的使用注意
  5. 【VS开发】CString 转为 char *方法大全
  6. php设计之初用于什么,PHP设计模式(七)之门面模式
  7. java来做Web Service,用哪个框架最好?
  8. 使用PHP脚本远程部署git项目
  9. codeforces 123D. String(后缀数组+单调栈,好题)
  10. 最早会外语的人,是怎么回事
  11. 计算机管理格式化没有顺利完成,内存卡无法格式化
  12. 微信小游戏破解(2)之《我要猫咪》
  13. 电脑控制手机投屏同步声音
  14. 【产业互联网周报】2019年我国软件业务收入71768亿元,同比增15.4%;亚马逊、谷歌先后发布财报,披露云计算业务增长...
  15. Golang 调用MySQL存储过程
  16. 区块链扩展性技术总结
  17. 安卓系统定制开发[安卓平台环境搭建]
  18. ARM S5PV210 X210 刷机教程总结
  19. java mysql 多表查询_Java编程基础32——MySQL多表联查
  20. 工作随记-Java利用企业微信群机器人定时发送消息

热门文章

  1. matlab中打不开保存好的模糊控制器,【求助大神】模糊控制器仿真,在Simulink运行时出现问题...
  2. Java黑皮书课后题第6章:*6.4(反序显示一个整数)使用下面的方法体编写方法,反序显示一个整数…例如reverse(3456)返回6543,编写一个测试程序,提示用户输入一个整数,然后显示它的反序
  3. SpringCloud入门 - 分布式事务【概念、常见框架选择 - tx-lcn】
  4. word2vec原理浅析
  5. DBUtils - Python数据库连接池
  6. virtualenv杂记
  7. Python 前端的第三方库
  8. maven选包算法(两个相同的包)
  9. Delphi中点击DBGrid某一行获得其详细数据方法
  10. CounterField属性