每天进步一点点,距离大腿又近一步!

阅读本文大概需要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)的更多相关文章

  1. java面试| 精选基础题(2)

    关注微信公众号"java从心",置顶公众号 每天进步一点点,距离大腿又近一步! 阅读本文大概需要6分钟 继续挖掘一些有趣的基础面试题,有错望指出来哈,请赐教~ 1.包装类的装箱与拆 ...

  2. java面试|精选基础(1)

    以下题目是从面试经历和常考面试题中选出有点儿意思的题目,参考答案如有错误,请联系小编指正,感谢! 1.反射 1.1定义 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法 ...

  3. Java面试之基础题---对象Object

    参数传递:Java支持两种数据类型:基本数据类型和引用数据类型. 原始数据类型是一个简单的数据结构,它只有一个与之相关的值.引用数据类型是一个复杂的数据结构,它表示一个对象.原始数据类型的变量将该值直 ...

  4. JAVA面试精选

    JAVA面试精选[Java基础第一部分] 这个系列面试题主要目的是帮助你拿轻松到offer,同时还能开个好价钱.只要能够搞明白这个系列的绝大多数题目,在面试过程中,你就能轻轻松松的把面试官给忽悠了.对 ...

  5. java面试一日一题:讲下mysql中的undolog

    问题:请讲下mysql中undo log的作用 分析:mysql中有很多日志,例,bin log undo log redo log,要弄清楚这些日志的作用,就要了解这些日志出现的背景及要解决的问题: ...

  6. java面试一日一题:java中垃圾回收算法有哪些

    问题:请讲下在java中有哪些垃圾回收算法 分析:该问题主要考察对java中垃圾回收的算法以及使用场景 回答要点: 主要从以下几点去考虑, 1.GC回收算法有哪些 2.每种算法的使用场景 3.基于垃圾 ...

  7. 【Java面试】基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...

  8. java面试一日一题:mysql中常用的存储引擎有哪些?

    问题:请讲下mysql中常用的引擎有哪些? 分析:该问题主要考察对mysql存储引擎的理解,及区别是什么? 回答要点: 主要从以下几点去考虑, 1.mysql的存储引擎的基本概念? 2.mysql中常 ...

  9. java面试一日一题:讲下在什么情况下会发生类加载

    问题:请讲下在什么情况下会发生类加载? 分析:该问题主要考察对java中类加载的知识,什么是类加载,为什么会发生类加载,什么情况下发生类加载? 回答要点: 主要从以下几点去考虑 1.什么是类加载: 2 ...

随机推荐

  1. iview+vue查询分页实现

    本文为实战坑记录 子组件(共用的搜索组件) <template> <div> <h2>{{pdbTitle}}</h2> <Form ref=&q ...

  2. 节点列表和HTML集合

    getElementsByName()和getElementByTagName()返回的都是NodeList集合. 而document.images和document0.forms的属性为HTMLCo ...

  3. centos7搭建hadoop2.10伪分布模式

    1.准备一台Vmware虚拟机,添加hdfs用户及用户组,配置网络见 https://www.cnblogs.com/qixing/p/11396835.html 在root用户下 添加hdfs用户, ...

  4. easyUI dataGrid主从表点击展开问题

    昨天在公司写代码遇到了一个问题,就是在用easyUI做主从表的时候在查询之后点击展开的时候不能再次展开了.先说一下主从表我也是第一次用 效果如下图: 然后点击前面的小加号出现以下效果: 然而遇到了一个 ...

  5. 【题解】BZOJ4883: [Lydsy1705月赛]棋盘上的守卫(最小生成基环森林)

    [题解]BZOJ4883: [Lydsy1705月赛]棋盘上的守卫(最小生成基环森林) 神题 我的想法是,每行每列都要有匹配且一个点只能匹配一个,于是就把格点和每行每列建点出来做一个最小生成树,但是不 ...

  6. 洛谷P1248 加工生产调度 贪心

    正解:贪心 解题报告: 传送门$QwQ$ $umm$直接看可能比较难想,可以先考虑另一个题? 有$n$个小怪,每打一只小怪会扣$a_i$的血,打完之后会回升$b_i$的血,问至少要多少血量才能使全程血 ...

  7. MyBatis原理-注意点

    一.${}和#{}的区别 #{}:占位符号,好处防止sql注入 ${}:sql拼接符号 动态 SQL 是 mybatis 的强大特性之一,也是它优于其他 ORM 框架的一个重要原因.mybatis 在 ...

  8. CommandPattern(命令模式)-----Java/.Net

    命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式.请求以命令的形式包裹在对象中,并传给调用对象.调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该 ...

  9. Sample Code之Take a screenshot of a SceneView

    周末事情太多了,以后就工作日发布随笔吧.周末的话,看心情,也许也会发~ 今天的实例代码解析是Take a screenshot of a SceneView,也就是获取快照,话不多说,进入正题. 首先 ...

  10. C#登出系统并清除Cookie

    1.前端页面代码: 前端页面代码主要显示退出系统或者网站的可视化按钮代码,代码如下:(请忽略项目关键字:CPU) <ul class="nav navbar-nav navbar-ri ...