JAVA 基础(二)

JAVA 基础(二)

谈谈数组(Array)和列表(ArrayList)的区别,两者在什么时候使用

回答:
(1)Array可以包含基本类型和对象类型,ArrayList只能包含对象类型
(2)Array大小是固定的,而ArrayList的大小是动态变化的。
(3)ArrayList提供更多的特性和方法。

对于基本数据类型,集合自动装箱减少工作量,在处理固定大小的基本数据类型的时候,Array更比较快捷

·解释一下什么是值传递和引用传递

值传递是相当于传递的该变量的一个副本,副本进行改变而原变量不变。

引用传递,则是对该对象的地址的一个副本进行传递,而不是原对象本身,所以引用对象进行改变则原对象本身也会被改变

一般的,我们认为Java内的传递是值传递

·java支持的数据类型有哪些,什么是自动拆装箱

(1)八种基本数据类型:
byte
char
long
short
float
double
int
boolean
(2)自动拆装箱,是java编译器在基本数据类型和对应的对象包装类型之间的转换。
int 转换为integer是装箱,反之为拆箱

·解释一下4.0-3.6=0.40000001这种现象

在计算机中进行计算时,并不是10进制进行的计算,而是转换为2进制进行的计算,在这个过程中,出现了误差

· 讲一下十进制在内存中是怎么存的

补码的形式(并不是很理解!!!)

·说一下lambda表达式的优缺点

优点:
简洁,容易并行计算
缺点:
不进行并行运算时,没有传统的for循环快

不容易调试

对于其他没有学过的程序员来说,不容易看懂

·java8的新特性

lambda表达式的加入

方法引用,与lambda联合使用,减少冗余代码

默认方法

新工具,新的编译工具: nashorn引擎jjs,类依赖分析器jdeps

Stream API的添加,函数式编程风格引入java

Date Time API 加强对日期与事件的处理

Optional类 用来解决空指针异常

js引擎

·符号“==”比较的是什么

在比较内存引用时,如果两个对象的引用完全相同则返回true,反之为false

在比较基本类型,则是对值得比较是否相等

·解释Object若不重写hashCode()的话,hashCode()如何计算出来的

hashcode是本地方法,即用c语言和c++实现的,该方法直接返回对象的内存地址

·解释为什么equals和hashcode一起重写?

如果不进行equals重写的话,则是对两个对象的内存地址进行的比较,无法对我们所想比较的值进行比较,即使是相等的值也会变为不相等,所以要进行重写
(hashcode进行重写,还不是很明白!!!)

·Map的分类和常见情况

Map 主要用于存储键值对,可以通过键来得到值,不允许键重复,允许值重复

HashMap 是常用的Map,他是根据键的hashcode值来存储数据,可以通过键来得到值,访问速度快,遍历时,顺序是随机的,其中,只允许一条记录的键为Null,多个记录的值为null
,不支持同步,即一个时刻多个线程同时写Hashmap,导致数据不一致,需要用同步锁来使它同步

HashTable与HashMap类似,但是不允许记录的键或者值为空,支持同步,即一个时刻只能有一个线程写hashtable,所以效率比较低

LinkedHashMap是HashMap的一个子类,保存了写=插入顺序
,在遍历时,先得到的是先插入的记录

TreeMap实现SoftMap接口,能够保存的记录根据键排序,默认按键的升序排序,也可以指定排序的比较器,遍历时,是排过序的记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值