点击上方“好好学java”,选择“置顶公众号”

优秀学习资源、干货第一时间送达!

好好学java

java知识分享/学习资源免费分享

关注

精彩内容

java实战练习项目教程

全网最全电子图书分享

你所需要的大数据视频教程

java全套学习视频教程及源码

这已经是出的面试题的第三期了,但似乎看面试题的小伙伴更少了一些,也不知道小伙伴们对于面试题的想法是怎样的?或者说,以怎么样的形式来说对大家的帮助更大,如果小伙伴们有好的想法或者什么建议,欢迎大家留意或者私信我,每一位小伙伴的建议我都会认真考虑,尽量改进,谢谢大家!

——思海有话说

1、& 和 &&的区别

首先记住&是位操作,而&&是逻辑运算符.另外需要记住逻辑运算符具有短路特性,而&不具备短路特性.

 1publicclassTest{2   static String name;3   publicstaticvoidmain(String[] args){4       if(name!=null&userName.equals("")){5           System.out.println("ok");6       }else{7           System.out.println("erro");8       }9   }
10}

以上代码将会抛出空指针异常.

2、一个.java文件内部可以有类?(非内部类)

只能有一个public公共类,但是可以有多个default修饰的类.

3、如何正确的退出多层嵌套循环.

  • 使用标号和break;

  • 通过在外层循环中添加标识符

4、内部类的作用

内部类可以有多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立.在单个外围类当中,可以让多个内部类以不同的方式实现同一接口,或者继承同一个类.创建内部类对象的时刻不依赖于外部类对象的创建.内部类并没有令人疑惑的”is-a”关系,它就像是一个独立的实体.

5、final,finalize和finally的不同之处

final 是一个修饰符,可以修饰变量、方法和类。如果 final 修饰变量,意味着该变量的值在初始化后不能被改变。finalize 方法是在对象被回收之前调用的方法,给对象自己最后一个复活的机会,但是什么时候调用 finalize 没有保证。finally 是一个关键字,与 try 和 catch 一起用于异常的处理。finally 块一定会被执行,无论在 try 块中是否有发生异常。

6、clone()是哪个类的方法?

java.lang.Cloneable 是一个标示性接口,不包含任何方法,clone 方法在 object 类中定义。并且需要知道 clone() 方法是一个本地方法,这意味着它是由 c 或 c++ 或 其他本地语言实现的。

7、深拷贝和浅拷贝的区别是什么?

浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象。

深拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深拷贝把要复制的对象所引用的对象都复制了一遍。

8、static都有哪些用法?

几乎所有的人都知道static关键字这两个基本的用法:静态变量和静态方法.也就是被static所修饰的变量/方法都属于类的静态资源,类实例所共享.

除了静态变量和静态方法之外,static也用于静态块,多用于初始化操作:

1public calss PreCache{
2   static{
3       //执行相关操作
4   }
5}

此外static也多用于修饰内部类,此时称之为静态内部类.
最后一种用法就是静态导包,即import static.import static是在JDK 1.5之后引入的新特性,可以用来指定导入某个类中的静态资源,并且不需要使用类名.资源名,可以直接使用资源名,比如:

1import static java.lang.Math.*;
2publicclassTest{
3   publicstaticvoidmain(String[] args){
4       //System.out.println(Math.sin(20));传统做法
5       System.out.println(sin(20));
6   }
7}

9、final有哪些用法

final也是很多面试喜欢问的地方,能回答下以下三点就不错了:

1.被final修饰的类不可以被继承
2.被final修饰的方法不可以被重写
3.被final修饰的变量不可以被改变.如果修饰引用,那么表示引用不可变,引用指向的内容可变.
4.被final修饰的方法,JVM会尝试将其内联,以提高运行效率
5.被final修饰的常量,在编译阶段会存入常量池中.

回答出编译器对final域要遵守的两个重排序规则更好:

1.在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序.
2.初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序

10、java中int char,long各占多少字节?

类型 位数 字节数
short 2 16
int 4 32
long 8 64
float 4 32
double 8 64
char 2 16

11、64位的JVM当中,int的长度是多少?

Java 中,int 类型变量的长度是一个固定值,与平台无关,都是 32 位。意思就是说,在 32 位 和 64 位 的Java 虚拟机中,int 类型的长度是相同的。

12、int和Integer的区别

Integer是int的包装类型,在拆箱和装箱中,二者自动转换.int是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象

13、int 和Integer谁占用的内存更多?

Integer 对象会占用更多的内存。Integer是一个对象,需要存储对象的元数据。但是 int 是一个原始类型的数据,所以占用的空间更少。

14、String,StringBuffer和StringBuilder区别

String是字符串常量,final修饰;StringBuffer字符串变量(线程安全);
StringBuilder 字符串变量(线程不安全).

15、String和StringBuffer

String和StringBuffer主要区别是性能:String是不可变对象,每次对String类型进行操作都等同于产生了一个新的String对象,然后指向新的String对象.所以尽量不在对String进行大量的拼接操作,否则会产生很多临时对象,导致GC开始工作,影响系统性能.

StringBuffer是对对象本身操作,而不是产生新的对象,因此在有大量拼接的情况下,我们建议使用StringBuffer.

但是需要注意现在JVM会对String拼接做一定的优化:
String s=“This is only ”+”simple”+”test”会被虚拟机直接优化成String s=“This is only simple test”,此时就不存在拼接过程.

16、StringBuffer和StringBuilder

StringBuffer是线程安全的可变字符串,其内部实现是可变数组.StringBuilder是jdk 1.5新增的,其功能和StringBuffer类似,但是非线程安全.因此,在没有多线程问题的前提下,使用StringBuilder会取得更好的性能.

17、什么是编译器常量?使用它有什么风险?

公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,但是你的客户端仍然在使用老的值,甚至你已经部署了一个新的jar。为了避免这种情况,当你在更新依赖 JAR 文件时,确保重新编译你的程序。

18、java当中使用什么类型表示价格比较好?

如果不是特别关心内存和性能的话,使用BigDecimal,否则使用预定义精度的 double 类型。

19、如何将byte转为String

可以使用 String 接收 byte[] 参数的构造器来进行转换,需要注意的点是要使用的正确的编码,否则会使用平台默认编码,这个编码可能跟原来的编码相同,也可能不同。

20、可以将int强转为byte类型么?会产生什么问题?

我们可以做强制转换,但是Java中int是32位的而byte是8 位的,所以,如果强制转化int类型的高24位将会被丢弃,byte 类型的范围是从-128到128

往期推荐

  • “面试不败计划”: java语言基础面试题(二)

  • ”365算法每日学计划”:02打卡-线性表(赠书活动第①期预告)

  • 并发基础篇(一): 线程介绍

附上热门QQ群,存放资源和历史资料,500容量(低门槛付费群),长按二维码入群


长按二维码关注

“面试不败计划”: java语言基础面试题(三)相关推荐

  1. “面试不败计划”: java语言基础面试题(二)

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 好好学java java知识分享/学习资源免费分享 关注 精彩内容 java实 ...

  2. “面试不败计划”: java语言基础面试题(一)

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 好好学java java知识分享/学习资源免费分享 关注 精彩内容 java实 ...

  3. Java语言基础-面向对象编程三步走之打开冰箱门

    开头: 何谓"面向对象" 面向对象是一种编程思想. 思想是一个很虚无缥缈的东西,但是它可以从一个人的具体行动中体现出来,如果说你坚持每天跑步,每天读书,做一些有益于身心健康的事情, ...

  4. “面试不败计划”:集合知识整体总结

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 好好学java java知识分享/学习资源免费分享 关注 精彩内容 java实 ...

  5. java基础1之java语言基础1

    一.常量的概述和使用 A:什么是常量 * 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 * 字面值常量 * 自定义常量(面向对象部分讲) C:字面值常量的分类 * 字符串常量 用双引 ...

  6. JavaSE——Day1——计算机基础知识、Java语言基础、JRE与JDK

    计算机基础知识 什么是计算机? 计算机全称:电子计算机,俗称电脑.是一种能够按照程序原乡,自动.告诉处理海量数据的现代化只能电子设备.计算机由软件和硬件组成,没有安装任何软件的计算机称为课机.常见的形 ...

  7. 2、java语言基础

    java语言基础 1.关键字关键字都是小写 public类名首字母大写 Demo12.标识符在程序中自定义的一些名称.由26个英文字母大小写,数字:0-9,符号:_$数字不可以开头不可以使用关键字3. ...

  8. 【java后端学习】java语言基础(夯实基础)

    文章目录 一.基础语法 1 java中的标识符 1.1 变量命名规范 1.2 保留字 2 java中的常量 3 java基本数据类型 4 数组 5 字符及字符串 6 运算符 7 控制语句 for语句 ...

  9. day01计算机基础知识Java语言基础

    计算机基础知识(计算机概述) 计算机基础知识(软件开发和计算机语言概述) 计算机基础知识(人机交互) 计算机基础知识(键盘功能键和快捷键) 计算机基础知识(如何打开DOS控制台) 计算机基础知识(常见 ...

最新文章

  1. 修改mysql   默认字符集 , 默认引擎
  2. Arc Engine 中添加气泡提示框
  3. R语言vtreat包自动处理dataframe的缺失值、计算数据列的均值和方差并基于均值和方差信息对数据列进行标准化缩放、计算所有数据列的均值和方差对所有数据列进行标准化缩放
  4. 真的超越了波士顿动力!深度强化学习打造的 ANYmal 登上 Science 子刊
  5. 数据库连接类 DB.class.php
  6. 事务管理最佳实践全面解析
  7. php 返回查询结果某个字段
  8. 数据结构和算法基础概述
  9. quartz数据库方式与web工程整合
  10. 重写Gallery中方法去处理Gallery滑动时的惯性
  11. Follow Me:CCIE RS--使用小凡模拟器搭建的CCIE拓扑图
  12. python三维图怎么显示_如何在python中绘制多个回归3D图
  13. 电商网站交易记录设计
  14. AIX系统内存占用率的计算
  15. CADD课程学习(13)-- 研究蛋白小分子动态相互作用-III(蛋白配体复合物 GROMACS)
  16. Groundhog and 2-Power Representation
  17. jQuery easyUI pannel 用法记录
  18. 百面机器学习和百面深度学习-测试1
  19. 《天天数学》连载62:三月二日
  20. 你还不知道 BTree,B-Tree,B+Tree 的区别吗?

热门文章

  1. helloworld设置成开机自启动的服务
  2. NRF51 BOOTLOADER 编译注意事项
  3. python绘图—— matplotlib
  4. 二十三、图的广度优先遍历
  5. android智能刷新smart,Android横向智能刷新框架-SmartRefreshHorizontal
  6. 渲染管道(2)应用阶段“功能”
  7. TCP/IP总结(4)TCP 之最大消息长度
  8. 跨链(8)Cosmos之“跨链交互协议IBC”
  9. C++的几种遍历形式
  10. 105从前序与中序遍历序列构造二叉树 106 从中序与后序遍历序列构造二叉树 (递归 + 哈希)