java面试| 精选基础题(3)
每天进步一点点,距离大腿又近一步!
阅读本文大概需要6分钟
系列文章
java面试| 精选基础题(1)
java面试|精选基础题(2)
1.float f=3.4;是否正确?
答:不正确,编译无法通过。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4
; 或者写成float f =3.4F;
。(推荐阅读:java”小心机”(1)【资源彩蛋!】第4点类型转换)
2.+=的隐式转换
例1:short s1 = 1; s1 = s1 + 1;有错吗?例2:short s1 = 1; s1 += 1;有错吗?
对于例1,编译不通过。由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。(相关阅读:java”小心机”(1)【资源彩蛋!】第5点类型提升)
对于例2,可以正确编译.因为s1 += 1;相当于s1 = (short)(s1 + 1);编译器会自动隐式直接将+=运算符后面的操作数强制装换为前面变量的类型。
3.try{}里有一个return语句,代码执行顺序如何?
public class ReturnInTry { public static void main(String[] args){ System.out.println(test()); } static public String test(){ String str = "return1"; try{ return str; }finally { str = "return2"; System.out.println("finally"); } }}
输出:
finallyreturn1
由此可见,finally代码块中的代码会在return语句前执行,但为什么finally代码块中的str = "return2";
未生效呢?
其实它这样执行的:当try中含有return语句且存在finally代码块,return语句不会立刻返回而是记录下该返回值
(存在某个地方),待finally代码块执行完毕后再返回该值
,所以在finally代码块中无法改变return的返回值。
4.for与foreach的区别
for 效率更高,可以在遍历的过程中对源数组或者集合进行修改
foreach 便捷简单;更安全
foreach实际上使用迭代器实现遍历的,其中会产生中间变量,导致性能的降低;foreach虽然能遍历数组或者集合,但是只能用来遍历,无法在遍历的过程中对数组或者集合进行修改
5.java的this关键字
概念
this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。用法
1.普通的直接引用
public class ThisTest { public ThisTest retutrnThis(){ //this相当于是指向当前对象本身 //返回对象本身 return this; }}
2.形参与成员名字重名时,用this来区分
public class ThisTest { private String name; public void ThisTest (String test){ this.test = test; }}
3.引用构造函数
public class ThisTest { private String name; private int count; public void ThisTest (String test){ this.test = test; } public void ThisTest (String test,int count){ //调用另一个构造函数 //只能在第一行调用,且只能调用一次 this.ThisTest(test); this.count = count; }}
6.java的super关键字
概念
this和super很像,this指向的是当前对象本身
,super指向的是当前调用对象的父类
。子类创建对象时调用构造函数,会隐式调用
父类的无参构造方法
,创建一个子类对象的同时,该子类对象
还包含了一个父类对象
。该父类对象在子类对象内部(super指向该对象)。作用
1.主要存在于子类方法中,用于指向子类对象中父类对象。
2.访问父类的属性
3.访问父类的函数
4.访问父类的构造函数必须使用super的时刻
1.父类覆盖了无参构造函数时
public class Father { public String name; public Father(String name) { this.name = name; }}public class Son extends Father{ public Son(String name) { //必须调用,否则他会默认调用父类的无参构造函数, //而父类的无参构造函数已经被有参的覆盖,所以找不到 super(name); }}
2.子类重写了父类的方法,又想用父类该方法时
class Parents{ Public Parents(){} public void write(){ System.out.println("Parents"); }}class Children extends Parents{ Public Children(){} public void write(){ System.out.println("Children"); super.write();//调用父类的write方法 }}
热门阅读:
**实用代码|javaMail发送邮件(文末重磅资源!)
【推荐两款神器】不限速下载、追剧神器
java”小心机”(1)【资源彩蛋!】**
end~thanks!
一个立志成大腿而每天努力奋斗的年轻人
期待你的到来!
如果觉得文章不错,请点个赞、分享给你的朋友呗!
java面试| 精选基础题(3)的更多相关文章
- java面试| 精选基础题(2)
关注微信公众号"java从心",置顶公众号 每天进步一点点,距离大腿又近一步! 阅读本文大概需要6分钟 继续挖掘一些有趣的基础面试题,有错望指出来哈,请赐教~ 1.包装类的装箱与拆 ...
- java面试|精选基础(1)
以下题目是从面试经历和常考面试题中选出有点儿意思的题目,参考答案如有错误,请联系小编指正,感谢! 1.反射 1.1定义 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法 ...
- Java面试之基础题---对象Object
参数传递:Java支持两种数据类型:基本数据类型和引用数据类型. 原始数据类型是一个简单的数据结构,它只有一个与之相关的值.引用数据类型是一个复杂的数据结构,它表示一个对象.原始数据类型的变量将该值直 ...
- JAVA面试精选
JAVA面试精选[Java基础第一部分] 这个系列面试题主要目的是帮助你拿轻松到offer,同时还能开个好价钱.只要能够搞明白这个系列的绝大多数题目,在面试过程中,你就能轻轻松松的把面试官给忽悠了.对 ...
- java面试一日一题:讲下mysql中的undolog
问题:请讲下mysql中undo log的作用 分析:mysql中有很多日志,例,bin log undo log redo log,要弄清楚这些日志的作用,就要了解这些日志出现的背景及要解决的问题: ...
- java面试一日一题:java中垃圾回收算法有哪些
问题:请讲下在java中有哪些垃圾回收算法 分析:该问题主要考察对java中垃圾回收的算法以及使用场景 回答要点: 主要从以下几点去考虑, 1.GC回收算法有哪些 2.每种算法的使用场景 3.基于垃圾 ...
- 【Java面试】基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...
- java面试一日一题:mysql中常用的存储引擎有哪些?
问题:请讲下mysql中常用的引擎有哪些? 分析:该问题主要考察对mysql存储引擎的理解,及区别是什么? 回答要点: 主要从以下几点去考虑, 1.mysql的存储引擎的基本概念? 2.mysql中常 ...
- java面试一日一题:讲下在什么情况下会发生类加载
问题:请讲下在什么情况下会发生类加载? 分析:该问题主要考察对java中类加载的知识,什么是类加载,为什么会发生类加载,什么情况下发生类加载? 回答要点: 主要从以下几点去考虑 1.什么是类加载: 2 ...
随机推荐
- 找不到 javax.servlet.http.HttpServletResponse 和 javax.servlet.http.HttpServletRequest 问题解决
时隔3个月,我又回来了!在做完毕设之后,由于对此过程中学到的一些东西疏于整理,所以当再次打开我的project时有些手足无措,以至于出现一些问题也要解决好半天,我知错! 今天的问题是: 开始搜到的解决 ...
- 开包即食的教程带你浅尝最新开源的C# Web引擎 Blazor
在今年年初, 恰逢新春佳节临近的时候. 微软给全球的C#开发者们, 着实的送上了一分惊喜. 微软正式开源Blazor ,将.NET带回到浏览器. 这个小惊喜, 迅速的在dotnet开发者中间传开了. ...
- python 实现整数的反转:给定一个整数,将该数按位逆置,例如给定12345变成54321,12320变成2321.
给定一个n位(不超过10)的整数,将该数按位逆置,例如给定12345变成54321,12320变成2321. # 第一种方法,使用lstrip函数去反转后,数字前面的0 import math num ...
- VUE事件修饰符.passive、.capture、.once实现原理——重新认识addEventListener方法
https://www.jianshu.com/p/b12d0d3ad4c1 .passive的作用与使用场景 https://juejin.im/post/5ad804c1f265da504547f ...
- pycharm 更改创建文件默认路径
1.操作 依次找到以下路径修改为自己想要的路径即可:PyCharm——>Settings——>Appearance&Behavior——>System Setting——&g ...
- mysql中的表操作
------------恢复内容开始------------ 创建数据库 create database 数据库名 切换数据库 use 数据库名 建表: create table 表名 ( 字段名1, ...
- Java程序员必备:异常的十个关键知识点
前言 总结了Java异常十个关键知识点,面试或者工作中都有用哦,加油. 一. 异常是什么 异常是指阻止当前方法或作用域继续执行的问题.比如你读取的文件不存在,数组越界,进行除法时,除数为0等都会导致异 ...
- appium+android自动化测试环境部署
1 node.js安装 官网(https://nodejs.org/en/) 下载对应版本的node.js并安装 安装完成后cmd中输入node -v,输入版本号则安装成功 2 jdk安装 下载对应版 ...
- 从0开发3D引擎(五):函数式编程及其在引擎中的应用
目录 上一篇博文 函数式编程的优点与缺点 优点 缺点 为什么使用Reason语言 函数式编程学习资料 引擎中相关的函数式编程知识点 数据 不可变数据 可变数据 函数 纯函数 高阶函数 柯西化 参考资料 ...
- 【5min+】你怎么穿着品如的衣服?IEnumerable AND IEnumerator
系列介绍 简介 [五分钟的dotnet]是一个利用您的碎片化时间来学习和丰富.net知识的博文系列.它所包含了.net体系中可能会涉及到的方方面面,比如C#的小细节,AspnetCore,微服务中的. ...