• java面试问题


    题目1:
    public class Test {
            public static void main(String[] args)
    {
    char x ='x';
    int i=10;
    System.out.println(false ? i : x); //输出120
    System.out.println(false ? 10 : x); //输出x
    }
    }
    运行结果:
    ---------- 运行 ----------
    120
    x


    输出完成 (耗时 0 秒) - 正常终止


    分析:
    1、由于int i = 10中,i是个int类型变量,所以在输出x的时候,x进行了类型提升,字符x对应asiic值为120
    2、java编程规范中,当后两个表达式有一个是常量表达式(本题是10),另一类型T可以表示这个常量,输出数据类型就为T这个类型。


    题目2:
    public class Test {
            public static void main(String[] args)
    {
    int i=10;
    System.out.println(i<10 ? 10.9 : 9);
    }
    }
    运行结果:
    ---------- 运行 ----------
    9.0


    输出完成 (耗时 0 秒) - 正常终止


    分析:根据精度,进行类型的转换导致


    题目3:
    public class Test {
            public static void main(String[] args)
    {
    int i=32;
    System.out.println(i>>32);
    }
    }
    运行结果:
    ---------- 运行 ----------
    32


    输出完成 (耗时 0 秒) - 正常终止


    分析:
    位移运算符中<< n是扩大2的n次方倍,
    位移运算符中>> n是缩小2的n次方倍,在进行的时候,首先将n进行与32进行取模求余运算得m,然后除以2的m次方。
    本题中32%32=0,所以不变。如果换成一个15,则15%32=15,所以最后结果是0;


    题目4:
    实际开发过程中异常出现的一些问题:
    1、过于庞大的try块
        为了方便,很多程序员把大量的代码都放到一个try模块中,用一个catch处理所有的异常行为,实际上这是一种坏习惯,
        原因就是为了图省事,不去分析代码中哪些代码会抛出异常、异常的具体类型是什么。造成的弊端就是对异常的定位比较困难。
        所以要根据实际分析定义异常的捕捉个数,用特定的异常来进行抛出。
    2、异常的完整性
        如果一个函数运行过程中可能会向上层抛出异常,就需要在函数声明中显示注明(throws)
    3、runtiemException异常,


    题目5:
    传值与传引用:
    1、不管java传递的参数是什么,一律传的是副本。如果java是传值,那么传递的是值得副本,如果java传递的是引用,那么传递的是
       引用的副本。(think in java)
    java中变量类型分两类:
    1、由基本数据类型(int、double...),传递的是值得副本。修改副本不影响源
    2、对象型变量,java传递的是引用的副本。修改副本会影响源
    注意String也是一个对象型变量,所以也是传递的引用副本,只不过由于它是不可变,所以传值或引用没区别。

  • 相关阅读:
    c语言提高学习笔记——02-c提高07day
    c语言提高学习笔记——02-c提高06day
    c语言提高学习笔记——02-c提高05day
    c语言提高学习笔记——02-c提高04day
    c语言提高学习笔记——02-c提高03day
    菜鸡的 分块 刷题记录
    是输入输出的小技巧和细节们
    蒟蒻的 线性基 刷题记录
    曼哈顿距离,欧几里得距离学习笔记
    用 Github.io 和 Hexo 创建你的第一个博客
  • 原文地址:https://www.cnblogs.com/dengshiwei/p/4258411.html
Copyright © 2020-2023  润新知