![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java基础面试题
文章平均质量分 50
细说java面试题,给你不一样的高度
杨·戬
孤舟蓑笠翁 独钓寒江雪
展开
-
java面试之ThreadLocal问题
假设key是弱引用的情况下,ThreadLocal引用没了,map 里面是一个弱引用指向ThreadLocal,那么就表明ThreadLocal会马上被垃圾回收器给回收掉,他一回收掉,Key就为NULL,那么我们就再也无法访问到value ,value无法被回收,会导致内存泄漏。synchronized:它的效率会低一点,因为相当于就是说,线程是排队进行访问的,就像一个教室只有一个厕所,大家都要进去上,就要排队。我们正常的引用一个对象,没有指向的时候,就会被gc掉,也就是垃圾回收器给回收掉。原创 2023-09-05 21:29:05 · 431 阅读 · 0 评论 -
Java之不通过构造函数创建一个对象
也就是说想要实现类对象的克隆,该类就必须实现这个Cloneable这个接口,才表明调用Object对象中的clone(0方法是有效的。然后有同学会想到通过反射去实现一个对象也可以,其实他也是调用了对象的构造方法,下面我们来说一下吧。反射类里面有一个Constructor类,通过里面的newInstance方法可以创建一个对象。要通过反序列化一个对象创建一个对象,必须在硬盘上存在一个序列化文件.ser。1.调用对象的clone方法,来实现一个对象的创建。3.我们可以通过反序列化去创建一个对象。...原创 2022-08-09 16:22:50 · 1834 阅读 · 0 评论 -
java面试题之构造方法问题
先来看下面这个代码能不能运行成功Demo7.java上面代码能否运成功? 当然,是可以的。来说一下TestDemo7与TestDemo7Son,是不是没有显示的构造方法,对的,这里编译器就会给这两个类提供一个默认的空参的构造方法,子类会去调用父类的无参构造方法,就比如下面Demo7.java与上面的运行原理一样,但是修饰符默认的构造方法修饰符不是public的,默认的构造函数修饰符与当前类的修饰符有关。再来说一下,如果子类用super显示调用了父类有参构造方法,就不会调用父类的无参构造方法。原创 2022-07-28 17:19:21 · 220 阅读 · 0 评论 -
java面试题之修改private属性成员变量
ok,虽然没有set接口,那么我们就想到用反射技术来获取这个类的Class对象,然后在来获取私有成员变量,在利用set方法,把这个值修改成自己想要的。一般来说,成员变量都是用private来修饰,也就是说外部是访问不了的,无法直接修改,一般就是提供set与get接口来进行访问,比如下面这样。但是假如没有set这样一个外部接口的类呢,又改如何修改呢?或者说能不能修改呢,把类做如下修改。上面就是利用set来进行年龄的修改。...原创 2022-07-23 18:55:27 · 2000 阅读 · 0 评论 -
java面试之try-with-resources问题
我们可以看到我们把需要关闭的资源都放到try()这个括号里面去了,之前都是对异常的捕获,怎么还可以写资源语句,这就是奇妙之处,注意分号啊,最后一个资源可以不用加分号,中间的都要加分号,并且,对于java7来说,变量的声明必须放在括号里面。这个语句的作用是,确保该语句执行之后,关闭每一个资源,也就是说它确保了每个资源都在生命周期结束之后被关闭,因此,比如读写文件,我们就不需要显示的调用close()方法。这个接口也叫自动关闭资源接口.我们想要写这样的语句,必须去实现它里面的close()方法。...原创 2022-07-17 21:50:28 · 372 阅读 · 0 评论 -
java面试之获取类名的问题
上面我们就用super调用了一个getClass()方法,然后又来获取类名,这里需要注意的是super只能调用父类的非静态方法,并且不能在static方法中调用,因为super与this一样,是基于对象操作的。原来这个方法是一个final,也就是说,这个方法被其他类继承可以,但是不能被重写,因此,this.getClass与super.getClass最终调用的都是Object类中的getClass方法,而这个方法的定义是返回Object的运行时类,所以,上面会返回自己的类名而不是父类名。......原创 2022-07-17 19:28:01 · 349 阅读 · 0 评论 -
java面试题之for循环
我们常见的for循环一般如下运行结果:那么假如我们要做一个无限循环的for循环呢? 运行结果:好了,介绍一下for循环:for(初始表达式;循环判断表达式;前进步长表达式) { 循环代码体}再来说一下这几个表达式的运行顺序:1.初始表达式最先执行,并且执行一次,与循环表达式与前进步长表达式可以有关系或者没关系,我的意思假如初始表达式int i = 0;那么循环表达式不一定就是i < 10啥的,可能是j > 20,或者给一个函数返回一个值fun(2)等等,总之循环表达式满足能返回一.原创 2022-07-14 15:59:20 · 765 阅读 · 0 评论 -
java语言如何实现c语言中goto语句跳出多重循环问题
说到goto,一下子我就想到了c语言的goto跳转语句,它可以让我们直接跳出嵌套多层的循环体系,当然他更是c语言中的一个关键字,关于它在c语言中的使用,如下:goto.c运行结果: 同时我们来看一下c语言中的关键字都有哪些: 下面来说一下java,我们也来看一下它的关键字:其中我们可以到goto被java定义为了保留字,也就是说,这个单词java现在没有用,以后可能会用,所以也不能被我们使用,那么Java肯定也是无法用goto去跳出多层循环的,那么怎么来实现呢,话不多说,直接上代码:Demo2.jav原创 2022-07-13 14:36:58 · 642 阅读 · 0 评论