描述

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

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

题目

  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. 【ASP.NET MVC 学习笔记】- 04 依赖注入(DI)

    本文参考:http://www.cnblogs.com/willick/p/3223042.html 1.在一个类内部,不通过创建对象的实例而能够获得某个实现了公开接口的对象的引用.这种"需 ...

  2. LeetCode 219. Contains Duplicate II (包含重复项之二)

    Given an array of integers and an integer k, find out whether there are two distinct indices i and j ...

  3. Matrices and Vectors

    Matrices and Vectors Matrices are 2-dimensional arrays: A vector is a matrix with one column and man ...

  4. 伤不起的微信小程序

    前段时间不是很忙,刚好公司需要开发一个微信小程序,于是我就入坑了(此坑还是有点深滴,请备好干粮). 我是一名iOS开发工程师,个人觉得入门开发小程序的话,需要基本的web前端知识,比如说:代码的书写格 ...

  5. Unity3d 2017

    Unity3d引擎的新纪元--Unity3d 2017 来源 http://blog.csdn.net/dark00800/article/details/75209544 Unity3d不久之前正式 ...

  6. Leetcode题解(十四)

    39.Combination Sum 题目 题目要求找出和为target的数字组合,并且每个整数可以多次使用.仔细思考可以发现,这道题目可以采用递归的方法来完成,比如举的例子,target=7,一开始 ...

  7. Strategic Game

    Strategic Game Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...

  8. Java 内存区域划分 备忘录

    最近看了<深入理解虚拟机>的内存分配与管理这部分的内容,这里做一个的总结,以加深我对知识点的理解,如有错误的地方,还望大神们指出,我及时更正:  内存区域划分 首先是下面这幅图: 图 1. ...

  9. 项目实战2—LVS负载均衡

    负载均衡集群企业级应用实战-LVS 实现基于LVS负载均衡集群的电商网站架构 随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢 ...

  10. Javascript实现简单跨域调用

    什么是JSONP? 1.一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面.动态网页.web服务.WCF,只要是跨域请求,一律不准: 2.不过我们又发现,Web页面 ...