【java】java面试题与题解

1.下列代码的输出是什么

public static void main(String[] args) {int a;a = 6;System.out.print(a);System.out.print(a++);System.out.print(a);
}

答案:667

解析:a++运算首先将a进行对应操作(即输出),然后将a的值+1。所以输出仍为6,但a的值变为7。

2.String s = new String("xyz");创建了几个StringObject

答案:两个

解析:在执行这行代码时,首先会检查字符串常量池中是否已经存在"xyz"这个字符串。如果有,则指向字符串所在地址,如果没有,则创建字符串常量,并放入字符串常量池中。当遇到new关键字,还会在堆内存中创建一个新的String对象。

3.下列代码的输出是什么

public static void main(String[] args) {StringBuffer a = new  StringBuffer("A");StringBuffer b = new  StringBuffer("B");change(a, b);System.out.println(a+","+b);
}public static void change(StringBuffer x,StringBuffer y) {x.append(y);y = x;
}

答案:AB,B

解析:首先main方法入栈,a,b在堆内存当中开辟两块内存空间。然后change方法入栈,x指向栈内存当中a的地址,y指向栈内存当中b的地址。append()方法将"B"添加到"A"所在的堆内存当中,y=x使得y指向x所指向的位置(并不改变b的指向)。

4.下列说法正确的是

A:final可以用来修饰类、方法、变量

B:finally是java代码保证重点代码一定要执行的一种机制

C:变量被final修饰后不能再指向其他对象,但可以重写

D:finalize设计目的是保证对象在被垃圾收集完成特定资源回收

答案:ABD

解析:final修饰类不能被继承,修饰方法不能被重写,修饰变量不能改变其值。

5.局部内部类可以用那些修饰符修饰

A:public

B:private

C:abstract

D:final

答案:CD

解析:局部内部类是放在代码块或方法中的,不能有访问控制修饰符,且不能用static修饰。

6.执行下列代码会发生什么

public class Main {static {int x = 5; }static int x,y;   public static void main(String[] args) {x--;   myMethod();System.out.println(x+y+ ++x);}public static void myMethod() {y = x++ + ++x;}
}

答案:输出3
解析:  static{}是一个代码块,代码块中的变量属于局部变量。static修饰的代码块在main方法之前执行,首先代码块入栈,表达完之后立刻出栈。static修饰的xy存储在方法区当中,默认值为0。然后main方法入栈,首先执行x--(x = -1)。然后myMethod方法入栈,首先x++(先赋值再递增,x=0),然后++x(先递增再赋值,x=1),y = -1 + 1 = 0。最后输出1 + 0 + 2 = 3。

7.下面哪些赋值语句是正确的

A:long text = 012;

B:float t = -412;

C:int other = (int) true;

D:double d = 0x12345678;

E:byte b = 128;

答案:ABD

解析:八进制的数据由0开头;在java中,布尔类型不能直接转化为整数类型;0x开头的是十六进制,由十五个字符表示,分别为123456789ABCDEF;byte类型的数据范围是[-128,127]。

8.以下代码的执行结果是什么

class Base {public Base(String s) {System.out.println("B");}
}
public class Dervid extends Base {public Dervid(String s) {System.out.println("D");}public static void main(String[] args) {System.out.println("C");}
}

答案:编译错误

解析:程序先加载,后创建对象。加载顺序:首先加载父类,然后才加载子类。创建顺序:先创建父类对象,再创建子类对象。子类当中有构造器,父类当中也有,并且子类需要给父类传递参数。在构造器当中是必须传值的。继承的本质:代码的复用。子类是可以使用父类都方法和变量的,如果子类先创建对象,那么其他程序就无法在第一时间获取到父类的方法和变量了。当父类需要传值时,可以使用super关键字给父类传值。

9.关于java继承的特点,下列说法正确的是

A:使类的定义复杂化

B:java只支持单继承,不可多继承,但可以通过实现接口来达到多继承的目的

C:子类继承父类的所有成员变量和方法,包括父类的构造方法

D:不可以多层继承,既一个类不可以继承一个类的子类

答案:B

解析:接口的目的就是弥补单继承的缺陷,使java达到多继承的效果。子类不能继承所有成员变量和方法(只能继承非private修饰的,而且需要判断子类和父类是否同包)。并且子类不能继承父类的构造器,继承的本质是代码的复用,子类根本调用不到父类的构造器。java确实不可多层继承,java也确实不可以继承一个类的子类,但二者不能用一方解释另一方。

10.关于final关键字,下列说法正确的是

A:如果修饰局部变量必须初始化

B:如果修饰类,则该类只能被一个子类继承

C:如果修饰方法,则该方法不能在子类当中重写

D:如果修饰方法,则该方法所在的类不能被继承

答案:C

解析:初始化(赋值)。修饰一个局部变量完全可以不赋值,但是它不能被使用,只有赋值之后才可以使用它;修饰一个全局变量必须赋值。final修饰类不能被继承,修饰方法不能被重写,修饰变量不能改变其值。对于全局变量,我们可以在任何方法当中对他进行使用。只有在方法入栈的时候,局部变量才有自己的内存空间。而全局变量在创建的时候就在堆内存当中有自己的内存空间。

11.下列说法正确的是

A:在类方法当中可以用this来调用本类的方法

B:在类方法当中调用本类的类方法可以直接调用

C:在类方法当中只调用本类的方法

D:在类方法中绝对不能调用实例方法 (new 对象)

答案:B

解析:this代表当前对象,类方法是属于类的,有类不一定有对象。static修饰的方法是属于类的,因此this不能出现在static修饰的方法当中。

12.关于java异常处理机制的叙述有哪些是正确的

A:catch部分捕捉到异常情况时,才会执行finally部分

B:当try区段的程序发生异常的时候,才会执行catch区段的程序

C:在try区段不论程序是否发生异常,都会执行fianlly部分

D:以上都是

答案:BC

解析:当try区段的程序发生异常的时候,才会执行catch区段的程序。在try区段不论程序是否发生异常,都会执行fianlly部分

13.下列说法正确的是

A:在类当中定义的变量称为类的成员变量,在别的类当中可以直接使用

B:局部变量的作用范围仅仅在定义它的方法内,或者在定义它的控制流块中

C:使用别的类的方法只需要引用方法名即可

D:只要没有定义不带参数的构造函数,JVM都会为类生成一个默认的构造函数

答案:B
解析:类的成员变量能否在其他类中直接使用取决于变量的访问修饰符。

14.下列说法错误的是

A:Float是一个类

B:Float在java.lang包中

C:Float a = 1.0 是正确的赋值方法

D:Float a = new Float(1.0)是正确的赋值方法

答案:C

解析:Float是一个包装类,给Float类型的变量赋值需要在堆内存当中new一块内存空间。

15.java 反射机制主要提供了以下哪些功能

A:在运行时判断一个对象所属的类

B:在运行时构造一个类的对象

C:在运行时判断一个类所具有的成员变量和方法

D:在运行时调用一个对象的方法

答案:ABCD

解析:反射可以通过对象名获取类名,反射的作用是获取类信息。同时,反射还可以创建对象、调用方法。

16.下列说法错误的是

A:数组是一种对象

B:数组属于原生类

C:int num = []{1,2,3,4}

D:数组的大小可以任意改变

答案:BCD
解析:整形数组的定义方式:int[] arr = new int[3];  int[] arr = new int[]{0,1,2};  int[] arr = {0,1,2};。数组的大小是固定的。

17.下列代码的运行结果是什么

public class Main {public static void main(String[] args) {String s;System.out.println("hello" + s);}
}

答案:编译报错
解析:我们看三者的区别

String s = null;  //s 有指向,指向空

String s = "";  //s 有指向,指向堆内存当中的一块内存空间,只不过空间中什么都没有。

String s;  //s 没有指向

 

18.下列代码的运行结果是什么

public class Main {private String name;private int age;public Student(String name,int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + "]";}public static void change(Student s1, Student s2){Student temp = new Student("王五",20);temp.name = s1.name;s1.name = s2.name;s2.name = temp.name;}public static void main(String[] args) {Student zhangsan = new Student("张三", 18);Student lisi = new Student("李四", 20);Student.change(zhangsan, lisi);System.out.print(zhangsan.toString());System.out.print(lisi.toString());}
}

答案:Student [name=李四, age=18]Student [name=张三, age=20]

​​​​​​​

19.下列选项哪些是正确的

A:所有的java异常错误都是java.lang.Exception 包括java.lang.RuntimeException

B:通过try catch finally语句finally无论发生什么异常都会得到执行

C:Java中所有数据都是对象

D:Java语言是跨平台的,无论通过那个版本编写的java程序,都能在所在的java平台当中运行

答案:B
解析:异常错误包括异常(Exception)和错误(Error)。java当中并非所有数据都是对象,例如:基本数据类型int,因为java是面向对象的,有些时候我们用包装类代替基本数据类型,如用Integer代替int。

20.以下代码的运行结果是什么

class Two{Byte x;
}
public class Student {public static void main(String[] args) {Student student = new Student();student.start();}void start() {Two two = new Two();System.out.print(two.x +"  ");Two two2 = fix(two);System.out.println(two.x + " "+two2.x);}Two fix(Two tt) {tt.x = 42;return tt;}
}

答案:null 42 42
解析:第一步main方法入栈,定义一个student在栈内存中。然后start方法入栈,并在栈内存当中new了一个two对象。x是Byte类型的,Byte是一个包装类,x的默认值是null。two2调用了fix方法,fix方法入栈,two2和two指向相同的地址(tt)。tt.x = 42,此时x的值被修改为42。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/11018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云器Lakehouse:Multi-Cluster弹性架构如何实现湖上高并发低延迟分析

导读 在当今快速发展的大数据时代,数据平台的性能和效率对于企业来说至关重要。云器Lakehouse的Multi-Cluster弹性架构为我们提供了一种全新的视角,以应对数据湖上高并发和低延迟分析的挑战。本文将深入探讨云器Lakehouse如何通过其独特的技术理念和架构…

鸿蒙开发学习:初探【ArkUI-X】

ArkTS 是华为自研的开发语言。它在TypeScript(简称TS)的基础上,匹配 ArkUI 框架,扩展了声明式 UI 、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨端应用。 ArkUI-X 进一步将 ArkUI 扩展到了多个 OS 平台…

线程同步--条件变量,信号量

生产者和消费者模型 案例 /*生产者消费者模型&#xff08;粗略的版本&#xff09; */ #include <stdio.h> #include <pthread.h> #include <stdlib.h> #include <unistd.h>// 创建一个互斥量 pthread_mutex_t mutex;struct Node{int num;struct Node …

js的桶排序

桶排序&#xff08;Bucket Sort&#xff09;是一种分布式排序算法&#xff0c;它将元素分散到一系列桶中&#xff0c;然后对每个桶中的元素进行排序&#xff0c;并将所有的桶合并起来得到最终的排序结果。桶排序适用于输入的元素均匀分布在一个范围内的情况&#xff0c;它的时间…

DELL T630服务器iDRAC分辨率调整办法

对于Dell T630服务器的iDRAC分辨率调整&#xff0c;您需要登录到iDRAC的Web界面。以下是详细的步骤&#xff1a; 登录iDRAC&#xff1a;在浏览器中输入iDRAC的IP地址&#xff0c;然后使用用户名&#xff08;通常是“root”&#xff09;和密码登录。 导航到虚拟控制台&#xff…

Java中数组的特点、弊端与集合框架的使用

Java中数组的特点、弊端与集合框架的使用 在Java编程中&#xff0c;数组和集合框架&#xff08;Collections Framework&#xff09;都是用于存储数据的重要工具。然而&#xff0c;它们各自有其特点和适用场景。对于初学者来说&#xff0c;理解它们之间的区别和如何正确使用它们…

【C++】手搓读写ini文件源码

【C】手搓读写ini文件源码 思路需求&#xff1a;ini.hini.cppconfig.confmian.cpp 思路 ini文件是一种系统配置文件&#xff0c;它有特定的格式组成。通常做法&#xff0c;我们读取ini文件并按照ini格式进行解析即可。在c语言中&#xff0c;提供了模板类的功能&#xff0c;所以…

C++组合类

类的数据成员不但可以是基本类型&#xff0c;也可以是其它类的对象。 组合类就是指一个类包含其他类的对象作为该类的数据成员。 当组合类创建对象时&#xff0c;其中包含的各个数据成员对象应首先被创建。因此&#xff0c;在创建类的对象时&#xff0c;既要对本类的基本…

NumPy库与PyTorch库的异同点

目录 1.单位的创建和操作 1.创建 2.形状变换 2.数学和统计操作 1.矩阵乘法 2.广播 3.统计计算 3.GPU支持 4.在深度学习中的作用 5.应用范围 NumPy库为数组服务&#xff0c;PyTorch库为张量服务&#xff0c;这是最本质的区别。 1.单位的创建和操作 1.创建 NumPy:使…

三位球形模型应用

计算机图形学&#xff1a;三维球体模型可以用于建立真实感的三维场景&#xff0c;如游戏场景、建筑模型等。 工业设计&#xff1a;三维球体模型可以用于工业设计中的产品造型设计、表面细节设计等。 地球科学&#xff1a;三维球体模型可以用于地球科学领域中的地球内部结构建…

长安汽车:基于云器 Lakehouse 的车联网大数据平台建设

近年来随着智能汽车行业的迅速发展&#xff0c;数据也在呈爆炸式增长。长安大数据平台承接了长安在生产上大部分流量应用及日常生产业务应用。本文将分享长安汽车在车联网场景下大数据平台建设面临的一些挑战和具体落地的实践。 主要内容如下&#xff1a; 1. 背景介绍 2. 长…

Java中使用Comparator接口实现定制排序与对比

Java中使用Comparator接口实现定制排序与对比 在Java中&#xff0c;当我们需要对对象集合进行排序时&#xff0c;除了使用Comparable接口实现自然排序外&#xff0c;还可以使用Comparator接口来实现定制排序。Comparator接口允许我们为某个类的实例定义一种或多种比较方式&…

android图标底色问题,debug与release不一致

背景 在android 8&#xff08;sdk 26&#xff09;之前的版本&#xff0c;直接使用图片文件作为图标&#xff0c;开发时比较容易控制图标&#xff0c;但是不同的安卓定制版本就不容易统一图标风格了。 在android 8及之后的版本&#xff0c;图标对应的是ic_launcher.xml&#x…

【iOS】KVO

文章目录 前言一、KVO使用1.基本使用2.context使用3.移除KVO通知的必要性4.KVO观察可变数组 二、代码调试探索1.KVO对属性观察2.中间类3.中间类的方法3.dealloc中移除观察者后&#xff0c;isa指向是谁&#xff0c;以及中间类是否会销毁&#xff1f;总结 三、KVO本质GNUStep窥探…

基于51单片机的遥控开关仿真

基于51单片机的遥控开关设计 &#xff08;仿真&#xff0b;程序&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 本课题研究的是一款遥控开关&#xff0c;采用51单片机进行发射电路与接收电路的设计&#xff0c;发射电路由单片机最小系统及四个按键构成&am…

经典笔试题:快速排序 计数排序

Problem: 912. 排序数组 思路 &#x1f468;‍&#x1f3eb; 三叶题解 &#x1f496; AC&#xff1a;计数排序 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) class Solution {public int[] sortArray(int[] nums) {int max -50001, min 50001;for (…

【半个月我拿下了软考证】软件设计师高频考点--系统化教学-关系模式

&#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;软件设计师考点暴击 ⭐&#x1f170;️进入狂砍分⭐ ⭐软件设计师高频考点文档&#xff0c; ⭐软件设计师高频考点专栏 ⭐软件设计师高频考点⭐ &#x1f3b6;&#xff08;A) 考点1,关系模式 考点&#xff1a; 三个模式相…

【JVM基础篇】类加载器分类介绍

文章目录 类加载器什么是类加载器类加载器的作用是什么应用场景类加载器的分类启动类加载器用户扩展基础jar包 扩展类加载器和应用程序类加载器扩展类加载器通过扩展类加载器去加载用户jar包&#xff1a; 应用程序加载器 Arthas中类加载器相关功能 文章说明 类加载器 什么是类…

[C++核心编程-01]----C++内存四区详细解析

目录 前言 正文 01-内存区域简介 02-全局区 03-栈区 04-堆区 05-new操作符 总结 前言 当程序运行时&#xff0c;操作系统会为程序分配一块内存空间&#xff0c;这块内存空间被划分为不同的区域&#xff0c;每个区域有其独特的作用…

赶紧收藏!2024 年最常见 100道 Java 基础面试题(四十二)

上一篇地址&#xff1a;赶紧收藏&#xff01;2024 年最常见 100道 Java 基础面试题&#xff08;四十一&#xff09;-CSDN博客 八十三、OSI的七层模型都有哪些&#xff1f; OSI&#xff08;Open Systems Interconnection&#xff09;参考模型是一个七层的网络通信模型&#xf…