001:JDK 和 JRE,JVM 有什么区别
JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。
JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。
JVM:虚拟机,JAVA运行平台.JAVA能够跨平台的原因就是因为JAVA的运行只依赖JVM。
JDK > JRE > JVM
002:java中八种基本数据类型,String 属于基本数据类型么
String 不属于基础类型,基础类型有 8 种:byte、short、int、long,float、double,boolean、char而 String 属于引用数据类型。
003. ==和equals的区别
==号在比较基本数据类型时比较的是值,而用==号比较两个对象时比较的是两个对象的地址值;
equals()方法存在于 Object 类中,默认效果和==号的效果一样,也是比较的地址值,然而,Java 提供的所有类中, 绝大多数类都重写了equals()方法,比如 string,integer等,重写后的equals()方法一般都是比较两个对象的值。
004. hashCode()和equals()的区别
1、hashCode()方法的作用是获取对象的哈希值,获取对象每个属性的哈希值,最终返回对象的哈希值;
2、equals()方法默认比较的是两个对象的地址值,而一般使用需要进行重写,比较对象每个属性的 hash 值是否一致,若完全两个对象的每个属性的 hash 值都相同则认为是同一个对象,若有一个属性不一致则认为两个对象不相同。
3、一般来说 hashCode 相同的两个对象不见得是同一个对象,有可能发生哈希碰撞现象,需要重写 hashCode()方法
005. 两个对象的hashCode() 相同,则 equals() 也一定相同
不对,两个对象的 hashCode() 相同,equals() 不一定 true。
hashCode()只是计算对象属性的哈希值,有可能属性不一致,但是刚好哈希值一样,发生哈希碰撞,比如 5+2=7, 4+3=7,但是这两个 7 并不是同一个 7.
006. String 类的常用方法 (背三五个)
length():求字符串的长度
indexOf():求某个字符在字符串中的位置
charAt():求一个字符串中某个位置的值
equals():比较两个字符串是否相同
replace():将字符串中的某些字符用别的字符替换掉。形如 replace(“abc”,”ddd”);字符串中的 abc 将会被 ddd 替换掉。
split():根据给定正则表达式的匹配拆分此字符串。形如 String s = "The time is going quickly!";
str1=s.split(" ");
substring():输出一个新的字符串,它是此字符串中的子串,形如 substring(3,7);它将字符串中的第四个第五个第六个输出。
trim():将字符串开头的空白(空格)和尾部的空白去掉。
007. Object 类中常用方法 (三五个)
hashCode():计算对象成员的哈希值
equals():判断对象是否相等
clone():对对象进行 clone
getClass():获取对象的 Class 字节码文件对象
wait():线程阻塞,线程挂起等待
notify(),notifyAll():线程唤醒,线程就绪,继续运行
toString():获取对象的信息,一般重写,默认返回地址值
008.多态以及多态的好处
多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情,实现过程:1存在继承关系,2:子类重写父类的方法3:子类对象赋予父类引用,4:调用重写后的方法(同一个父类应用因为保存的子类对象不同调用同一个方法的时候,出现不同的结果)
主要有以下优点:
1、可替换性:多态对已存在代码具有可替换性
2、可扩充性:增加新的子类不影响已经存在的类结构
3、接口性:多态是超类通过方法签名,由子类来完善或者重写它来实现的。
4、灵活性
5、简化性
009. 访问修饰符 public、private、protected、default的区别
010. 重载(Overload)和重写(Override)的区别。
重载(Overload):在同一个类中,方法名称相同,参数列表不同(参数类型,参数个数,参数名称),与返回值无关,称之为重载;
重写(Override):子类中存在与父类中方法声明完全相同的方法,称之为方法重写;
方法重载只与方法名称和参数列表相关,与返回值无关,不能通过返回类型区分。
其余面试题请看主页,JAVA面试专栏里面有