1.  Java中数据类型分类 1.1    基本数据类型 又称为原始数据类型,byte,short,char,int,long,float,double,boolean,他们之间的比较应该使用(==),比较的是他们的值. 1.2    复合数据类型 当复合数据类型用(==)进行比较,比较的是他们在内存中的存放地址.下面介绍equals方法. 在Java的Object类中定义了equals方法,当复合数据类型之间进行equals比较时,这个方法的初始行为是比较对象在堆内存中的地址,但在一些诸如S…
从开始学习Java,哈希码以及equals和==的区别就一直困扰着我. 要想明白equals和==的区别首先应该了解什么是哈希码,因为在jdk的类库中不管是object实现的equals()方法还是String重写的equals()方法以及其它基本数据类型的包装类重写的euqals()方法,他们在比较对象的时候都是根据hashCode()方法返回的哈希码来判断两个对象是否相等的,所以要想搞清楚equals()就必须要知道什么是哈希码. 那么究竟是什么哈希码呢?哈希码是可以根据的自己的需求,采用不…
1.JVM内存查看与分析,编写内存泄露实例 堆区.栈区.方法区.本机内存都有可能内存溢出.在这里编写堆区内存溢出实例.如下(来自<深入理解Java虚拟机>一书. // -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError public class HeapOutOfMemoryError { static class OOMObject{} public static void main(String[] args) { List<OOMObje…
1.什么是JVM? 答:JVM是Java Virual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,他是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟计算机功能来实现的.Java虚拟机包括一套字节码指令集.一组寄存器.一个栈.一个垃圾回收堆和一个存储方法域.JVM屏蔽了与具体操作系统平台相关的信息,时Java程序只需生成在Java虚拟机上运行的字节码,就可以在多种平台上不加修改的运行.JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行.…
Hi, 我是Mic. 今天分享一道一线互联网公司必问的面试题. "JVM如何判断一个对象可以被回收" 关于这个问题,来看看普通人和高手的回答. 普通人: 嗯.......... 高手: 好的,面试官. 在JVM里面,要判断一个对象是否可以被回收,最重要的是判断这个对象是否还在被使用,只有没被使用的对象才能回收. 引用计数器,也就是为每一个对象添加一个引用计数器,用来统计指向当前对象的引用次数, 如果当前对象存在应用的更新,那么就对这个引用计数器进行增加,一旦这个引用计数器变成0,就意味…
据说这个面试题目,80%的程序员都会理直气壮的回答错误!! 一: ==运算符 如果比较的是基本数据类型,则直接比较数值是否相等,返回值为"true or false" 如果比较的是引用数据类型,则直接比较地址值是否相等,返回值为"true or false" 二: Object类中的equals()方法: Object类中的equals方法比较的是引用数据类型,比较的的是地址值是否相等,"返回true or false" 如果子类有重写了equa…
首先我们先来谈谈String: String 对象一旦创建,其值是不能修改的,如果要修改,会重新开辟内存空间来存储修改之后的对象,即修改了 String 的引用. 因为 String 的底层是用数组来存值的,数组长度不可改变这一特性导致了上述问题. ‌如果我们在实际开发过程中需要对某个字符串进行频繁的修改,使用 String 就会造成内存空间的浪费,应该怎样解决这个问题呢?‌ 答案就是可以使用 StringBuffer 来解决这个问题. 下面我们就来详细谈谈​StringBuffer: ‌​St…
一个工作了六年多的粉丝,胸有成竹的去京东面试. 然后被Spring里面的一个问题卡住,唉,我和他说,6年啦,Spring都没搞明白? 那怎么去让面试官给你通过呢? 这个问题是: Spring中BeanFactory和FactoryBean的区别. 好吧,对于这个问题看看普通人和高手的回答. 普通人: 嗯.......... 高手: 关于这个问题,我从几个方面来回答. 首先,Spring 里面的核心功能是IOC容器,所谓IOC容器呢,本质上就是一个Bean的容器或者是一个Bean的工厂. 它能够根…
如果你的面试简历是如下这样写的,请务必准备回答下面的所有问题. 面试职位:Java高级工程师 专业技能: (1)牢固掌握Java基础知识,如集合.并发.I/O等,并对Java源码有一定的研究. (2)掌握Git.SVN等版本管理工具,熟练使用Maven.Jenkins等工具. (3)熟练使用MySQL数据库,了解InnoDB存储引擎,接触过MySQL的调优.熟悉Redis数据库. (4)熟练使用Linux常用命令,编写过shell脚本. (5)熟练使用Spring.Hibernate等框架. .…