今年比去年好一些,很多知识还记得,偶尔复习下还是有用的。下面是看到一些基础题,记录一下。
1. java基本数据类型有哪些,int, long占几个字节
1、整数:包括int,short,byte,long
2、浮点型:float,double
3、字符:char
4、布尔:boolean
int 占4个字节,long 占8个字节
如果是c语言,int占2个字节,long 占4个字节。
如果是java,long 在32位系统中一般为4个,但在64位系统一般位 8 个
int 一般占4个字节,long 占8个字 512个汉字应该是1KB 1KB=1024B(B是字节)也就是说一个汉字就是两个字节。
2. == 和 equals有什么区别
==比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。
equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。
3. hashcode 和 equals作用
1.equal()相等的两个对象他们的hashCode()肯定相等,也就是用equal()对比是绝对可靠的。
2.hashCode()相等的两个对象他们的equal()不一定相等,也就是hashCode()不是绝对可靠的。
具体讲解可参照这篇文章:hashcode()和equals()的作用、区别、联系
4. new String创建了几个对象
具体讲解可参照这篇文章:https://blog.csdn.net/w8998036/article/details/54893453
如下所示
String str = new String(“abc”) 到底创建了几个对象?
首先String str是定义了一个字符串变量,并未产生对象,=不产生对象,那么只有后面的new String("abc")了。把它拆分成"abc"和new String(),首先在字符串常量池去寻找有没有"abc"这个字符串,没有就创建一个“abc”字符串对象在栈中,然后new String把这个字符串对象拷贝一份到堆中,返回这个对象的引用。所以一共产生两个对象
5. 位运算符的一些计算
具体讲解可参照这篇文章:https://www.cnblogs.com/gavanwanggw/p/7015620.html
6.java的拆装箱
具体讲解可参照这篇文章: https://www.cnblogs.com/qcblog/p/7670159.html
自动装箱与自动拆箱为程序员提供了很大的方便,而在实际的应用中,自动装箱与拆箱也是使用最广泛的特性之一。自动装箱和自动拆箱其实是Java编译器提供的一颗语法糖(语法糖是指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通过可提高开发效率,增加代码可读性,增加代码的安全性)
- 自动装箱过程是通过调用valueOf方法实现(如Integer.valueOf(10))
- 而拆箱过程是通过调用包装器的 xxxValue方法实现(如Integer.intValue(a))
7.compareable 和 compartor的区别
- compareable 如果一个对象实现了该接口,也就意味着可以通过Collections.sort and Arrays.sort 等排序方法进行排序
-Comparator 强行对某个对象 collection 进行整体排序 的比较函数,它可以实现排列顺序精确控制,或者为那些没有自然顺序的对象 collection 提供排序。(也就是没有实现Comparerable接口)
具体讲解可参照下面文章:
https://blog.csdn.net/ted_cs/article/details/82713706
https://blog.csdn.net/venus321/article/details/80778242