描述

前几天在知乎里看到一份这样的题,当时只是随便做了一下,对了一下答案。昨天又有了一份进阶的题,里面有些还是需要记录一下,于是就从这个入门的题开始。

题目和答案来自阿里云大学 - 知乎专栏

题目

  1. 现在假设有如下程序
    class Happy {
    public static void main(String args[]) {
    int i = 1 ;
    int j = i++ ;
    if((i==(++j))&&((i++)==j)) {
    i += j ;
    }
    System.out.println("i = "+i);
    }
    }

运行完上面代码之后输出i的值是多少?

A. 4

B. 5

C. 3

D. 6
  1. 下面的数据声明及赋值哪一个是没有错误的?

    A. float f = 1.3;

    B. char c = "a"

    C. byte b = 257

    D. int i = 10

  2. 编译Java源程序文件产生的字节码文件的扩展名为?

    A. java

    B. class

    C. html

    D. exe

  3. 现在假设有如下程序:

    public class Demo {
    public static void main(String args[]) {
    boolean flag = 10%2 == 1 && 10 / 3 == 0 && 1 / 0 == 0 ;
    System.out.println(flag ? "aliyunedu" : "yootk") ;
    }
    }

    以上程序的最终执行结果是什么?

    A. aliyunedu

    B. yootk

    C. true

    D. 程序出错

  4. 现在假设有如下程序:

    public class Demo {
    public static void main(String args[]) {
    int x = 10 ;
    double y = 20.2 ;
    long z = 10L;
    String str = "" + x + y * z ;
    System.out.println(str) ;
    }
    }

    以上程序的最终执行结果是什么?

    A. 10202.0

    B. 0212.0

    C. 302.0

    D. 1020.210

  5. 现在假设有如下程序:

    public class Demo {
    public static void main(String args[]) {
    String str = "" ;
    for (int x = 0 ; x < 5 ; x ++) {
    str += x ;
    }
    System.out.println(str) ;
    }
    }

    以上程序最终的执行结果是什么?

    A. 01234

    B. 10

    C. 14

    D. 25

  6. 现在假设有如下程序:

    public class Demo {
    public static void main(String args[]) {
    System.out.println(inc(10) + inc(8) + inc(-10)) ;
    }
    public static int inc(int temp) {
    if (temp > 0) {
    return temp * 2 ;
    }
    return -1 ;
    }
    }

    以上程序的最终执行结果是什么?

    A. 35

    B. 8

    C. 28

    D. 12

  7. 现在假设有如下程序:

    public class Demo {
    public static void main(String args[]) {
    char c = 'A' ;
    int num = 10 ;
    switch(c) {
    case 'B' :
    num ++ ;
    case 'A' :
    num ++ ;
    case 'Y' :
    num ++ ;
    break ;
    default :
    num -- ;
    }
    System.out.println(num) ;
    }
    }

    以上程序的最终执行结果是什么?

    A. 11

    B. 13

    C. 12

    D. 10

  8. 现在假设有如下程序:

    public class Demo {
    public static void main(String args[]) {
    int sum = 0 ;
    for (int x = 1 ; x < 10 ; x ++) {
    sum += x ;
    if (x % 3 == 0) {
    continue ;
    }
    }
    System.out.println(sum) ;
    }
    }

    以上程序的最终执行结果是什么?

    A. 6

    B. 0

    C. 程序错误,死循环

    D. 45

  9. 现在假设有如下程序:

    public class Demo {
    public static void main(String args[]) {
    int sum = 0 ;
    for (int x = 0 ; x < 10 ; x ++) {
    sum += x ;
    if (x % 3 == 0) {
    break ;
    }
    }
    System.out.println(sum) ;
    }
    }

    以上程序的最终执行结果是什么?

    A. 6

    B. 0

    C. 程序错误,死循环

    D. 45

答案

BDBBA AACDB

个人解析

  1. 主要考验i++++i的区别,只要记住“先++,先自增;后++,后自增”,这道题就只剩下考验细心了。

    class Happy {
    public static void main(String[] args) {
    int i = 1;
    int j = i++; // i = 2, j = 1 if ((i == (++j)) && ((i++) == j)) {
    // 第一个判断:j先自增1变为2后与i比较
    // 第二个判断:i先与j比较后再自增1,
    // if内为true,i = 3, j = 2
    i += j; // i = 5, j = 2
    } System.out.println("i = " + i);
    }
    }
  2. 如果选项A最后没有那个;,那么这道题就没有争议了

    • A. float f = 1.3;

      1.3默认是double类型,java中基本数据类型由高级向低级转换需要强转。

      • float f = 1.3f;
      • double f = 1.3;
      • float f =(float) 1.3;
      • double f = 1.3f;
    • B. char c = "a"

      java中的字符常量应该用单引号括起来,双引号括起来的为字符串。(末尾少了个分号)

      • char c = 'a';
      • String c = "a";
    • C. byte b = 257

      byte的范围是 -128~127。(末尾少了个分号)

      • int b = 257;
      • byte b = 57;
    • D. int i = 10

      (末尾少了个分号)

  3. public class Demo {
    public static void main(String args[]) {
    boolean flag = 10 % 2 == 1 && 10 / 3 == 0 && 1 / 0 == 0 ;
    // 10对2取余为0,故flag为false
    System.out.println(flag ? "aliyunedu" : "yootk") ;
    }
    }

    &&(短路与)一旦前面的条件为false,就会跳过后面的条件。

    X = 条件 ? A : B为三元表达式,与

    if (条件) {
    X = A;
    } else {
    X = B;
    }

    意思相同

  4. public class Demo {
    public static void main(String args[]) {
    int x = 10 ;
    double y = 20.2 ;
    long z = 10L;
    String str = "" + x + y * z ;
    System.out.println(str) ;
    }
    }

    *的优先度高于+,故优先计算乘法,随后从左往右依次进行+。当有字符串参与+运算时,加法变为字符串拼接,结果为字符串。故最后为字符串"10"202.0的拼接。

  5. 见上

  6. public class Demo {
    public static void main(String args[]) {
    System.out.println(inc(10) + inc(8) + inc(-10)) ; // 20 + 16 - 1
    }
    public static int inc(int temp) {
    if (temp > 0) {
    return temp * 2 ;
    }
    return -1 ;
    }
    }

    如果为正数,返回参数的2倍值;如果不是正数,返回-1。结果为20 + 16 + (-1)

  7. public class Demo {
    public static void main(String args[]) {
    char c = 'A' ;
    int num = 10 ;
    switch(c) {
    case 'B' :
    num ++ ;
    case 'A' :
    // 匹配成功,开始执行
    num ++ ; // num = 11
    case 'Y' :
    num ++ ; // num = 12
    break ;
    // 因break跳出switch
    default :
    num -- ;
    }
    System.out.println(num) ;
    }
    }

    switch-case语句块中break的重要性

  8. public class Demo {
    public static void main(String args[]) {
    int sum = 0 ;
    for (int x = 1 ; x < 10 ; x ++) {
    sum += x ;
    if (x % 3 == 0) {
    continue ;
    }
    }
    System.out.println(sum) ;
    }
    }

    感觉这道题sum += x的位置可能写错了,应该在if的后面,要么就只是单纯的和下一道题作对比。现在这段代码里if的用处几乎没有,结果和没有if时是一样的,都是1+2+…+9=45。

  9. public class Demo {
    public static void main(String args[]) {
    int sum = 0 ;
    for (int x = 0 ; x < 10 ; x ++) {
    sum += x ;
    if (x % 3 == 0) {
    break ;
    }
    }
    System.out.println(sum) ;
    }
    }

    和上一题类似,不过i的初始值变成了0,if里面的continue变成了break。由于0对3取余为0,所以直接跳出循环,输出sum的值0。

【17-06-16】Java入门测试题,测测你基础知识掌握程度(附答案及个人解析)的更多相关文章

  1. Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观

    Java 入门课程视频实战-0基础 已经上传完了.欢迎小伙伴们过来围观 直接进入: http://edu.csdn.net/course/detail/196 课程文件夹例如以下: 1 初识Java  ...

  2. Java做acm所需要的基础知识之排序问题

    Java做acm所需要的基础知识. 以前做acm的题都是用C/C++来写代码的,在学习完Java之后突然感觉Java中的方法比C/C++丰富很多,所以就整理一下平时做题需要用到的Java基础知识. 1 ...

  3. 0.Python 爬虫之Scrapy入门实践指南(Scrapy基础知识)

    目录 0.0.Scrapy基础 0.1.Scrapy 框架图 0.2.Scrapy主要包括了以下组件: 0.3.Scrapy简单示例如下: 0.4.Scrapy运行流程如下: 0.5.还有什么? 0. ...

  4. JAVA 入门第一章(语法基础)

    本人初学java 博客分享记录一下自己的学习历程 java我的初步学习分为六章,有c和c++的基础学起来也简便了很多. 第一章 语法基础 第二章 面向对象 第三章 常用工具类 第四章 文件操纵 第五章 ...

  5. (转)JAVA AJAX教程第二章-JAVASCRIPT基础知识

    开篇:JAVASCRIPT是AJAX技术中不可或缺的一部分,所以想学好AJAX以及现在流行的AJAX框架,学好JAVASCRIPT是最重要的.这章我给大家整理了一些JAVASCRIPT的基础知识.常用 ...

  6. 学 Java 网络爬虫,需要哪些基础知识?

    说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬 ...

  7. Python入门方法推荐,哪些基础知识必学?

    很多想入门的小伙伴还不知道Python应该怎么学,哪些知识必学,今天我们就来盘点一下. 01.入门方法推荐 总体来讲,找一本靠谱的书,由浅入深,边看边练. 网上的学习教程有很多,多到不知道如何选择.所 ...

  8. java第九节 网络编程的基础知识

    /** * * 网络编程的基础知识 * 网络协议与TCP/IP * IP地址和Port(端口号) * 本地回路的IP地址:127.0.0.1 * 端口号的范围为0-65535之间,0-1023之间的端 ...

  9. 想入门Web安全,这些基础知识都学会了吗?

    毕业季已经正式告一段落,这届毕业生都找到心仪的工作了吗? 正在实习期或者试用期的职场新人,是否在岗位上做的风生水起? 工作了一两年,从未升职加薪的菜鸟,还愿意继续原地踏步吗? 在校学生.IT从业者.毕 ...

随机推荐

  1. Memcached查找命令

    Memcached各个查找命令的语法格式都类似,且有相同的参数和参数含义,先将可能出现的各个参数的意义说明如下 key:键值 key-value 结构中的 key,用于查找缓存值. noreply(可 ...

  2. Sketch设计学习(一)

    很膜拜那些既能写出一手好代码,并且还能够懂设计懂交互的人.公司基本上都对这两块工作 分工分职,但是我觉得作为一名移动开发者,懂点设计 是必备的. 国外的很多大牛们,感觉他们虐我们千百遍了. 我觉得写代 ...

  3. 蒙特卡罗算法(Monte Carlo method)

    蒙特卡罗方法概述 蒙特卡罗方法又称统计模拟法.随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法.将所求解的问题同一 ...

  4. 使用gitbook

    前面的话 gitbook功能强大,可以自动实现搜索及翻页等功能,上手容易,用markdown书写即可,且可以自动生成响应式网站.本文将详细介绍如何使用gitbook 安装 1.使用npm全局安装git ...

  5. Flex 布局实例

    如图: 代码如下: <!DOCTYPE HTML> <html> <meta charset="utf-8"> <head> < ...

  6. main之前初始化流程

    main之前初始化流程 本文分别介绍Keil调用的ARMCC以及ARM-NONE-EABI-GCC两个编译器在main之前的操作: Keil MDK启动文件 总结一下MDK的启动流程: 1.系统初始化 ...

  7. 70、django之Ajax初识

    Ajax准么说是用于Javascript与服务器端进行交互的,我们之前呢没有了解ajax也同样可以完成与服务器的交互,那么ajax的优势在哪里?首先ajax是异步交互的也就是说我们基本不会遇到卡顿现象 ...

  8. bzoj1001(对偶图最短路)

    显然是个最大流问题. 边数达到了10^6级别,显然用dinic算法会TLE 对于一个平面图来说,当然用对偶图的最短路来求最小割(最大流) SPFA转移的时候注意判断边界情况 应该要开longlong才 ...

  9. 《天书夜读:从汇编语言到windows内核编程》五 WDM驱动开发环境搭建

    (原书)所有内核空间共享,DriverEntery是内核程序入口,在内核程序被加载时,这个函数被调用,加载入的进程为system进程,xp下它的pid是4.内核程序的编写有一定的规则: 不能调用win ...

  10. [转载] 使用HTML5的十大原因

    转载自http://www.williamlong.info/archives/3024.html 你难道还没有考虑使用HTML5? 当然我猜想你可能有自己的原因:它现在还没有被广泛的支持,在IE中不 ...