Java 学习总结(可能是你从来没有考虑过的问题)

本文详细解析了Java中的关键概念,包括Set的元素唯一性判断方法、接口与抽象类的关系、switch语句适用类型、ArrayList与Vector的区别、HashMap与Hashtable的不同之处、char型变量存储中文的能力、heap与stack的区别、final与finally及finalize的用途、sleep与wait的区别、String与StringBuffer的对比、Servlet的生命周期及其与CGI的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别
答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等
    equals()
==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值

2、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)
答:
接口可以继承(extends)接口。抽象类可以实现(implements)接口,抽象类可继承实体类,但前提是实体类必须有明确的构造函数。

 

3swtich是否能作用在byte上,是否能作用在long上,是否能作用在String
答:switchexpr1)中,expr1是一个整数表达式。因此传递给 switch  case 语句的参数应该是 int short char 或者 bytelong,string 都不能作用于swtich

4、ArrayList和Vector的区别,HashMap和Hashtable的区别
答:ArrayListVector主要从二方面来说.
.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的

.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
HashMapHashTable主要从三方面来说。
.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMapJava 1.2引进的Map接口的一个实现
.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
.值:只有HashMap可以让你将空值作为一个表的条目的keyvalue

 

5、char型变量中能不能存贮一个中文汉字?为什么?
答:
是能够定义成为一个中文的,因为java中以unicode编码,一个char16个字节,所以放一个中文是没问题的

6、heapstack有什么区别
答:栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素

7、谈谈final, finally, finalize的区别
答:final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为   abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载    
  finally—
再异常处理时提供   finally   块来执行任何清除操作。如果抛出一个异常,那么相匹配的   catch   子句就会执行,然后控制就会进入   finally   块(如果有的话)。    
  finalize—
方法名。Java   技术允许使用   finalize()   方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在   Object   类中定义的,因此所有的类都继承了它。子类覆盖   finalize()   方法以整理系统资源或者执行其他清理工作。finalize()   方法是在垃圾收集器删除对象之前对这个对象调用的。  

 

8、sleep()wait()有什么区别?vs
  sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。   waitObject类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
 

9、StringStringBuffer的区别?`Yk|k
  JAVA平台提供了两个类:StringStringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。c

10、说出Servlet的生命周期,并说出ServletCGI的区别。K
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGetdoPost)等,当服务器决定将实例销毁的时候调用其destroy方法。     cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值