1.JDK和JRE的区别
- JDK:Java Development Kit的简称,Java开发工具包,提供了Java的开发环境和运行环境
- JRE:Java Runtime Enviroment的简称,Java运行环境,为Java的运行提供了所需环境
具体来说JDK包含了JRE,同时还包含了编译Java源码的编译器Javac,还包含了很多Java程序调试和分析的工具。简单来说:如果你需要运行Java程序,只需要安装JRE就可以了,如果你需要编写Java程序,需要安装JDK。
2.==和equals的区别
对于基本类型和引用类型==的效果是不同的,如下所示:
- 基本类型:比较的是值的引用是否相同
- 引用类型:比较的是引用是否相同
equals本质是==,只不过String和Integer重写了equals方法,把它变成了值比较。
==对于基本类型来说是值比较,对于引用类型来说是引用比较;而equals默认情况下是引用比较,只是很多了重新了equals方法,比如String、Integer等把它变成了值比较,所以一般情况下equals比较的是值是否相等
3.两个对象的hashcode()相同,则equals()也一定为true吗?
不一定,会出现不同的值 hashcode值相同的情况。
4.final在Java中有什么作用
- final修饰的类叫最终类,该类不能被继承
- final修饰的方法不能被重写
- final修饰的变量叫常量,常量必须初始化,初始化的值不能被修改
5.Java中Math.round(-1.5)等于多少
等于-1,因为在数轴上取值时,中间值0.5向右取整,所以正0.5是往上取整,负0.5直接舍去
6.String属于基本数据类型吗
不属于,基本数据类型有8种,byte,short,int,long,double,float,char,boolean
7.Java中操作字符串都有哪些类?它们之间有什么区别?
String,StringBuffer,StringBulider
String 和 StringBuffer、StringBulider的区别在于String声明的对象是不可变的对象,每次操作都会生成一个新的String对象,然后指针指向新的String对象,而 StringBuffer、StringBulider可以在原有的对象基础上进行操作,所以在经常改变字符串内容的情况下,最好不要使用String。
StringBuffer 和 StringBulider的最大的区别在于,StringBuffer是线程安全的,StringBulider是非线程安全的,但StringBuilder性能高于StringBuffer,所以在单线程的情况下使用StringBulider,多线程的情况下使用StringBuffer
8.String str = "i" 和 String str = new String("i")一样吗?
不一样,分配内存的方式不同。String str = "i" 的方式,Java虚拟机会将其分配到常量池中,而String str = new String("i") 会被分配到堆内存中。
9.如何反转字符串
使用StringBuffer 或 StringBulider的reverse()方法。
10.String有哪些常用的方法
- indexOf():返回指定字符的索引
- charAt():返回指定索引的字符
- replace():字符串替换
- trim():去除字符两端空格
- split():分割字符串
- getBytes():返回字符串的byte数组
- length():返回字符串长度
- toLowerCase():将字符串转换成小写
- toUpperCase():将字符串转换成大写
- substring():截取字符串
- equals():字符串比较