错题总结--黑马程序员之基础班入班考试

时间:2022-02-21 00:17:08

8、下列关于变量和常量的说法正确的是(AD   )

A. 常量表示不能被改变的值,例如1、2、“abc”都是常量

B. 常量表示常见的变量

C. int x = 0;代码中,x表示常量,0表示变量

D. 在同一个大括号{}内,定义的变量不能够重名


此题答案为A,而我选择的是D,把A漏了,究其原因是因为对常量的定义认识不够深刻,常量就是表示不能被改变的值。


11、下列各种符号的定义格式,那种在java语言中是错误的变量定义( BD

A. int myVal =1;            B.char $myVal =1;

C.byte _myVal =1;          Dfloat 3.14myVal=1;


此题答案为D,不为B,错误原因:对java的变量的命名规则认识不到位。

变量的命名规则:变量名必须以字母,下滑线或者“$”符号开头,变量命名中可以有数字,但是不能以数字开头


12、Java语言中的int及char数据类型的长度分别为(C       )

A. 16位和8 位                      B. 8位和16位

C. 32位和16位                     D. 32位和8位


长度所占位数:byte:8位  int:32位  long:64位  float:32位  double:64位  char:16位



16、语句System.out.println(1+2+"java"+3+4)输出的结果是(CA

A. 3java34    B.12java34      C. 3java7         D.12java7



这道题选C是跳坑里面了,没有注意到前面那段已经变成字符串了,所以按照从左往右的拼接逻辑3+4这个是不会运算的只会将其拼接起来。


17、关于下列循环语句,写法正确的是(     ACDB

A. while(true){};   B. for(;;){} C. do{}while(false);  D. for(inta=0;a<5;a++);



这道题写法太奇葩了,一时拿不准。。。



19、以下关于函数重载的说法正确的有(     ABCD)

A. 方法名必须一样

B. 与返回值类型无关

C. 参数个数或者顺序不一样

D. 参数类型不一样



重载的注意事项虽然背过好多次,可是还是容易忘。。。重载:同名不同参,参数个数、顺序、类型不一样,与返回值类型无关。



20、关于数组的说法,正确的是(     AB)

A. 数组里面存放的是相同类型的数据

B. 获取数组的长度使用length属性

C. 获取数组的大小使用size方法

D. 数组的长度是可变的


漏选了A,主要是因为平常频繁使用集合以及Map,很少用数组导致对数组的定义不熟。

数组定义:数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具有固定的长度,并且在内存中占据连续的空间。


24、想要结果输出为0,则可以做哪些修改?( BC

int [ ] arr = new int[1];    ①

arr[0] = 3;                   ②

System.out.println( arr[1] );  ③

 

A.  ②处修改为arr[3] = 0;

B.  ③处修改为System.out.println(0)

C.  ①处修改为int [ ] arr = new int[2];

D.  不用修改了,结果就是0

这道题漏选了一个C选项,原因是因为对数组中默认的数据类型没有太多 了解,数组中的默认数据值视数组类型而定,若默认数组类型为int,double,long这些基本数据类型,默认数据与基本数据类型的默认数据保持一致,若数组类型为Integer,String此类的对象类型,则默认数据为

null。


25、下列二维数组定义错误的是(     BD

A  int[][] arr =new int[3][2];

B  int arr[][] =new int[3][];

C  int[][] arr ={{1,2,3},{4,5},{6,7,8,9}};

D  int arr[][]={{2,3},{6},9};

答案为D,错选为B,对二维数组的数据形式不了解,以为大括号里有三个大括号就是三维数组。。。(有关二维数组的相关知识待开班后再做补充)


33、下面代码的运行结果是( AD

public staticvoid main(String[] args){

intx = 80;

x++;

switch(x){

case80:

System.out.println(80);

case81:

System.out.println(81);

default:

System.out.println(82);

}

}

A. 80      B. 80 81      C.81      D. 81 82

答案为D错选为A,原因一:受++x与x++影响,注意:二者的区别是在赋值是存在区别,比如 :

int i=2;
int j=2;
int x = i++;
int y = ++j;
当为这种情况时两者会有区别的,i++先赋值后加一,++j则是先加一 后赋值。所以,x为2,y为3。但是,

当在程序中仅仅写i++或者是++i并没有牵涉到赋值操作时,二者的作用是一样的。原因二:未注意到这道题没有break跳出。。。



38、下面程序运行的结果是( AB

       public static void main(String[] args){

              int a = 1;

              if(a++>1){

                     System.out.println(a);

              }else{

                     System.out.println(a);

              }

       }

 

       A.1 B.2  C.0  D.编译报错

应选B错选A,错选原因:a++>1这个判断得出的结果确实是否,在参与比较运算时,a++的值还是为1,但是比较后,输出a时,a就已经变成了2了。

i++原理:

java的编译器在遇到i++时,会重新为变量运算分配一块内存空间,以存放原始的值,然后进行自加一操作,若是i++后有赋值运算的话

再将原始值赋过去,然后释放原始值所占内存。详情参考:链接:http://blog.sina.com.cn/s/blog_605f5b4f0100khy0.html