写点什么

牛客 java 选择题每日打卡 Day3

作者:Geek_b91541
  • 2022 年 6 月 26 日
  • 本文字数:2442 字

    阅读完需:约 8 分钟

牛客 java 选择题每日打卡 Day3

👩‍💻博客主页:京与旧铺的博客主页

✨欢迎关注🖱点赞🎀收藏⭐留言✒

🔮本文由京与旧铺原创,csdn 首发!

😘系列专栏:java 学习

👕参考网站:牛客网

💻首发时间:🎞2022 年 5 月 14 日🎠

🎨你做三四月的事,八九月就会有答案,一起加油吧

🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦

🎧最后的话,作者是一个新人,在很多方面还做的不好,欢迎大佬指正,一起学习哦,冲冲冲




图片



🛒导航小助手🎪

[TOC]



🧈选择题 1

public class Test{      public int add(int a,int b){           try {               return a+b;             }         catch (Exception e) {              System.out.println("catch语句块");           }           finally{               System.out.println("finally语句块");           }           return 0;      }      public static void main(String argv[]){          Test test =new Test();          System.out.println("和是:"+test.add(9, 34));      }}
复制代码


*结论:1、不管有木有出现异常,finally 块中代码都会执行;2、当 try 和 catch 中有 return 时,finally 仍然会执行;3、finally 是在 return 后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管 finally 中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在 finally 执行前确定的;4、finally 中最好不要包含 return,否则程序会提前退出,返回值不是 try 或 catch 中保存的返回值。举例:* 情况 1 :try{} catch(){}finally{} return;显然程序按顺序执行。情况 2 :try{ return; }catch(){} finally{} return;程序执行 try 块中 return 之前(包括 return 语句中的表达式运算)代码;再执行 finally 块,最后执行 try 中 return;finally 块之后的语句 return,因为程序在 try 中已经 return 所以不再执行。情况 3 :try{ } catch(){return;} finally{} return;程序先执行 try,如果遇到异常执行 catch 块,有异常:则执行 catch 中 return 之前(包括 return 语句中的表达式运算)代码,再执行 finally 语句中全部代码,最后执行 catch 块中 return. finally 之后也就是 4 处的代码不再执行。无异常:执行完 try 再 finally 再 return.情况 4 :try{ return; }catch(){} finally{return;}程序执行 try 块中 return 之前(包括 return 语句中的表达式运算)代码;再执行 finally 块,因为 finally 块中有 return 所以提前退出。情况 5 :try{} catch(){return;}finally{return;}程序执行 catch 块中 return 之前(包括 return 语句中的表达式运算)代码;再执行 finally 块,因为 finally 块中有 return 所以提前退出。情况 6 :try{ return;}catch(){return;} finally{return;}程序执行 try 块中 return 之前(包括 return 语句中的表达式运算)代码;有异常:执行 catch 块中 return 之前(包括 return 语句中的表达式运算)代码;则再执行 finally 块,因为 finally 块中有 return 所以提前退出。无异常:则再执行 finally 块,因为 finally 块中有 return 所以提前退出。


*最终结论* :任何执行 try 或者 catch 中的 return 语句之前,都会先执行 finally 语句,如果 finally 存在的话。如果 finally 中有 return 语句,那么程序就 return 了,所以 finally 中的 return 是一定会被 return 的,编译器把 finally 中的 return 实现为一个 warning。

🥐选择题 2

java 语言中,按照一定格式生成程序的文档的工具是?




    - ``` javah
    复制代码




      - ``` jar
      复制代码


      jar —— 将许多文件组合成一个 jar 文件


      javac —— 编译


      javadoc —— 它从程序源代码中抽取类,方法,成员等注释形成一个和源代码配套的 API 帮助文档


      javah —— 把 java 代码声明的 JNI 方法转化为 C\C++头文件。

      🍞选择题 3


      instanceof 是判断前者是否可以类型可以转化为后者,可以转化即为 true,分为向上转型和向下转型 B D 都是 A 的子类向下转型,

      🌭选择题 4

      String a = "a";


      String b = "a";


      这样定义的 a 和 b 指向的是字符串常量区变量,地址是一样的,即用 equals 为 true,用==也为 true。


      但是


      String a =new String( "a");


      String b = new String( "a");


      这样是定义了两个堆内存对象,只能 equals,不能==

      🥮选择题 5

      程序中常采用变量表示数据,变量具有名、地址、值、作用域、生存期等属性。关于变量的叙述,正确的是()




        - ``` 在函数中定义的变量,其生存期为整个程序执行期间
        复制代码




          - ``` 在函数中定义的变量,其存储单元在内存的栈区
          复制代码


          首先说明栈内存和堆内存里存放的是什么


          • 栈内存中存放函数中定义的一些基本类型的变量和对象的引用变量;

          • 堆内存中存放 new 创建的对象和数组。


          简单的来说,堆主要是用来存放对象的,栈主要是用来执行程序的


          这么做是因为


          • 栈的存取速度快,栈数据可以共享,但是栈中的数据大小和生存期必须确定,缺乏灵活性中存放一些基本类型的对象和对象句柄

          • 堆是操作系统分配给自己内存,由于从操作系统管理的内存分配,所以再分配和销毁时都需要占用时间,因此用堆的效率非常低,但是优点在于编译器不需要指导从堆里分配多少存储控件,也不需要知道存储的数据要再堆里停留多长事件,因此用堆保存数据时会得到更大的灵活性

          🥞选择题 6

          public class Test {    public static void main(String[] args) {        System.out.println(test());
          } private static int test() { int temp = 1; try { System.out.println(temp); return ++temp; } catch (Exception e) { System.out.println(temp); return ++temp; } finally { ++temp; System.out.println(temp); } }}
          复制代码


          执行顺序为:


          输出 try 里面的初始 temp:1;


          temp=2;


          保存 return 里面 temp 的值:2;


          执行 finally 的语句 temp:3,输出 temp:3;


          返回 try 中的 return 语句,返回存在里面的 temp 的值:2;


          输出 temp:2。

          🤴总结

          好啦,今天的错题总结就到这里啦,以后的每一天我都会尽量去打卡做 java 的基础选择题,然后总结出错题,相信练习之后会有更好的学习效果,既然看到这里啦,可以给我三连一下吗,爱你们啊

          用户头像

          Geek_b91541

          关注

          还未添加个人签名 2022.06.02 加入

          还未添加个人简介

          评论

          发布
          暂无评论
          牛客java选择题每日打卡Day3_6月月更_Geek_b91541_InfoQ写作社区