Java学习:今日成果,明日挑战

阅读指南:[题目] - 精选摘要

题目

选自菜鸟教程

1.面向对象编程意味着

A. 根据分析问题时发现的对象设计应用程序

B. 在编写程序并制定测试计划之前编写算法

C. 编写由Java类组成的程序

面向对象编程(Object-Oriented Programming,简称OOP)确实意味着根据分析问题时发现的对象来设计应用程序。在面向对象的范式中,现实世界的问题和实体被抽象成"对象",这些对象具有状态(属性)和行为(方法)。通过封装、继承和多态等特性,面向对象编程提供了一种结构化的方式来组织代码,使得软件开发更加模块化、可复用和易于维护。因此,选项A正确地描述了面向对象编程的核心理念。


2.以下哪项不是 Java 关键字?

A. static

B. try

C. Integer

D. new

选项C,"Integer",不是Java关键字。在Java中,"Integer"是包装类的名字,它用于将基本类型int包装成对象。而static、try和new都是Java语言的关键字,分别用于声明静态成员、定义异常处理的try块和创建新对象。因此,正确答案是C。


3.基础数据类型在堆栈上分配?

A.是

B. 否

A基本类型类型以及对象的引用变量是存储在栈内存中 ;而对象本身的值或者说 new 创建的对象和数组是存储在堆内存中。


4.以下代码将导致:

int num = 6.7

A. 编译错误

B. 运行期错误

C. num 是 6.7

D. num 为 6

选项A正确。在Java中,将一个浮点数(如6.7)直接赋值给一个整数变量(如int类型)会导致编译错误。这是因为Java的类型检查系统会阻止这种可能造成数据丢失的隐式类型转换。如果想要将浮点数赋值给整数变量,需要进行显式的类型转换,代码应该写为:

java 复制代码
double numDouble = 6.7;
 int num = (int) numDouble;

在这种情况下,6.7会被转换为整数6,小数部分会被舍弃,但这需要程序员显式地进行类型转换操作。因此,原代码int num = 6.7;会导致编译错误。


5.以下输出是什么 ?

java 复制代码
class TestIt
{
    public static void main ( String[] args )
    {
        int[] myArray = {1, 2, 3, 4, 5};
        ChangeIt.doIt( myArray );
        for(int j=0; j<myArray.length; j++)
            System.out.print( myArray[j] + " " );
    }
}
class ChangeIt
{
    static void doIt( int[] z ) 
    {
        z = null ;
    }
}

A. 1 2 3 4 5

B. 什么都不会打印出来

C. 程序将因运行时错误而停止。

D. 0 0 0 0 0

选项A正确。在这个程序中,ChangeIt.doIt(myArray);调用不会改变myArray的内容。在doIt方法中,z= null;语句只会影响z变量本身,它不会影响到main方法中myArray的引用。这是因为参数传递在Java中是按值传递的,但对于对象引用来说,传递的是引用的值。

因此,当doIt方法内部将z设为null时,这只是改变了z的值,而myArray的引用保持不变。所以,myArray的内容在方法调用前后不会发生变化,输出仍然是1 2 3 4 5。因此,正确答案是A。

6.如果我们声明:

int [] ar = {1,2,3,4,5,6};

数组ar的大小是 :

A. 0

B. 5

C. 6

D. 7

选项C正确。在Java中,数组的大小等于数组中元素的数量。对于声明int [] ar = {1,2,3,4,5,6};,数组ar包含了6个元素。因此,数组ar的大小是6。所以,正确答案是C,6。

7.Java 使用按值调用。 以下方法调用传递给程序的值是多少 ?

double[] rats = {1.2, 3.4, 5.6};

routine( rats );

A. rats 的副本

B. rats 数组元素的值

C. rats 数组的引用

D. 1.2

C选项C正确。在Java中,当传递对象(如数组)作为方法参数时,实际上传递的是对象引用的值,而不是对象本身或其内容的副本。因此,当调用routine(rats);时,rats数组的引用被传递给routine方法。这意味着在routine方法内部可以访问和修改rats数组的内容,因为它们共享同一个数组对象。因此,正确答案是C,rats数组的引用。


8.以下代码的输出是什么 ?

java 复制代码
int[] arr = new int[9];
System.out.println(arr[9]);

A. 0

B. 9

C. 错误,因为数组未初始化

D. 错误,因为索引超出范围

选项D正确。这段代码将导致错误,因为索引超出了数组的范围。在Java中,数组索引是从0开始的,所以对于int[9]类型的数组,有效的索引范围是0到8。尝试访问arr[9]将导致ArrayIndexOutOfBoundsException,这是一种运行时错误,表示尝试访问数组中不存在的元素。因此,正确答案是D,错误,因为索引超出范围。


9.以下代码输出结果为:

java 复制代码
class Main {
    public static void main(String args[]) { 
        System.out.println(fun());
    } 

    int fun()
    {
        return 20;
    }
}

A. 20

B. 0

C. 编译错误

选项C正确。这段代码会导致编译错误。问题出在fun()方法的声明和定义上。在main方法中调用的fun()方法被声明为int返回类型,但是在类Main中定义的fun()方法却没有指定返回类型,这会导致编译器无法识别fun()方法的正确签名,从而引发编译错误。正确的方法定义应该也包含返回类型,例如int fun() { return 20; }。因此,正确答案是C,编译错误。然而,为了使代码能够编译并正确运行,fun()方法应该被正确声明和定义,如下所示:

java 复制代码
class Main {
    public static void main(String args[]) { 
        System.out.println(fun());
    } 

    static int fun()
    {
        return 20;
    }
}

在这种情况下,输出结果将会是20,即选项A。但根据原始代码,由于方法定义的错误,正确答案是C,编译错误。

10.以下代码输出结果为:

java 复制代码
public class Main { 
    public static void main(String args[]) { 
       String x = null; 
       giveMeAString(x); 
       System.out.println(x); 
    } 
    static void giveMeAString(String y) 
    { 
       y = "RUNOOB"; 
    } 
}

A. RUNOOB

B. null

C. 编程错误

D. 发生异常

选项B正确。在这个程序中,giveMeAString(x);方法调用不会改变x的值。在giveMeAString方法内部,
y = "RUNOOB";只会改变方法内部的y变量,而不会影响到main方法中x的值。这是因为Java中方法参数的传递是值传递,对于引用类型,传递的是引用的值,而不是引用的对象本身。因此,当在方法内部修改局部变量时,这种修改不会反映到调用方法的参数上。在main方法中,x的值在调用giveMeAString前后都是null

因此,当执行System.out.println(x);时,输出结果为null。所以,正确答案是B。

总结

巩固了Java基础概念。选择题是检验学习成果的好方法,它们能帮助我识别并加强理解中的薄弱环节。明天见,期待带着新的问题和挑战回来。

相关推荐
XiaoLeisj44 分钟前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
paopaokaka_luck1 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
dayouziei1 小时前
java的类加载机制的学习
java·学习
API快乐传递者1 小时前
淘宝反爬虫机制的主要手段有哪些?
爬虫·python
Yaml43 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~3 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616883 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
阡之尘埃3 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
aloha_7893 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
记录成长java4 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet