Java基础面试题 1day

这篇具有很好参考价值的文章主要介绍了Java基础面试题 1day。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基本数据类型和其对应的包装类型

  1. 基本数据类型根据所在 的作用域存放的位置是不一样的;当基本数据类型是局部变量时,存放的位置是栈;当基本数据类型是成员变量时,存放的位置是堆;当基本数据类型作为成员变量存在时,并且被static修饰时,存放的位置仍然是堆,但是类型就不属于是对象了,而是类。
  2. 为什么几乎所有的对象实例都是存放在堆中?

答:因为当HotSpot虚拟机引入JIT后,就开始对对象进行逃逸分析,如果发现某一对象没有逃逸到方法外,则通过标量替换来实现栈上分配,而避免堆上分配内存

  1. 包装类型的缓存机制?

Byte Short Integer Long:当对应的一个基本数据类型的值在-128到127范围内的时候,经过包装类的方法valueOf, 返回一个包装类缓存机制中对于这个数值在缓存中存在的数值的对应的地址IntegerCache.cache[i+(-IntegerCache.low)] (i+ (–128)) i+128;如果不存在,则会创建一个新的对象。
对于两个相同的整数,都是在-128-127的范围的时候,相互比较可以使用进行比较,由于他们的都是来自同一个缓存数组,元素下标相同,他们的地址是一致的,所以使用比较时地址相同,则转而比较数值
但是如果是两个不相同的数,并且不再缓存机制范围内的时候,如果想要比较数值,就必须使用equals方法进行比较,使用==比较的是地址
Character包装类的缓存机制范围:0~127
Boolean包装类直接返回TRUE 或者 FALSE
Float和Double包装类没有缓存机制

  1. 装箱: 调用对应包装类的valueOf方法;拆箱:调用对应包装类的xxxValue方法;
  2. 浮点数运算导致精度丢失的原因:计算机存储一个数字的宽度是有限的,无限循环的小数就会被截断,也就是浮点数不能使用二进制精确的表示;

使用BigDecimal类可以进行浮点数的运算,不会出现精度丢失的情况,但是进行加减乘除取模需要使用对应的方法

变量

  1. 成员变量和局部变量的区别?

成员变量定义在方法外,局部变量定义在方法内;
被static修饰的成员变量属于类,没有被static修饰的成员变量属于对象实例;
没有被static修饰的成员变量存储在堆内存中,局部变量存储在栈内存中;
成员变量在没有赋值的情况下,是自带默认值的,局部变量必须要赋值;
局部变量不能被static修饰,成员变量可以被static修饰,成为静态变量;
成员变量和局部变量都可以被final修饰;

  1. 静态变量有什么作用?

被static修饰变量成为静态变量,通过类名.变量名访问
静态变量一般会与final一起使用,修饰成静态常量,常量可以避免被继承修改

  1. 字符型常量和字符串常量的区别

字符型常量由单引号来表示一个字符,字符串常量由双引号来表示一个字符串;
字符型常量只有两个字节,字符串常量有若干个字节;
字符型常量可以表示一个ASCII值;字符串常量则表示一个地址,给字符串值分配的内存地址;

方法

  1. 静态方法为什么不能调用非静态成员?

静态方法是属于类的,在类加载的时候,就被分配内存;非静态的成员是属于对象实例的,只有在创建实例之后,非静态成员才存在,所以当我们在没有创建对象的时候去访问非静态册成员就会报错。

  1. 静态方法和实例方法有什么区别?

静态方法的调用方式是 类名.静态方法名,也可以是对象.静态方法名;实例方法只能通过第二种方式访问。
静态方法中只能去访问静态成员,不能访问实例成员;实例方法没有限制。

  1. 重载和重写的区别?

重载是在同一个类中,有若干个方法名相同,参数不相同的方法;
重写是在子类中,子类继承来自父类的方法,如果对父类的方法进行逻辑的修改,就要使用注解@Override表示进行了重写,覆盖原来的父类的方法。
重载的发生的阶段处于编译期,重写的发生阶段处于运行期。

对于重写,重写必须遵从两同两小一大
两同:方法名,参数必须相同
两小:子类的返回值类型应该比父类的小或者相等;子类定义抛出的异常必须比父类的小或者相等、
一大:子类的修饰符范围必须比父类的修饰符范围大

  1. 什么是可变长参数

允许调用方法时传入不定长度的参数
public static void method(String… arg){
}
当发生重载的时候,会优先匹配固定长度的方法。


从Javaguide中学习
记录自己的学习文章来源地址https://www.toymoban.com/news/detail-795605.html

到了这里,关于Java基础面试题 1day的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java面试Day11

    1. MySQL 事务有哪些隔离级别、分别有什么特点,以及 MySQL 的默认隔离级别是什么? 在MySQL中事务的隔离级别是为了解决常见的并发问题,在保证数据库性能的同时保持事务的隔离性,常见的并发问题有: 脏读 :如果一个事务读到了另一个未提交事务修改过的数据,那就意味

    2024年02月11日
    浏览(63)
  • 什么是0day漏洞,1day漏洞和nday漏洞?

    作者:火绒安全 链接:https://www.zhihu.com/question/323059851/answer/2642868488 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。   “0-day漏洞”(又称零日漏洞) ,通常就是指还 没有补丁的安全漏洞 ,也就是已经 被少数人发现的,但还没被传

    2024年02月16日
    浏览(48)
  • 【1day】复现任我行协同CRM存在SQL注入漏洞

    注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘  四、漏洞复现 

    2024年02月12日
    浏览(41)
  • Day01-Java基础语法

    目录 1. 人机交互 1.1 什么是cmd? 1.2 如何打开CMD窗口? 1.3 常用CMD命令 1.4 CMD练习 1.5 环境变量 2. Java概述 1.1 Java是什么? 1.2下载和安装 1.2.1 下载 1.2.2 安装 1.2.3 JDK的安装目录介绍 1.3 HelloWorld小案例 2.3.1 Java程序开发运行流程 2.3.2 HelloWorld案例的编写 1.4 HelloWorld案例常见问题 1.

    2024年02月10日
    浏览(37)
  • Day02 - Java基础语法

    目录 1. 注释 使用的技巧 注意点 2. 2.1 概念 2.2 第一个class 3. 字面量 区分技巧 4. 变量 4.1 什么是变量? 4.2 变量的定义格式 4.2.1 格式详解 4.2.2 常用的数据类型 4.2.3 变量的注意事项 5. 数据类型 5.1 Java语言数据类型的分类 5.2 基本数据类型的四类八种 说明 需要记忆

    2024年02月10日
    浏览(41)
  • Java基础入门day40

    分组补充 注意:分组查询中,select显示的列只能是分组依据列,或者聚合函数,不能出现其他列 分组过滤查询 描述 having 过滤规则 过滤规则定义对于分组后的数据进行过滤 统计不同班级的最高成绩: 限定查询 select 列名 from 表名 limit 起始行,查询行数 描述

    2024年04月28日
    浏览(27)
  • 【1day】iRDM4000智慧站房管理员密码重置漏洞学习

    注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、资产测绘 三、漏洞复现  四、漏洞修复

    2024年02月10日
    浏览(38)
  • Java面试知识点(全)- Java面试基础部分一

    Java面试知识点(全)https://nanxiang.blog.csdn.net/article/details/130640392 语法基础 封装 利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联

    2024年02月05日
    浏览(42)
  • 【1day】复现锐捷 NBR 路由器 存在任意文件上传漏洞

    注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘  四、漏洞复现 

    2024年02月11日
    浏览(42)
  • 【Java面试题】Java基础——面向对象

    重载和重写的区别★★★ 重载(Overloading)和重写(Overriding)都是Java中面向对象编程的特性,它们都可以让子类继承父类的方法。但是它们之间有一些重要的区别: 定义方式: 重载(Overloading): 在同一个类中 ,可以有 多个方法名相同但参数列表不同的方法 。当调用一个方法时,

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包