Java训练题1

一、选择题

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;
               }
       }
   }
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值