• 牛客网刷题笔记——错题集1


    1、在基本JAVA类型中,如果不明确指定,整数型的默认是什么类型?带小数的默认是什么类型?

    错误答案:int float   正确答案:java整数型的默认类型是int,小数的默认类型是double

    2、下列的输出结果是什么?

     1 public class Test{
     2     static int cnt = 6;
     3     static{
     4         cnt += 9;
     5     }
     6 public static void main(String[] args){
     7     System.out.println(“cnt =” + cnt);
     8 }
     9 static{
    10     cnt /=3;
    11     };
    12 }

    正确答案:cnt=5

    查看答案解析有的人说:静态初始化块,静态变量,先执行静态变量在执行静态初始块。

    而另一位同学做实验,并且我自己也运行了下面这个例子:

    public class Test {
        static {
            cnt = 6;
        }
    
        static int cnt = 100;
    
        public static void main(String[] args) {
            System.out.println("cnt = " + cnt);
            //最后输出是50,如果按照错误说法就应该是3
            //按顺序执行就是cnt=6--->cnt=100---->cnt = 100/2 = 50.
        }
    
        static {
            cnt /= 2;
        }
    }

    最终输出结果是:50,其实是Java的向前引用,加载的机制应该是先声明所有的变量,但是现在只是声明而已所以是cnt是int的默认值0,然后按照声明语句和静态块的先后顺序依次对cnt进行操作,所以最后会输出50。

    最终的顺序:父类的成员变量声明->按书写顺序执行父类静态成员变量和静态块->子类的成员变量声明->按书写顺序执行子类静态成员变量和静态块

    3、下列代码的输出结果是什么?

    1 System.out.println(“is ”+ 100 + 5);
    2 System.out.println(100 + 5 +“ is”);
    3 System.out.println(“is ”+ (100 + 5));

    错误答案:is 105, 105 is, is 105

    正确答案:is 1005, 105 is, is 105

    解析:“+”是按照从左到右顺序执行的,除非是加括号,并不会先执行算数操作

    4、socket编程中,以下哪个socket的操作是不属于服务端操作的()?

    A、accept
    B、listen
    C、connect
    D、close

    错误答案:D

    正确答案:C

    解析:服务器端也可以关闭连接,客户端主动连接(connect),服务器端进行监听阻塞

     5、

     1 public class DataObject implements Serializable{
     2     private static int i=0;
     3     private String word=" ";
     4     public void setWord(String word){
     5         this.word=word;
     6     }
     7     public void setI(int i){
     8         Data0bject. i=I;
     9      }
    10 }
    11 创建一个如下方式的DataObject: 
    12 
    13 DataObject object=new Data0bject ( );
    14 object. setWord("123");
    15 object. setI(2);

    将此对象序列化为文件,并在另外一个JVM中读取文件,进行反序列化,请问此时读出的Data0bject对象中的word和i的值分别为()

    A、"", 0
    B、"", 2
    C、"123", 2
    D、"123", 0

    错误选项:C

    正确选项:D

    解析:序列化保存的是对象的状态,静态变量属于类的状态,因此,序列化并不保存静态变量。所以i是没有改变的,并且被transient标注的成员变量也不会被序列化。

    6、下面程序的运行结果()

     1 Object obj=new Object();
     2         List aList=new ArrayList();
     3         List bList=new LinkedList();
     4          
     5         long t1=System.currentTimeMillis();
     6         for(int i=0;i<50000;i++){
     7             aList.add(0,obj);
     8         }
     9         long t2=System.currentTimeMillis()-t1;
    10          
    11         t1=System.currentTimeMillis();
    12         for(int i=0;i<50000;i++){
    13             bList.add(0,obj);
    14         }
    15         long t3=System.currentTimeMillis()-t1; 

    错误答案:t3>t2

    正确答案:t2>t3

    解析:这题做错属于马虎大意,ArrayList底层使用数组实现,LinkedList底层使用链表,所以ArrayList查找速度比LinkedList快,LinkedList插入比ArrayList快

    7、经过强制类型转换以后,变量a,b的值分别为多少?

    1 short a =1282 byte b =(byte) a;

    错误答案:编译错误

    正确答案:128,-128

    分析:首先要了解byte的组成,byte有八位由于第一位是符号位,byte的取值范围是-128~127,a的后八位为10000000,赋值给byte就变成了10000000,但此时1为符号位。所以byte的10000000为-128

    8、以下哪个式子有可能在某个进制下成立()?

    A、13*14=204

    B、12*34=568

    C、14*14=140

    D、1+1=3

    正确答案:A

    解析:首先从A开始试,设进制为X则A选项为:(1*x^1 + 3*x^0)(1*x^1 + 4*x^0) = 2*x^2+0*x^1+4*x^0

    整理得:x^2-7x-8=0

    根据求根公式:

    最终得出解:-1和8,以下选项以此类推,因为A选择有正解,故正确答案为A

  • 相关阅读:
    android应用框架搭建------BaseActivity
    Android中Application类用法
    Android App框架设计之编写基类BaseActivity
    android Application类的详细介绍
    Linux使用jstat命令查看jvm的GC情况
    cocos2dx怎样设置ios和Android横屏竖屏的几种方法
    网络请求 http get post 一
    Java多线程中wait, notify and notifyAll的使用
    一个人生活,怎样摆脱孤独提升幸福感?
    js控制文本框仅仅能输入中文、英文、数字与指定特殊符号
  • 原文地址:https://www.cnblogs.com/fengyun2019/p/11159008.html
Copyright © 2020-2023  润新知