Java 常见面试题

1.是否可以从一个static方法内部发出对非static方法的调用
不可以调用,因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用.
而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部可以发出对非static方法的调用。
2.使用final关键字修饰一个变量时,是引用变量不能变,还是引用的对象的内容不能变?
 
写道
 
在这里我先解释下, 什么是引用变量不能变?什么是对象的内容不能变?例如下面的代码:
final StringBuffer sb = new StringBuffer("Hello");
sb = new StingBuffer("World");//这就是引用改变.sb指向了新的引用.
sb.append("Itcast");//此时sb中的内容为 "HelloItcast",这就是对象改变了.
那么在上面的代码中, 到底哪个是对的呢?
sb.append("Itcast"); 这句代码是对的,可以编译通过. 而
sb = new StingBuffer("World"); 这句代码会编译报错.
/*
错误: 无法为最终变量sb分配值
sb = new StringBuffer("World");
*/
所以说,被final关键字修饰的变量,是引用变量不能变,但是引用变量的对象中的内容是可以改变的.
 3.重载(overload)和重写override 区别
 
写道
 
verride(重写)
1、方法名、参数、返回值相同。
2、子类方法不能缩小父类方法的访问权限。
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
4、存在于父类和子类之间。
5、方法被定义为final不能被重写。
overload(重载)
1、参数类型、个数、顺序至少有一个不相同。
2、不能重载只有返回值不同的方法名。
3、存在于父类和子类、同类中。
 4.构造器Constructor是否可被override?  
 
写道
 
首先说明,构造器也就是我们所说的构造方法. 也就是方法名和类名一致的那个方法.
例如:
class Person
{
String name;
int age;

Person(){} //这个方法就是无参数的构造方法.

Person(String name, int age) //这个方法就是有参数的构造方法.
{
this.name = name;
this.age = age;
}
}

这个问题,看起来非常简单,但是很多初学者学完继承后,都认为子类可以继承父类的一切,事实上,构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload。

希望大家一定注意,不是父类所有的东西都要继承.
 5.在JAVA中如何跳出当前的多重嵌套循环?
 
写道
 
A:for(int i=0; i<10; i++){ //外循环定义标号A.
for(int j=0; j<10; j++){
System.out.println("i="+i+",j="+j);
if(j==6){
break A; //break A,就是跳到外循环处(也就是整个外循环都结束了).
}
}
}
其实到这为止,这道笔试题就做完了,这是常规做法.那么有没有非常规的呢?这正好显示下我们的编码功力.下面老师就写出另一种形式,大家看看.比如,
我们要在一个二维数组中找某个数是在哪个位置,找到后跳出.
for(int i=0;i<arr.length()&&!flag;i++)  加入flag 标志
 6.说出作用域public,private,protected,以及不写时的区别?
 
写道
 
说明:如果在修饰的元素上面没有写任何访问修饰符,则表示 默认不写。
这四个作用域的可见范围如下表所示。

  作用域 当前类 同一package 子孙类 其他package
        public       √             √                   √            √
  protected √              √                  √             ×
  默认不写 √             √                    ×             ×
  private     √              ×                   ×             ×

  备注:只要记住了有4种访问权限,4个访问范围,然后将全选和范围在水平和垂直方向上分别按排从小到大或从大到小的顺序排列,就很容易画出上面的图了。
 7.Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
 
写道
 
Math类中提供了三个与取整有关的方法:ceil、floor、round,
这些方法的作用与它们的英文名称的含义相对应,例如:

ceil的英文意义是天花板,该方法就表示向上取整,所以,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;
floor的英文意义是地板,该方法就表示向下取整,所以,Math.floor(11.6)的结果为11,Math.floor(-11.6)的结果是-12;
最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。
 8.short s1 = 1;  s1 = s1 + 1;有什么错? short s1 = 1;  s1 += 1;有什么错?
写道
对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型(byte,short,char 这三种类型在参与运算时,会自动转换成int类型),所以最后的结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误(因为int类型转换成short类型可能会损失精度,计算机只要认为可能出错,这哥们就会提示给我们,它还是比较尽职的)。

对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,也就是类型自动提升,因此可以正确编译。
 9."=="和equals方法究竟有什么区别?
 
写道
 
答案:对于比较基本数据类型来说,==比较的就是数值的大小,例如:
int m = 2;
int n = 3;
boolean b = m==n;
System.out.println(b);//结果为false,因为2和3不等吗.
但是对于引用类型数据来说,==和equals就有些不同了,在大多数类中的equals方法调用的依然是==,但比较的是两个引用变量的地址是否相同.
例如:
int[] arr1 = {1,2,3};
int[] arr2 = {1,2,3};
System.out.println(arr1==arr2);//结果是false,因为比较的是地址值.
System.out.println(arr1.equals(arr2));//结果还是false,因为比较的还是地址值.其实调用的方法还是"=="
但是在字符串String中就不一样了,因为String中的equals方法被重写了,它比较的是两个字符串对象中的内容是否相同.
例如:
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1==s2);//结果是false,因为比较的是地址值.
System.out.println(s1.equals(s2));//结果是true,因为比较的是对象中内容是否相同.
 10.对两个整数变量进行互换,要求在不使用第三方变量的前提下?
 
写道
 
在这里我把思考的过程和演算的过程都写下,面试的时候,你们只需要写下最终
的结果就可以了。
1,我们知道一个数异或另一个数2次,结果还是这个数。举例:2^3^3=2.这个大家明白吧,应该没问题.同样,3^2^3=2,其实我只是把顺序换了下位置,这个都不难理解.
2, 题目中不是说两个整数变量吗?那么我们就设两个整数变量.比如: int x = 2; int y = 3;现在我们就把这两个数用异或的方法进行数值换位.
3,由于我们人的思想习惯是xy的顺序,那么我们就先来换位x,于是有:
x = x^y;//此时x=2^3.这时再算出y,于是有
y = x^y;//相当于2^3^3=2,这时的y=2,我们完成了一个换位.于是开始换x.
此时x^y=2^3^2=3,那么我们就把这个值赋给x,那么就是
x = x^y;//相当于2^3^2=3.这时x=3;


a=a+b;
b=a-b;
a=a-b;
 11.java语言中有没有goto关键字?
写道
其实goto这个词是C语言中的,goto语句通常与条件语句配合使用,可用来实现条件转移, 构成循环,跳出循环体等功能。而在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。但是在java语言中,goto这个词只是作为了保留字,还没有使用。那是因为java语言讲究简单,方便。
 12.静态变量和实例变量的区别?
写道
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。
静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。
总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

不要认为加了static的变量就可以一定被非static成员访问,因为不同的代码块中变量的生命周期是不一样的
 
 
20道Java常见面试题 多态是指同一个方法在不同对象上表现出不同的行为。Lambda表达式是Java 8引入的新特性,用于简化匿名函数的书写。用于声明变量,确保不同线程对变量的修改对其他线程可见,防止指令重排。,字符串的值一旦创建就不能被修改。垃圾回收是JVM自动回收不再使用的对象的内存,以避免内存泄漏。用于同步代码块或方法,确保同一时间只有一个线程访问共享资源。线程池是为了复用线程资源,避免频繁创建和销毁线程,提高性能。反射是一种在运行时检查或修改类和对象的方法。块用于清理资源,无论是否发生异常都会执行。 阅读详情

相关推荐

java 常见面试题(一)

又到年底了,很多童鞋可能要跳槽,找工作,面试,这里给大家分享一些差常见java面试题,仅供大家参考。

butterfly_onfly的专栏 680

Java 面试(一) | Java基础部分

文章目录Java面试基础部分1.JDK和JRE的区别2.==和equals的区别3.两个对象equals比较为true,但却可以有不同的hashcode,对吗?4.String类相关5.&和&&的区别6.java中如何跳出多重嵌套循环7.重载和重写的区别?8.为什么不能根据返回类型来区分方法重载9.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里是值传递还是引用传递?10.char型变量中能否存储一个中文汉字,为什么?11.抽象(abs

離陸する的博客 1170

VS2022配置Qt6

VS2022配置QT教程

Life is a struggle ! 6361

Java集合常见面试题

Java集合常见面试题。

TV男神 1458

海康VisionMaster图形定位实战:十字形Mark点精准匹配技巧

本文深入解析了海康VisionMaster图形定位模块在工业自动化中实现十字形Mark点精准匹配的实战技巧。文章从ROI设置、核心参数调优(如定位方式、尺度模式、对比度阈值)到工业场景应用与避坑指南,系统性地分享了提升匹配成功率和稳定性的关键步骤,帮助工程师应对复杂现场环境,实现高效、可靠的视觉定位。

weixin_29285605的博客 261

STM32F103C8T6实战:从零搭建三相SPWM逆变器(附MATLAB仿真、PCB、源码)

本文详细介绍了如何使用STM32F103C8T6单片机从零搭建三相SPWM逆变器,涵盖硬件选型、PCB设计、SPWM算法实现及MATLAB仿真。项目提供完整的工程文件,包括源码、PCB设计和仿真模型,适合电子工程师和学生进行实践学习。通过本教程,读者可以掌握逆变器设计的核心技术和调试方法。

weixin_30458043的博客 455

Java集合常见面试题汇总

Java集合常见面试题汇总 1. 写出 List、Set、Map的各自特点 List接口: 存储任意类型的Object对象,有序、有下标、元素可以重复; 下标范围:0~元素个数-1 0~size()-1 Set集合: 无序、无下标、元素内容不允许重复; Map集合: (1) Map以键值对形式存储(key-value)。 (2) 键:无序、无下标、元素不允许重复(唯一)。 (3) 值:无序、无下标、元素内容允许重复。 2. 写出 ArrayList 和 Vector的区别 a. ArrayList:

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 955

数据中心光模块升级实录:从200G QSFP56到400G QSFP-DD的踩坑指南

本文记录了数据中心从200G QSFP56升级至400G QSFP-DD光模块的完整实战经验。文章深入剖析了升级过程中面临的兼容性、链路预算、布线、散热与功耗管理等核心挑战,并提供了具体的解决方案与排坑指南,为高速网络升级提供了宝贵的实践参考。

butter的博客 481

Java注解常见面试题

Java 注解(Annotation)在现代 Java 开发中广泛应用,尤其是在框架(如 Spring、Hibernate)和工具库(如 JUnit)中。在面试中,面试官通常会考察你对注解的理解、应用及其底层实现。Java 注解是 Java 5 引入的元数据机制,可以为代码提供额外的信息,编译器或运行时环境可以读取这些信息,并据此进行相应处理。是的,注解的属性可以有默认值。:定义注解的生命周期,决定注解在哪个阶段可用(编译时、类加载时或运行时)。:指定注解可以应用的元素类型(如类、方法、字段等)。

weixin_45476869的博客 760

行人重识别技术(Re-ID)概述、研究现状以及相关数据集下载

ReID技术概述什么是ReID一般流程Re-ID特点研究现状难点数据集reid常用数据集以及下载链接评价指标实现思路研究方式基于表征学习基于度量学习基于局部特征全局特征切片姿态基于视频序列RQEN基于GANCamStyleDG-NetGAN总结对比未来方向建议文献 什么是ReID 行人重识别是指利用计算机视觉技术,判断在不同时间段、不同监控下出现的行人图像是否属于同一人员的技术。行人重识别是最近几年在视频分析领域下热门的研究领域,可以看做是人脸识别应用的拓展。现在大街上的监控较多,由于设备质量、成像光线、.

留缘的博客 1万+

实战复盘:如何用ATE(自动测试设备)搞定一颗MCU的功能测试全流程

本文详细解析了如何利用ATE(自动测试设备)完成MCU功能测试的全流程,涵盖测试需求分析、测试向量生成、ATE测试程序开发及调试实战。通过真实案例分享,帮助工程师高效解决芯片测试中的常见问题,提升Functional Test的准确性和效率。

weixin_30872157的博客 485

最新Java面试题,常见面试题及答案汇总

154.kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理?165.一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几?3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?29.在 Queue 中 poll()和 remove()有什么区别?46.线程池中 submit()和 execute()方法有什么区别?

m0_74825718的博客 1159

【开关电源篇】整流及其滤波电路的工作原理和设计指南-超简单解读

半波整流是一种利用二极管的单向导通特性,将交流电转换为直流电的基础电路。它通过“切除”交流电的半个周期,仅保留另外半个周期来实现整流。1 开关电源超快学习思路点击跳转1.1开关电源的原理、结构和实物入门篇-超简单解读点击跳转1.2开关电源的EMI输入电路-超简单解读点击跳转倍压整流适用于需要高电压、小电流的特殊场合,通过电容充放电实现电压倍增。

2301_81299416的博客 2928

20道常见的Java面试题,你一定有遇到过

Java中的集合框架是指一组用于存储数据的类和接口。Java中的集合框架包括List、Set、Map等接口和实现类,常用的集合类有ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等。- 反射是Java语言的一种特性,可以在运行时动态地获取类的信息,包括类的属性、方法、构造器等,并可以在运行时调用这些方法。基本数据类型包括byte、short、int、long、float、double、char、boolean,引用数据类型包括类、接口、数组等。

m0_74823683的博客 728

uniapp [安卓苹果App端] - 详细实现手机蓝牙连接打印机及打印票据小票/标签/面单/热敏小票订单/快递单等通用兼容适配解决方案,Uniapp对接蓝牙打印机支持各种主流品牌及打印指令,强悍插件

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果app,蓝牙打印机,uniappAPP实现通过蓝牙连接打印机打印,uniapp蓝牙连接打印机,安卓蓝牙打印插件,蓝牙打印机,蓝牙ble低功率及高功率打印机小票、标签、面单打印,手机PDA蓝牙打印插件,连接蓝牙打印机,蓝牙连接,打印文本、图片、条码、二维码,兼容斑马打印机、佳博打印机,TSC打印机,免费蓝牙打印机组件,蓝牙打印条码,蓝牙打印机连接,热敏蓝牙打印机,便携式打印机,打印机搜索不到,连接失败,发送打印命令

🏆 前端领域优质创作者 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

常见的Java面试题

在令牌桶算法中,假设我们有一个大小恒定的桶,这个桶的容量和设定的阈值有关,桶里放着很多令牌,通过一个固定的速率,往里边放入令牌,如果桶满了,就把令牌丢掉,最后桶中可以保存的最大令牌数永远不会超过桶的大小。当有请求进入时,就尝试从桶里取走一个令牌,如果桶里是空的,那么这个请求就会被拒绝。如果我们设置的流量峰值是 permitsPerSecond=N ,也就是每秒钟的请求量,计数器算法会出现 2N 的流量,漏桶算法会始终限制 N 的流量,而令牌桶算法允许大于 N,但不会达到 2N 这么高的峰值。

可小辉的博客 1705

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Java常见面试题

以下是一些常见的 Java 面试题分类及示例,涵盖基础知识、面向对象、集合框架、多线程、JVM 等核心内容。

qq_18421479的博客 545

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java常见面试题及答案持续更新中

本文是在网络上收集的常见java面试题,包括java基础、rabbitmq、jvm、redis、mysql、spring boot等,本文目录持续更新,欢迎收藏。 Java 常见面试题及答案(一) Java 常见面试题及答案(二) Java 常见面试题及答案(三) Java 常见面试题及答案(四) Java 常见面试题及答案(五) Java 常见面试题及答案(六) Java 常见面试题及答案(七) Java 常见面试题及答案(八) Java 常见面试题及答案(九) Java 常见面试题及答案(十) Java

安安静静敲代码 305

Java基础常见面试题总结(上)

Java作为一门经典的编程语言,无论是在企业级应用开发、Android开发还是大数据领域,都有着广泛的应用。对于Java开发者来说,掌握Java基础知识是进入这个行业的敲门砖。本文将总结一些Java基础的常见面试题,帮助求职者更好地准备面试。

Amsssssssssss的博客 927

Java IO 模型常见面试题总结

I/O 一直是很多小伙伴难以理解的一个知识点,这篇文章我会将我所理解的 I/O 讲给你听,希望可以对你有所帮助。

m0_71539493的博客 991

近期JAVA常见的面试题

近期常见的JAVA面试题 近期,博主一直在面试,面试的也是1-3年开发的岗位,坐标上海,前前后后面试了20家左右,有大公司, 有小公司.和大家分享常见的面试题. java基础 一 : hashmap和hashtable的区别 一. HashMap可以接受null键和值,HashTable不行 二. HashTable是线程安全的,通过synchronized来保证,而HashMap线程不安全 三...

qq_43070318的博客 405

java常见基础面试题

字节码就是jvm能够理解的代码(.class文件),不面向任何特定的处理,只面向虚拟机。好处就是在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点Java 程序从源代码到运行的过程如下图所示因为解释器这种执行方式较慢,有些代码和方法经常被调用(热点代码),所以就有了JIT(即时编译),当JIT编译之后会将字节码对应的机器码存下来,下次直接使用,机器码的运行效率高于java解释器,所以说java是编译与解释共存的语言JDK、JRE、JVM、JIT 这四者的关系如下图所示。

七禾页话的博客 1323

Java基础常见面试题及详细答案(总结40个)

最近看到网上流传着各种面试经验及面试题,往往都是一大堆技术题目贴上去,但是没有答案。 为此我业余时间整理了40道Java基础常见的面试题及详细答案,望各路大牛发现不对的地方不吝赐教,留言即可。 八种基本数据类型的大小,以及他们的封装类 引用数据类型 Switch能否用string做参数 equals与==的区别 自动装箱,常量池 Object有哪些公用方法 Java的四种引用,强弱软虚,用到的场景 Hashcode的作用 HashMap的hashcode的作用 为什么重载hashCod

ayouki123456的博客 4万+
上一篇: java回调函数
下一篇: RunTime.getRunTime().addShutdownHook用法
weixir123
博客等级 码龄16年 1粉丝 207原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值