• java面试题


    1、字符定义:

            char c=65;
            System.out.println(c);

    输出结果:

    A

    分析:java中定义字符方式:

    • 直接定义字符:char c1=‘A’;
    • 用字符对应的ASCII码:char c2=65;
    • byte定义范围是-128~127

    2、程序输出结果

            int a = 5;
            System.out.println("vlaue is " + ((a < 5) ? 10.9 : 9));

    输出结果:

    vlaue is 9.0

    条件表达式执行说明:

    • 先求解表达式1,若值为非0,表示条件为真,则求解表达式2,此时表达式2的值就作为整个条件表达式的值;若表达式1的值为0,表示条件为假,则求解表达式3,表达式3的值就是整个条件表达式的值。
    •  条件表达式的优先级别仅高于赋值运算符,而低于前面遇到过的所有运算符。
    • 条件运算符的结合方向为"自右至左"。
    • 只要一个运算中有不同的类型,涉及到类型转换,那么编译器会往下(基本类型)转型,再进行运算。
    • 三目运算中后两个表达式,有一个是常量表达式,另一个是T类型,而常量表达式可以被T类型表示,则输出结果为T类型。

    分析:因为前面有一个10.9,所以9会自动提升为9.0,所以最终输出结果是9.0。

    3、程序输出结果

            char x = 'x';
            int i = 10;
            System.out.println(false ? i : x);
            System.out.println(false ? 10 : x);

    输出结果:

    120
    x

    分析:int i=10;中的i是个变量,所以第一个输出的x被提升为int型,‘x’对应的值是120,所以输出120;当三目运算中后两个表达式,有一个是常量表达式(本题中是10),另一个是T类型(本题中是char),而常量表达式可以被T类型表示,则输出结果为T类型。因为10为常量,且可以表示为char类型,所以输出结果为char。

    4、下列输出结果:

    public class test1 {
        private int count;
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            test1 t1 = new test1(99);
            System.out.println(t1.count);
    
        }
    
        test1(int ballcount) {
            count = ballcount;
        }
    }

    输出结果:

    99

    分析:count定义为私有属性,并不会阻止构造方法对其进行初始化,当然也可在该类进行调用私有属性,但是如果不在同一个类,则不行。

    public class test1 {
    
        public static void main(String[] args) {
    
            test2 t2 = new test2(88);
            System.out.println(t2.count);
    
        }
    }
    
    class test2 {
        private int count2;
    
        test2(int ballcount) {
            count2 = ballcount;
        }
    }

    上述代码会编译出错:The field test2.count2 is not visible

    5、关于下面代码片段叙述正确的是: 

            byte b1 = 1, b2 = 2, b3, b6;
            final byte b4 = 4, b5 = 6;
            b6 = b4 + b5;
            b3 = (b1 + b2);
            System.out.println(b3 + b6);

    A 输出结果:13

    B 语句:b6=b4+b5编译出错

    C 语句:b3=b1+b2编译出错

    D 运行期抛出异常

    解析:被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。Java中的byte,short,char进行计算时都会提升为int类型。

    6、下列程序输出结果:

    public class ZeroTest {
        public static void main(String[] args) {
            try {
                int i = 100 / 0;
                System.out.print(i);
            } catch (Exception e) {
                System.out.print(1);
                throw new RuntimeException();
            } finally {
                System.out.print(2);
            }
            System.out.print(3);
        }
    }

    输出结果:12

    分析:

    1)inti = 100/ 0; 会出现异常,会抛出异常,System.out.print(i)不会执行,

    2)catch捕捉异常,继续执行System.out.print(1);

    3)当执行 thrownewRuntimeException();  又会抛出异常,这时,除了会执行finally中的代码,其他地方的代码都不会执行

    7、 下列程序输出结果:

        public static int aMethod(int i) throws Exception {
            try {
                return i / 0;
            } catch (Exception ex) {
                throw new Exception("exception in a Method");
            } finally {
                System.out.println("finally");
            }
        }
    
        public static void main(String[] args) {
            try {
                aMethod(0);
            } catch (Exception ex) {
                System.out.println("exception in main");
            }
            System.out.println("finished");
        }

    输出结果:

    finally
    exception in main
    finished

  • 相关阅读:
    什么是webApp?与原生APP的区别
    判断h5是否在小程序内打开
    移动端 1px边框
    【填坑】小程序webview使用简单汇总
    一个小程序账号只能发布一个小程序
    微信开发工具提示未绑定网页开发者
    小程序webview(业务域名配置)
    webpack打包已开发好的vue项目
    vscode搭建本地服务器
    微信扫码下载,H5引导页
  • 原文地址:https://www.cnblogs.com/SaraMoring/p/5748367.html
Copyright © 2020-2023  润新知