Maison > Java > javaDidacticiel > le corps du texte

Partager une question d'introduction Java

PHP中文网
Libérer: 2017-06-21 09:37:46
original
1526 Les gens l'ont consulté

描述

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

题目

  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);
        }
    }
    Copier après la connexion

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

    A. 4

    B. 5

    C. 3

    D. 6

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

    A. float f = 1.3;

    B. char c = "a"

    C. byte b = 257

    D. int i = 10

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

    A. java

    B. class

    C. html

    D. exe

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

    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") ;
        }
    }
    Copier après la connexion

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

    A. aliyunedu

    B. yootk

    C. true

    D. 程序出错

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

    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) ;
        }
    }
    Copier après la connexion
    Copier après la connexion

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

    A. 10202.0

    B. 0212.0

    C. 302.0

    D. 1020.210

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

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

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

    A. 01234

    B. 10

    C. 14

    D. 25

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

    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 ;
        }
    }
    Copier après la connexion

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

    A. 35

    B. 8

    C. 28

    D. 12

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

    public class Demo {public static void main(String args[]) {char c = &#39;A&#39; ;int num = 10 ;switch(c) {case &#39;B&#39; :
                    num ++ ;case &#39;A&#39; :
                    num ++ ;case &#39;Y&#39; :
                    num ++ ;break ;default :
                    num -- ;
            }
            System.out.println(num) ;
        }
    }
    Copier après la connexion

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

    A. 11

    B. 13

    C. 12

    D. 10

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

    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) ;
        }
    }
    Copier après la connexion
    Copier après la connexion

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

    A. 6

    B. 0

    C. 程序错误,死循环

    D. 45

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

    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) ;
        }
    }
    Copier après la connexion
    Copier après la connexion

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

    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 = 1if ((i == (++j)) && ((i++) == j)) { // 第一个判断:j先自增1变为2后与i比较// 第二个判断:i先与j比较后再自增1,// if内为true,i = 3, j = 2i += j; // i = 5, j = 2}
    
            System.out.println("i = " + i);
        }
    }
    Copier après la connexion
  2. 如果选项A最后没有那个;,那么这道题就没有争议了

    • int b = 257;

    • byte b = 57;

    • char c = &#39;a&#39;;

    • String c = "a";

    • float f = 1.3f;

    • double f = 1.3;

    • float f =(float) 1.3;

    • double f = 1.3f;

    • A. float f = 1.3;
      1.3默认是double类型,java中基本数据类型由高级向低级转换需要强转。

    • B. char c = "a"
      java中的字符常量应该用单引号括起来,双引号括起来的为字符串。(末尾少了个分号)

    • C. byte b = 257
      byte的范围是 -128~127。(末尾少了个分号)

    • 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为falseSystem.out.println(flag ? "aliyunedu" : "yootk") ;
        }
    }
    Copier après la connexion

    &&(短路与)一旦前面的条件为false,就会跳过后面的条件。
    X = 条件 ? A : B为三元表达式,与

    if (条件) {
        X = A;
    } else {
        X = B;
    }
    Copier après la connexion

    意思相同

  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) ;
        }
    }
    Copier après la connexion
    Copier après la connexion

    *的优先度高于+,故优先计算乘法,随后从左往右依次进行+。当有字符串参与+运算时,加法变为字符串拼接,结果为字符串。故最后为字符串"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 ;
        }
    }
    Copier après la connexion

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

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

    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) ;
        }
    }
    Copier après la connexion
    Copier après la connexion

    感觉这道题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) ;
        }
    }
    Copier après la connexion
    Copier après la connexion

    Semblable à la question précédente, mais la valeur initiale de i devient 0 et la suite if devient break. Puisque le reste de 0 à 3 est 0, nous sortons directement de la boucle et sortons la valeur de la somme 0.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal