JDK,Java Development Kit 的简称,java的开发工具包,提供了java开发和运行环境;java
JRE,Java Runtime Environment 的简称,java运行环境,为java的运行提供了所需环境,包含了java虚拟机,java基础类库;数组
具体来讲,JDK其实包含了JRE,同时还包含了编译java源码的编译器javac,还包含了不少java程序调试和分析的工具。安全
简单来讲:若是你须要运行java程序,只须要安装JRE就能够了,若是你须要编写java程序,须要安装JDK。多线程
对于==,若是做用于基本数据类型的变量,则直接比较其存储的值是否相等;工具
若是做用于引用类型的变量,则比较的是所指向的对象的地址性能
对于equals方法,注意:equals方法不能做用于基本数据类型的变量开发工具
若是没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;ui
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容spa
不对,两个对象的hashCode()相同,equals也不必定为true。 线程
首先直接回答不必定。
在java中,equals和hashcode是有设计要求的,equals相等,则hashcode必定相等,反之则否则。
重写equals()方法,必须重写hashCode()方法,以保证equals方法相等时两个对象 hashcode返回相同的值。
若是重写了hashCode方法就极可能出现hashCode相同equals为false的状况。
比较两个对象是否相等就能够重写hashCode和equals方法,使用equals就能判断是否相等。
final修饰的类叫最终类,该类不能被继承
final修饰的方法不能被重写
final修饰的变量叫常量,常量必须初始化,初始化以后不能被修改
等于-1;由于数轴上取值时,中间值(0.5)向右取整,因此正0.5是往上取整,负0.5直接舍弃
不属于。
基础数据类型有八种:
整数型:byte、short、int、long
浮点数型:float、double(默认是double类型,若加后缀F为float类型)
布尔类型:boolean
字符类型:char
而String属于对象
操做字符串的类有3个:String、StringBuffer、StringBuilder
区别:
String与其余两个的区别在于:String声明的是不可变得对象,底层运用了一个不可变的字符数组(final char[]),每次操做都会生成新的String对象,而后将指针指向新的String对象,而其余两个能够在原有对象的基础上进行操做,因此在常常改变字符串内容的状况下最好不要使用String。
StringBuffer和StringBuilder最大的区别在于:StringBuffer是线程安全的,而StringBuilder是非线程安全的,但StringBuilder的性能却高于StringBuffer,因此在单线程环境下推荐使用StringBuilder,多线程环境下推荐使用StringBuffer。
不同,由于内存的分配方式不同。
String str="i"的方式,java虚拟机会将其分配到常量池中
String str=new String("i")则会被分到堆内存中
使用StringBuilder或StringBuffer的reverse()方法
indexOf():返回指定字符的索引 charAt():返回指定索引处的字符
replac():字符串替换 trim():去除字符串两段的空白
split():分割字符串,返回一个分割后的字符串数组
getBytes():返回字符串的byte类型数组 length():返回字符串长度
toLowerCase():将字符串转成小写字母 toUpperCase():将字符串转成大写字符
substring():截取字符串 equals():字符串比较
不是必须的
普通类不能包含抽象方法,抽象类能够包含抽象方法
抽象类不能直接实例化,普通类能够直接实例化
不能
定义抽象类就是让其余类继承的,若是定义为final该类就不能不被继承,这样彼此就会产生矛盾
他们都不能实例化对象,均可以包含抽象方法,并且抽方法必须被继承的类所有实现
区别:
1.抽象类的子类使用extends来继承;接口必须使用implements来实现接口
2.抽象类要被子类继承,接口要被类实现
3.接口只能作方法申明,抽象类中能够作方法申明,也能够作方法实现
4.接口定义的只能公共静态常量(public static final ),抽象类中的变量是普通变量
5.抽象类里的抽象方法必须所有被子类所实现,若是子类不能所有实现父类抽象方法,那么该子类只能是抽象类。一样,一个实现接口的时候,如不能所有实现接口方法,那么该类也只能为抽象类。
6.接口中的方法默认使用public修饰;抽象类中的方法能够是任意访问修饰符
7.类能够实现多个接口,但只能继承一个超类