线程 字符 操作频繁度 1 String (1)String的创建机制 由于String在java世界中使用过于频繁,java为了避免在一个系统中产生大量重复的String对象,引入了字符串常量池,其运行机制是:创建一个字符串时,首先检查常量池中是否有值相同的字符串对象,如果存在相同字符串则直接使用常量池中的字符串引用,如果不存在新建字符串对象并放入常量池,但是,例外通过new方法创建的String对象是不检查常量池,而是直接在堆或栈中创建对象,并且不会把对象放入常量池. 举例: String…
本人总结: Exception和Error:正常问题和意外问题,以自行车举例:没气和爆胎. ①理解Throwable,Exception,Error的设计和分类. ②掌握哪些应用最广泛的子类, ③如何定义异常. 解决不了异常的捕获不如抛出. 捕获不了异常的捕获不是好捕获,什么异常都捕获的捕获不是好捕获,解决不了异常的捕获一定是坏捕获. 捕获不是俄罗斯转盘,99分的捕获不如抛出,因为缺的1分可能是致命的. 世界上存在永远不会出错的程序吗?这也许只会出现在程序员的梦中.随着编程语言和软件的诞生,异常…
继上篇JVM学习之后,后面将分三期深入介绍剩余JAVA基础面试题,每期3题. 题目一.final,finally,finalize有什么区别? /*请尊重作者劳动成果,转载请标明原文链接:*/ /* https://www.cnblogs.com/jpcflyer/p/10739217.html* / 大家一般都这么回答: final 可以用来修饰类.方法.变量,分别有不同的意义,final 修饰的 class 代表不可以继承扩展,final 的变量是不可以修改的,而 final 的方法也是不可…
java是一门历史悠久的编程语言,可以毫无争议的说,java是最主流的编程语言之一.全球有1200万以上的java程序猿以及海量的设备,还有无所不能的java生态圈. 我所知道的诸如阿里,京东,百度,腾讯,美团,去哪儿等互联网公司,基本都是以java为首要编程语言的.即使在最新的云计算领域,java仍然是AWS,google app engine等平台上,使用最多的编程语言,甚至在微软的Azure云上,java也已微弱劣势排在前三,所以,在这些大公司的面试中,基本都会以java为切入点,考评一个…
文章转载自:http://www.cnblogs.com/frankliiu-java/archive/2010/07/05/1771537.html String是固定长度的字符串,如果要发生变化必须重新生成新的实例: String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 而 如果是使用 StringBuf…
理解装箱和拆箱的过程. 对象由三部分组成:对象头,对象实例,对齐填充. 对象头:一般是十六个字节,分两部分,第一部分:哈希码,锁状态标志,线程持有的锁,偏向线程id,gc分代年龄等,第二部分是类型指针,虚拟机由类型指针指向的类型确定对象的类型. 对象实例:变量和方法,是父类继承或子类定义. 对齐填充:类似占位符的作用,因为内存使用都会被填为八字节的倍数. 1. int和integer JDK1.5引入了自动装箱与自动拆箱功能,java可根据上下文实现int/Integer,double/Doub…
我在编译时不知道,而在运行时知道,那么肯定在运行时给了提示,这个提示就是额外功.好处是可以重复利用相同代码. 代理模式:通过代理静默的解决一些与业务无关的问题,例如远程,安全,事物,日志,资源关闭,...让应用开发者可以只关心自身业务. 静态代理:事先写好代码类,可以手工编写,也可以用工具生成.缺点是每个业务类都要有一个对应代理类,非常不灵活. 动态代理:运行时自动生成代理对象.缺点是生成代理对象和调用代理对象都要额外花费时间, JDK动态代理:基于java反射机制实现,必须要实现了接口的业务类…
在java语言中,除了原始数据类型的变量,其他所有都是所谓的引用类型,指向各种不同的对象,理解引用对于掌握java对象生命周期和JVM内部相关机制非常有帮助. 今天问题:强引用.软引用.弱引用.幻想引用有什么区别?具体使用场景是什么? 经典回答:不同的引用类型,主要体现的是对象不同的可达性状态和对垃圾收集的影响. 强引用特点:我们平常典型编码Object obj=new Object()中obj就是强引用.通过关键字new创建的对象所关联的引用就是强引用.当JVM内存空间不足,JVM宁愿抛出Ou…
java语言有很多看起来相似,但用途却完全不相同的语言要素,这些内容往往容易成为面试官考察你知识掌握程度的切入点. 今天我要问你一个基础的java经典题目,谈谈final.finally.finalize有什么不同? 经典回答: final可以用来修饰类.方法.变量.分别有不同的意义,final修饰的class代表不可以继承拓展,final修饰的变量不可以被修改,final修饰的方法不可以被重写. finally则是java保证重点代码一定会被执行的一种机制.例如try-finally来进行类似…
本人总结: 面向对象(封装,继承,多态) 平台无关性(jvm运行,class文件) 语言(泛型,lambda) 类库(集合,并发,网络,io/nio) jre(java运行环境,JVM,类库) JDK(java开发工具,包括JRE,javac,诊断工具) "一次编译,到处执行"java平台依靠JVM和.class字节码文件屏蔽不同平台软件硬件差异.认为C/C++是面向操作系统的编程,java是面向虚拟机的编程. 通过增加一个间接地中间层来"解耦"是计算机领域常用的一…