java基础(一)

第一部分

作用域public,private,protected,以及不写时的区别

PublicProtectedPrivate是成员访问修饰符;

finalabstracttransientsynchronizednativestrictfp是非访问成员修饰符。

可见性Public Protected Default Private

同一个类是是是是

同一个包中的类是是是否

同一个包中的子类是是是否

同一包外的子类是是否否

同一包外的非子类是否否否

Java的基本包

java.lang 其中包含有:

接口:ComparableCloneableRunable

类:八个基本数据类型封装类、MathRuntimeObjectStringStringBufferThreadException

集合框架

集合是将多个元素组成一个单元的对象。集合用于存储、检索和操纵数据。

集合框架提供管理对象集合的接口和类。它包含几个组件,接口是表示集合的抽象数据类型,用于操纵集合;类是用于存储集合的实际数据对象;算法是用于操纵集合的。

ArrayListVector的区别,HashMapHashtable的区别

ArrayListVector主要从二方面来说.

.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的

.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半

ArrayList,Vector, LinkedList的存储性能和特性

ArrayListVector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

HashMapHashTable主要从三方面来说.

.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMapJava 1.2引进的Map接口的一实现

.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的

.值:只有HashMap允许在一个集合中有一个null键和在一个集合中有多个null

HashtableHashMap的同步版本;HashMap允许有null值和一个null键,但是,Hashtable不允许有任何内容为null

Hashtable类的对象必须覆盖Object类的hashCode()equals()方法

关于其他集合类型:

.ArrayList提供快速遍历和快速访问。现在设计了新的 RandomAccess接口,它指出这种列表支持快速随机访问。Vector也实现了RandomAccess接口。

.遍历HashSetHashMap时,其顺序是未知的(但添加删除快)。LinkedHashSetLinkedHashSet是按照元素的插入的顺序遍历的(遍历快)。

三.TreeSetTreeMap将保证元素按照元素的自然顺序进行排列。也可以使用一个用户自己实现的比较规则。

四、HashSet有一个散列表支持它。它为基本操作提供固定时间性能。TreeSet它确保了排序集将按元素升序,根据自然顺序排序。

Dictionary

主要用于将关键字转换成值,该类接收一个关键字并返回一个值。Dictionary是一个抽象类,它是H

Hashtable的超类。

Properties

扩展了Hashtable类,但Properties对象的关键字和值必须是String类型,并能将对象写入一个输出流并保存在一个文件中,然后可以把它读回一个输入流。

如果需要维护和搜索一个部件列表,它们由唯一的字母数字序列号标示,其中的部件是Part类型,这时应该使用哪种集合?如果我们改变需求,你也需要能够按顺序、按它们的序列号打印出部件?

1、应该选择HashMap

2、应该选择TreeMap

char型变量中能不能存贮一个中文汉字?为什么?

是能够定义成为一个中文的,因为java中以unicode编码,一个char16个字节,所以放一个中文是没问题的

多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

多线程有两种实现方法,分别是继承Thread类与实现Runnable接口

同步的实现方面有两种,分别是synchronized,waitnotify

GC是什么?为什么要有GC?

GC是垃圾收集的意思(Gabage Collection,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。

垃圾回收机制,如何优化程序?

当一个对象失去引用或者离开了作用域后,就成为垃圾而被Java运行环境自动清除,清除垃圾就是清除这些对象。

Java垃圾回收机制的特点是:

1、垃圾回收机制自动运行。系统提供一个低优先级的线程来跟踪内存的分配情况。如果发现某个内存单元不再使用,就清除它。

2、何时清除垃圾是不可预期的。

3、垃圾回收机制随JVM的不同而不同。

Java的垃圾搜索器为内存管理器提供一种自动解决方案。缺点是不能完全控制它什么时候执行以及什么时候不执行。

当垃圾搜集器运行时,其目的是查找和删除不能被访问的对象。

垃圾搜集器受JVM控制,JVM决定什么时候运行垃圾搜集器。从Java程序内可以请求JVM运行垃圾搜集器,但是,在任何情况下都无法保证JVM会答应你的请求。JVM通常会在它感到内存减少时运行垃圾搜集器。

垃圾收集器运行时,当它发现一个对象不能被任何活线程访问时,它将认为该对象符合删除条件,它可能在某时删除该对象。

垃圾收集器不能保证有足够的内存,它只能保证可以使用的内存将尽可能被有效的管理。

使对象符合垃圾搜集器搜索条件的情况有:出现空引用、重新为引用变量赋值、隔离引用。

强制执行垃圾搜集:

Runtime对象为直接与虚拟机通信提供一种机制。System类可以调用与其相同的方法。

请求垃圾收集器的最简单的方法是:System.gc();

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值