• java基础10题


    1.关于对象成员占用内存的说法哪个正确?( )
    A.同一个类的对象共用同一段内存
    B.同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间
    C.对象的方法不占用内存
    D.以上都不对
    2.程序运行的结果为

    public class Test {
        public static void main(String[] args) {
            StringBuffer a = new StringBuffer("A"); 
            StringBuffer b = new StringBuffer("B"); 
            operator(a, b); 
            System.out.println(a + "," + b); 
        } 
        public static void operator(StringBuffer x, StringBuffer y) { 
            x.append(y); y = x; 
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    3.以下多线程对int型变量x的操作,哪个不需要进行同步( )
    A.x=y;
    B.x++;
    C.++x;
    D.x=1;
    4.程序执行的结果为

    public static void main(String[] args){
        Double x=1.2;  
        long l = 1.2;  
        float f =  x/l;
        System.out.println(f);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    5.有关finally语句块说法正确的是( )
    A.不管catch是否捕获异常,finally语句块都是要被执行的
    B.在try语句块或catch语句块中执行到System.exit(0)直接退出程序
    C.finally块中的return语句会覆盖try块中的return返回
    D.finally 语句块在 catch语句块中的return语句之前执行
    6.下面输出结果为

    public static void main(String args[]) {
        Thread t = new Thread() {
            public void run() {
                pong();
            }
        };
        t.run();
        System.out.print("ping");
    }
    static void pong() {
        System.out.print("pong");
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    7.口不能扩展(继承)多个接口。( )
    A.正确
    B.错误
    8.下面的结果为

    public static void main(String args[]) {
        Thread t = new Thread() {
            public void run() {
                pong();
            }
        };
        t.run();
        System.out.print("ping");
    }
    static void pong() {
        System.out.print("pong");
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    9.对于文件的描述正确的是( )
    A.文本文件是以“.txt”为后缀名的文件,其他后缀名的文件是二进制文件。
    B.File类是Java中对文件进行读写操作的基本类。
    C.无论文本文件还是二进制文件,读到文件末尾都会抛出EOFException异常。
    D.Java中对于文本文件和二进制文件,都可以当作二进制文件进行操作。
    10.下面哪个选项正确创建socket连接?
    A.Socket s = new Socket(8080);
    B.Socket s = new Socket(“192.168.1.1”,8080)
    C.SocketServer s = new Socket(8080);
    D.Socket s = new SocketServer(“192.168.1.1”,8080)

    (1)选B
    静态成员属于类成员,在方法区分配内存,而不是堆。静态变量属于类本身,成员变量属于类的某个实例。
    (2)AB,B
    a,b是对象的引用,指向堆内存,将a,b两个引用传给x,y,执行x.append(y),改变了x引用指向的堆内存的存储内容,变为AB, y = x,表示引用y,指向引用x指向的存储区域,没有改变引用b,指向的存储空间的内容。
    (3)A
    x=y 在JVM中要操作三步 取y值 赋值x 刷新x
    x++ ++x同上原理
    (4)编译报错
    从double 到float会丢失数据,在发生强转的时候
    (5)正确答案: A B C
    结论:
    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。
    (6)D
    其他的选项中的数据都属于不可信数据,都可能存在安全问题,因此都需要进行相应的处理
    (7)错
    Java中唯有接口可以多继承,抽象类也只能单继承。
    多继承优点在于由于可以同时具备多个父类的特征,可以让子类拥有更高的丰富的;而缺点是类的继承结构变的复杂,而且可能出现菱形的风险。
    单继承的优点在于层次结构的清晰,设计上更容易把握;缺点是在丰富度要求较高和复杂的情况下,单继承从设计结构上没办法满足。
    (8)B.
    这里需要注意Thread的start和run方法
    用start方法才能真正启动线程,此时线程会处于就绪状态,一旦得到时间片,则会调用线程的run方法进入运行状态。
    而run方法只是普通方法,如果直接调用run方法,程序只会按照顺序执行主线程这一个线程。
    (9)D

    	
    		A.文件分为文本文件和二进制文件,计算机只认识二进制,所以实际上都是二进制的不同解释方式。文本文件是以不同编码格式显示的字符,例如Ascii、Unicode等,window中文本文件的后缀名有".txt",".log",各种编程语言的源码文件等;二进制文件就是用文本文档打开是看不懂乱码,只要能用文本打开的文件都可以算是文本文件,只是显示的结果不是你想要的,二进制文件只有用特殊的应用才能读懂的文件,例如".png",".bmp"等,计算机中大部分的文件还是二进制文件。
    	
    		B.File类是对文件整体或者文件属性操作的类,例如创建文件、删除文件、查看文件是否存在等功能,不能操作文件内容;文件内容是用IO流操作的。
    	
    		C.当输入过程中意外到达文件或流的末尾时,抛出EOFException异常,正常情况下读取到文件末尾时,返回一个特殊值表示文件读取完成,例如read()返回-1表示文件读取完成。
    	
    		D.上面A选项已经说了,不论是文本文件还是二进制文件,在计算机中都是以二进制形式存储的,所以都当做二进制文件读取。
    	
    
    
    (10)B
    服务器端:ServerSocket提供的实例 ServerSocket server = new ServerSocket(端口号) 
    客户端:Socket提供的实例 Socket client = new Socket(IP地址,端口号)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    基于Docker的安装和配置Canal
    【UE5】物体沿样条线移动
    (完整版)《光学教程》(姚启钧)课后习题解答
    PMP提分练习
    前端八股文-Promise解决问题,基本用法,存在缺点,then,catch,finally,all,race,前端性能优化,全过程,如何学习
    SpringBoot+LayUI+MybatisPlus 前后端分离 实现数据表格下拉框功能
    EDUCoder编程练习题解(指针二)
    JavaScript 12 JavaScript 算数
    Bootstrap前端开发框架(简介、版本、优点、使用、布局容器、栅格系统(栅格选项参数,列嵌套,列偏移,列排序,响应式工具))
    PyTorch 中的【高级索引】 或 【花式索引】
  • 原文地址:https://blog.csdn.net/Nicholas_giao/article/details/126722856