day2

HashMap和Hashtable的区别。

相同点:都实现了Map接口
不同点:HashMap是线程不安全的,Hashtable是线程安全的。HashMap可以接受null作为键值对的key值,hashtable不可以。hashtable由于是线程安全的,所以在单线程的环境下比hashmap慢。
jdk1.5以后有了hashtable的替代类ConcurrnetHashMap,是线程安全的,并且速度比hashtable快

什么时候用assert

判断程序在某个时间点是否到达了某种要求的状态,可以用assert断言。具体的例子是去银行取钱,取出的钱数不能为负,不能比余额大等限制,可以用断言来实现程序到达的状态。

GC是什么? 为什么要有GC

garbage collection 垃圾回收。

String s = new String(“xjq”);创建了几个String Object?

如果“xjq”在常量池中已经存在,那么值创建了一个String对象在堆上
如果“xjq”在常量池中不存在,那么会创建两个String对象,一个创建在常量池中一个创建在堆上。

Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

12 -11

short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

前面的句子无法编译,因为s1 = s1 + 1 中的1默认是int类型的,编译器提示将int变为short会有精度损失的错误。

 s1 = s1 + (short)1;//强制转化也不行
 s1 = (short) (s1 + 1);//这样可以
 //因为在进行数学运算时,数据类型会自动发生提升到运算符左右的较大的类型,因此上一句s1提升为int类型,右边的int类型强制转化为short出错

后一句不报错。

数组有没有length()这个方法? String有没有length()这个方法?

数组没有length方法,但是又length属性,String有length方法。

Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?

Set会使用对象的hashCode()和equals()方法来比较两个对象是否相等。HashSet会在内存中开设空间,每个空间会有哈希编码(HashCode),这个内存空间叫做哈希桶(Hash Bucket)。如果对象要加入HashSet,会调用对象的hashCode()取得哈希码,并尝试放入对应的哈希桶(内存)中,如果哈希桶中没有对象,则直接放入,如果有,则用equals()进行比较,为false则放入,为true则不放入。
对基础类型来说,==没有区别,但是对高级类型,包装类型,如果用==比较的是内存地址,equals比较的是两个内存地址保存的内容是否相同。

abstract class 和 interface的区别

  1. 本质是类和接口的区别,类是事物属性的抽象,接口是事物行为的抽象,也就是如果a是一个类,事物是is a的关系,b是一个接口,事物是has a的关系。
  2. abstract class是一个抽象类,修饰方法时是一个抽象方法,这个方法不包含实现的代码块,抽象类必须由子类继承,但是抽象方法不一定由子类实现。但是如果是实现某种接口的类,子类必须全部实现接口的所有方法。如果接口中增加了一个新的方法,那好像所有实现了这个接口的类都需要修改吧,好像又不是,jdk1.8有了接口默认的实现方式,用default修饰方法。

Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

Overload是重载,是指一个方法中可以含有相同的方法名,但是方法的参数类型或者参数顺序不同,返回类型也可以不同。
Override是重写,一种是对接口方法的重写,一种是对父类同种方法的重写,重写是返回的参数顺序,数目,返回类型都必须相同的,就是函数的壳是一样的,但是内容不一样。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值