1、下列运算符合法的是( )
A &&
B <>
C if
D :=
正确答案: A
参考答案:
注解:java 中没有<> := 这种运算符, if else不算运算符
2、下面代码运行结果是()
public class Test{
public int add(int a,int b){
try {
return a+b;
catch (Exception e) {
System.out.println("catch语句块");
}
finally{
System.out.println("finally语句块");
}
return 0;
}
public static void main(String argv[]){
Test test =new Test();
System.out.println("和是:"+test.add(9, 34));
}
}
A catch语句块 和是:43
B 编译异常
C finally语句块 和是:43
D 和是:43 finally语句块
他的回答: C (正确)
正确答案: C
3、下列Java代码中的变量a、b、c分别在内存的____存储区存放。
class A {
private String a = “aa”;//全局变量、类的实例,存放在堆中
public boolean methodB() {
String b = “bb”;//局部变量,存在栈里面,方法使用完,栈释放
final String c = “cc”;
}
}
A 堆区、堆区、堆区
B 堆区、栈区、堆区
C 堆区、栈区、栈区
D 堆区、堆区、栈区
E 静态区、栈区、堆区
F 静态区、栈区、栈区
他的回答: B (错误)
正确答案: C
参考答案:
全局变量、类的实例,存放在堆中;局部变量,存在栈里面,方法使用完,栈释放。
4、以下声明合法的是
A default String s
B public final static native int w( )
C abstract double d
D abstract final double hyperbolicCosine( )
他的回答: B (正确)
正确答案: B
参考答案:
抽象方法:被继承需要重写,但是finally修饰的是不能被继承的。
5、在使用super 和this关键字时,以下描述正确的是
A 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
B super()和this()不一定要放在构造方法内第一行
C this()和super()可以同时出现在一个构造函数中
D this()和super()可以在static环境中使用,包括static方法和static语句块
他的回答: A (正确)
正确答案: A
参考答案:
static修饰的是类的,只有一份。
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);
}
}
A 3
B 123
C 1
D 12
他的回答: B (错误)
正确答案: D
7、代码片段:
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 运行期抛出异常
他的回答: B (错误)
正确答案: C
参考答案:
使用+的时候,会把byte的类型变成int类型,被finally修饰的不能被改变。b3=(b1+b2)编译会出错。
8、以下java程序代码,执行后的结果是()
public class Test {
public static void main(String[] args) {
Object o = new Object() {
public boolean equals(Object obj) {
return true;
}
};
System.out.println(o.equals("Fred"));
}
}
A Fred
B true
C 编译错误
D 运行时抛出异常
他的回答: C (错误)
正确答案: B
参考答案:
考察的知识点:多态、重载
首先,创建了一个匿名内部类,并将所创建的匿名对象赋给 Object (多态:子类对象赋给超类引用)。同时,该匿名内部类重写了 Object 类的 equals 方法,根
据多态及覆盖原则,会调用匿名内部类重写后的 equals 方法,所以选B。
9、执行以下程序后的输出结果是()
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;
}
}
A A,A
B A,B
C B,B
D AB,B
他的回答: D (正确)
正确答案: D
10、下面所示的java代码,运行时,会产生()类型的异常
int Arry_a[] = new int[10];
System.out.println(Arry_a[10]);
A ArithmeticException
B NullPointException
C IOException
D ArrayIndexOutOfBoundsException
他的回答: D (正确)
正确答案: D
【井字棋】
给定一个二维数组board,代表棋盘,其中元素为1的代表是当前玩家的棋子,0表示没有棋子,-1代表是对方玩家的棋子。当一方棋子在横竖斜方向上有连成排的及
获胜(及井字棋规则),返回当前玩家是否胜出。
测试样例:
[[1,0,1],[1,-1,-1],[1,-1,0]]
返回:true
【解题思路】:
井字棋有四种情况表示当前玩家获胜,1代表当前玩家棋子 1. 行全为1, 即行的和为3 2. 列全为1, 列的和为3 2. 主对角全为1, 对角和为3 副对角全为1, 对角和为3 3. 如果扩展为N*N的话,判断和是否等于N.
牛客网核心代码模式
import java.util.*;
public class Board {
public boolean checkWon(int[][] board) {
int n=board.length;
int i=0;
int j=0;
int sum=0;
//检查行
for(i=0;i<n;i++){
for(j=0;j<n;j++){
sum+=board[i][j];
if(sum==n){
return true;
}
}
}
//检查列
sum=0;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
sum+=board[j][i];
if(sum==n){
return true;
}
}
}
//检查主对角巷
sum=0;
for(i=0;i<n;i++){
sum+=board[i][i];
if(sum==n){
return true;
}
}
//检查副对角线
sum=0;
for(i=0;i<n;i++){
sum+=board[i][n-1-i];
if(sum==n){
return true;
}
}
return false;
}
}
**【密码强度等级】**密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。
一、密码长度:
5 分: 小于等于4 个字符
10 分: 5 到7 字符
25 分: 大于等于8 个字符
二、字母:
0 分: 没有字母
10 分: 密码里的字母全都是小(大)写字母
20 分: 密码里的字母符合”大小写混合“
三、数字:
0 分: 没有数字
10 分: 1 个数字
20 分: 大于1 个数字
四、符号:
0 分: 没有符号
10 分: 1 个符号
25 分: 大于1 个符号
五、奖励(只能选符合最多的那一种奖励):
2 分: 字母和数字
3 分: 字母、数字和符号
5 分: 大小写字母、数字和符号
最后的评分标准:
>= 90: 非常安全
>= 80: 安全(Secure)
>= 70: 非常强
>= 60: 强(Strong)
>= 50: 一般(Average)
>= 25: 弱(Weak)
>= 0: 非常弱(Very_Weak)
对应输出为:
VERY_SECURE
SECURE
VERY_STRONG
STRONG
AVERAGE
WEAK
VERY_WEAK
提示
1 <= 字符串的长度<= 300
输入描述:
输入一个string的密码
输出描述:
输出密码等级
示例1:
输入
38$@NoNoNo
输出
VERY_SECURE
【解题思路】:
这里对于不同种类的字符得分不同,同学们可以现对每一个维度进行单独判断,即对于长度,字母,数字,符号单独判断,最后把所有的单项值根据题目要求相加,输出对应的安全级别。
牛客网ACM模式代码
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
while(scanner.hasNextLine()){
String str=scanner.nextLine();
int sum=0;
int sum1=getLen(str);
int sum2=getChar(str);
int sum3=getNum(str);
int sum4=getString(str);
if(sum2==20&&sum3>0&&sum4>0){
sum=sum1+sum2+sum3+sum4+5;
}else if(sum2==10&&sum3>0&&sum4>0){
sum=sum1+sum2+sum3+sum4+3;
}else if(sum2==10&&sum3>0&&sum4==0){
sum=sum1+sum2+sum3+sum4+2;
}else{
sum=sum1+sum2+sum3+sum4;
}
if(sum>=90){
System.out.print("VERY_SECURE");
}else if(sum>=80){
System.out.print("SECURE");
}else if(sum>=70){
System.out.print("VERY_STRONG");
}else if(sum>=60){
System.out.print("STRONG");
}else if(sum>=50){
System.out.print("AVERAGE");
}else if(sum>=25){
System.out.print("WEAK");
}else if(sum>=0){
System.out.print("VERY_WEAK");
}
}
}
public static int getLen(String str){
int len=str.length();
if(len>=8){
return 25;
} else if(len>=5&&len<=7){
return 10;
} else if(len<=4){
return 5;
}
return 0;
}
public static int getChar(String str){
int len=str.length();
int count1=0;
int count2=0;
for(int i=0;i<len;i++){
if(str.charAt(i)>=65&&str.charAt(i)<=90){
count1++;
}else if(str.charAt(i)>=97&&str.charAt(i)<=122){
count2++;
}
}
if(count1>0&&count2>0){
return 20;
}else if(count1>0||count2>0){
return 10;
}else{
return 0;
}
}
public static int getNum(String str){
int len=str.length();
int count=0;
for(int i=0;i<len;i++){
if(str.charAt(i)-'0'>=0&&str.charAt(i)-'0'<=9){
count++;
}
}
if(count>1){
return 20;
}else if(count==1){
return 10;
}else{
return 0;
}
}
public static int getString(String str){
int len=str.length();
int num=0;
for(int i=0;i<len;i++){
if(!((str.charAt(i)>=65&&str.charAt(i)<=90))&&
!((str.charAt(i)>=97&&str.charAt(i)<=122))&&
!((str.charAt(i)-'0'>=0&&str.charAt(i)-'0'<=9))
){
num++;
}
}
if(num>1){
return 25;
}else if(num==1){
return 10;
}else{
return 0;
}
}
}