描述

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

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

题目

  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. Hadoop(十四)MapReduce原理分析

    前言 上一篇我们分析了一个MapReduce在执行中的一些细节问题,这一篇分享的是MapReduce并行处理的基本过程和原理. Mapreduce是一个分布式运算程序的编程框架,是用户开发“基于had ...

  2. 深入理解Java中的迭代器

    迭代器模式:就是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节. 概述 Java集合框架的集合类,我们有时候称之为容器.容器的种类有很多种,比如ArrayList.Li ...

  3. 写一个类时什么时候需要重写toString

    一般需要打印出来的时候需要重写toString方法 例如:User.java类 public class User { private String name; @Value(value=" ...

  4. java:利用静态字段和构造函数实现已建对象数查询

    问题:使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数. 请写一个类,在任何时候都可以向它查询"你已经创建了多少个对象?". 程序设计思想: 利用静态变量指定一个计数 ...

  5. 实验之-----------修改oracle实例名

    --查询当前数据库实例名称: SQL> select instance_name,status from v$instance; INSTANCE_NAME STATUS------------ ...

  6. 【20171028早】ubuntu 16.04 LTS 安装php遇到的问题

    背景: 10月28日的一个早上,老黑一如往常地练习,我测试不破坏,当时我找到sqli-libs 游戏,可是我没有立即开始,于是,奇妙的事情就由php开始了.ubuntu16.04安装相关环境 apac ...

  7. 使用fabric解决百度BMR的spark集群各节点的部署问题

    前言 和小伙伴的一起参加的人工智能比赛进入了决赛之后的一段时间里面,一直在构思将数据预处理过程和深度学习这个阶段合并起来.然而在合并这两部分代码的时候,遇到了一些问题,为此还特意写了脚本文件进行处理. ...

  8. Hive简单安装

    数据库的创建 Hive1版本 在此之前要安装好JDK,HADOOP,下载解压Hive 在root下安装mysql:yum install mysql-server mysql-client //一般M ...

  9. jQuery.proxy() 函数详解

    jQuery.proxy()函数用于改变函数的上下文. 你可以将指定函数传入该函数,该函数将返回一个新的函数,其执行代码不变,但函数内部的上下文(this)已经被更改为指定值. 该函数属于全局的jQu ...

  10. JavaSE高级1

    内部类 内部类概念: 所谓内部类(Inner Class),顾名思义,就是将一个类定义在另一个类的内部.内部的类称之为内部类. 内部类的主要特点: 内部类可以很好的实现隐藏,可以使用protected ...