1、& 和 &&的区别

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

publicclassTest{static String name;publicstaticvoidmain(String[] args){if(name!=null&userName.equals("")){System.out.println("ok");}else{System.out.println("erro");}}
}

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

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也用于静态块,多用于初始化操作:

public calss PreCache{static{//执行相关操作}
}

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

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

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

“面试不败计划”:面试题基础三相关推荐

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

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

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

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

  3. “面试不败计划”:面试题基础一

    1.面向对象的特征有哪些方面? **答:**面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不 ...

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

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

  5. “面试不败计划”:面试题基础二

    11.switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上? **答:**在Java 5以前,switch(expr)中,expr只能是byte.short.c ...

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

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

  7. “面试不败计划”:各大公司Java后端开发面试题总结

    文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源. 1.ThreadLocal(线程变量副本) Synchronized实现内存共享,Threa ...

  8. “面试不败计划”:集合、日期、异常、序列化、其他知识点

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

  9. “面试不败计划“:hibernate和mybatis比较

    文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源. 我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也 ...

最新文章

  1. Python(Dict和Set类型)
  2. libQtCore.so.4相关错误
  3. 清华大学车辆刚才专业大佬教你如何写SCI论文(转)
  4. Visual Studio Code里关于ESLint的错误消息
  5. 强烈推荐!孩子的科普从这套全球畅销250万册的最酷科学书起步
  6. activemq网络桥接_ActiveMQ –经纪人网络解释–第3部分
  7. 基于深度卷积神经网络的苹果叶片植物病理学疾病检测
  8. mem考试能用计算机吗,分享自己MEM考试经验
  9. jQuery WEUI
  10. 机器学习实战 利用sklearn库预测科比生涯数据
  11. 【微信小程序】三分钟学会小程序的列表渲染
  12. 统计报表可视化html,用统计图让数据可视化
  13. 西部数据移动硬盘真伪测试软件,我的西数硬盘是真的吗?网购西数移动硬盘辨别真伪的方法...
  14. 阿里云吴翰清:如何落地数字化转型
  15. 延安.居民家庭计算机普及率,2004~2014年家庭互联网普及率及电脑持有率
  16. ASP.NET 安全认证(二)【转】
  17. Matlab中常用的清除命令clc,clear,clf等
  18. 怎样把已经做好的网页传到网上去?
  19. 树莓派小车————远程控制
  20. 计算机系统如何禁止文件删除功能,Win7如何禁止在C盘上安装软件?|win7系统c盘哪些文件是可以删除的...

热门文章

  1. Ubuntu自带pdf查看器不能显示中文解决问题
  2. [转] 书摘及访谈:Aptana RadRails,一个Rails的集成开发环境
  3. [ZZ88]送给即将毕业奔三的男人们的16条忠告
  4. stm32的can总线理解及应用——程序对应stm32f103系列
  5. 什么时候需要用到RCC_APB2Periph_AFIO--复用IO时钟的使用
  6. mysql使用从c3p0_使用c3p0連接池操作mysql數據庫中文亂碼解決辦法
  7. C++ Primer 5th笔记(7)chapter7 类:类的静态成员
  8. DRF_APIView之认证、授权配置
  9. optee中的密码学算法注册模型
  10. linux script 命令