一、选择题
1、JDK中提供的java、javac、jar等开发工具也是用Java编写的。(A )
A. 对
B. 错
答案解析:A
2、下面是java语言的基本特性是?【多选】(A、B、C )
A. 封装
B. 多态
C. 继承
D. 高效
答案解析:A B C
Java语法的三大特性:继承,封装,多态;
3、以下()不是合法的标识符?(C )
A. STRING
B. x3x
C. void
D. deSf
答案解析:C
void是Java中的关键字,不能作为标识符。
4、关于Float,下列说法错误的是(C )
A: Float是一个类
B: Float在java.lang包中
C: Float a=1.0是正确的赋值方法
D: Float a= new Float(1.0)是正确的赋值方法
答案解析:C
Float是一个包装类,在java.lang包下面。Float是类类型,Float类型的变量指向的是一个引用,给它赋值的时候需要在堆里面new一个Float类型的对象,把对象的地址赋给它。
5、下面的Java赋值语句哪个是有错误的(B )
A: int i =1000;
B: float f = 45.0;
C: char s = ‘\u0639’;
D: String s = “hello,world\0”;
答案解析:B
对于 float f = 45.0,正确的赋值方式为:float f = 45.0f
二、编程题
1、给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文。如果是回文请返回true,否则返回false。字符串回文指该字符串正序与其逆序逐字符一致。OJ链接
示例:
输入:"absba"
输出:true
import java.util.*;
public class Solution {
public boolean judge (String str) {
if (str.length() == 0)
return true;
//两个指针,一个从左边开始,一个从右边开始,每次两个
//指针都同时往中间挪,只要两个指针指向的字符不一样就返回false
int left = 0;
int right = str.length() - 1;
while (left < right) {
if (str.charAt(left++) != str.charAt(right--))
return false;
}
return true;
}
}
2、实现函数 int sqrt(int x).
计算并返回 x 的平方根(向下取整)。OJ链接
示例1:
输入:2
返回值:1
实例2:
输入:2143195649
返回值:46294
题解思路: 二分查找比a<=sqrt(x)<=b 如果 midmid <=x 且(mid+1)(mid+1) <x 返回mid 如果mid*mid > x, right =mid-1; 否则 left = mid+1;
public class Solution {
public int sqrt(int x) {
if (x <= 0) {
return 0;
}
int left = 1, right = x;
while (true) {
int middle = (left + right) >> 1;
if (middle <= x / middle && (middle+1) > x / (middle+1)) {
return (int) middle;
} else if (middle < x / middle) {
left = middle + 1;
} else {
right = middle - 1;
}
}
}
}