Java常见面试题
小谢不秃头
好事总会发生在下个转弯
展开
-
常见面试题之ArrayList
包下的集合类都是快速失败的,不能在多线程下发生并发修改(迭代过程中被修 改),比如HashMap。在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修。原理:由于迭代时是对原集合的拷贝进行遍历,所以在遍历过程中对原集合所作的修改并不能被迭。能访问到修改后的内容,即:迭代器遍历的是开始遍历那一刻拿到的集合拷贝,在遍历期间原集合。采用安全失败机制的集合容器,在遍历时不是直接在集合内容上访问的,而是先复制原有集合内。包下的容器都是安全失败,可以在多线程下并发使用,并发修改,比。原创 2022-10-07 18:35:19 · 164 阅读 · 0 评论 -
JAVA是值传递还是引用传递
值传递是指在方法调用时,将实际参数的值或内存地址复制一份传递到方法中。(创建参数值或内存地址的副本) 引用传递是指在调用方法时,将实际参数的值直接传递到方法中,不创建参数或内存地址的副本。JAVA中都是值传递如果参数是基本类型,复制参数的值传递给方法 如果参数是引用类型,复制对象在Heap堆中内存地址值,传递给方法JAVA中的集合和数组都是引用传递,存放的是内存对象的地址原创 2022-09-08 19:01:51 · 220 阅读 · 0 评论 -
JVM加载class文件的原理机制
JVM是JAVA虚拟机的简称,JAVA中所有的类都必须被装载JVM中才能运行,类的装载是由JVM中的类加载器和它的子类完成。类加载器包括:根加载器(BootStrap ClassLoader)、扩展加载器(Extension ClassLoader)、应用程序类加载器(AppClassLoader)。类的加载是指将类的.class文件从硬盘读取到内存中,然后产生与所加载类对应的Class对象。加载完成后,对象还不完整,所以此时的类还不可用。当类被加载后就进入连接阶段,这一阶段包括验证(验证文件是否正确)原创 2022-09-08 18:50:02 · 198 阅读 · 0 评论 -
java语言的特点
简单易学,面向对象(封装、继承、多态) 跨平台(Java虚拟机实现跨平台性) 可靠性、安全性、支持多线程、支持网络编程 执行时采用解释+编译的方式原创 2022-09-08 17:50:26 · 143 阅读 · 0 评论 -
Error VS Exception 、throw VS throws
throw用于引发异常,在方法体或代码块中使用,用throw引发的异常需要用try-catch处理或用throws将异常抛出,throw时根据业务场景引发的异常不一定是jdk中已定义的异常,一般使用自定义异常。Error类型的错误通常是虚拟机错误,如系统崩溃、内存不足、堆栈溢出等,编译器不会对这类错误进行检测,Java应用程序也不会对这类错误进行捕获,一旦错误发生程序通常会终止,仅靠程序本身无法恢复;throws是抛出异常,在方法声明处使用,用于标识当前方法可能存在的异常列表;...原创 2022-08-11 20:10:36 · 323 阅读 · 0 评论 -
面向对象VS面向过程
面向对象:把构成问题的事务拆解成多个对象,建立对象的目的不是为了完成一个步骤,而是为了描述对象在解决问题的步骤中的行为。第一步:打开洗衣机;面向过程:会把任务拆解成多个步骤,每个步骤就是一个函数,使用时依次调用就可以了。人(打开洗衣机、放衣服、放洗衣液)、洗衣机(清洗、烘干)。,注重事件的参与者(对象)以及每个对象各自需要做什么事。,但是类调用时需要实例化,开销较大,比较耗费资源,所以。,更注重事情的步骤和顺序;具有封装、继承、多态的特性,所以。更加灵活,易于维护、扩展和复用。注重事情的本身,所以。原创 2022-09-04 12:39:12 · 97 阅读 · 0 评论