一. 单选题:
解析:
- 5 >> 2 相当于 5除于2两次,等于1
- >>> 表示无符号右移,高位用 0 填充,0001右移两位 0000,所以选A
解析:作对这道题的关键是要理解Java的值传递,关于值传递和引用传递的解释如下:
- 值传递:是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
- 引用传递:是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
这道题中a、b(是引用的副本,Java中没有引用传递)传入operate()函数中,但最后a指向的对象的值发生了变化,而b指向的对象的值没有发生变化,这是因为x.append(y);改变了a指向的对象的值,而y=x;并没有改变b指向对象的值,指向将y指向了x所指向的对象(之前y和b指向同一个对象)。
解析:在一个类的构造方法中调用这个类的其他构造方法,需要用this关键字
解析:使用局部变量一定要初始化
解析:float double long boolean 都不可以
解析:
A:只有public类类名要与文件名相同
B:也可以是其他类
D:不能包含多个 public类
解析:虽然try有return了,但finally一定会被执行,所以 return 的是 false
解析:void 是java的关键字
解析:传字符串是形参 数组是实参
二、不定项选择
解析:C:不是不可继承是不可重写
三、编程题
统计回文_牛客题霸_牛客网 (nowcoder.com)
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String str1 = in.nextLine(); String str2 = in.nextLine(); int count = 0; int len = str1.length(); for(int i =0;i<=len;i++){ StringBuffer str = new StringBuffer(str1); str.insert(i,str2); StringBuffer tmp = new StringBuffer(str); StringBuffer str5 = tmp.reverse(); if(str5.toString().equals(str.toString())){ count++; } } System.out.println(count); } }
解题思路,把每种情况列出来,倒置后与倒置前相比,相等就是回文。
连续最大和_牛客题霸_牛客网 (nowcoder.com)
import java.util.Scanner; public class Main { public static int getMax(int a,int b) { return a>b? a:b; } public static void main(String[] args) { Scanner in = new Scanner(System.in); int size = in.nextInt(); int[] ch = new int[size]; for(int i = 0;i<size;i++){ ch[i] = in.nextInt(); } int sum = ch[0]; int max = ch[0]; for(int i=1;i<size;i++){ sum = getMax(sum+ch[i],ch[i]); if(sum>max){ max = sum; } } System.out.println(max); } }