志在指尖
用双手敲打未来

java基础(知识点整理汇总)

java基础

Java源程序(.java文件)——>java字节码文件(.class文件)——>由解释执行器(java.exe)将字节码文件加载到java虚拟机(jvm)——>字节码文件(.class)就会在java虚拟机中执行。
java.lang其间包括有:
接口:Comparable、Cloneable、Runable等
类:八个基本数据类型封装类、Byte、Short、Integer、Long、Boolean、Character、Float、Double等
ArrayList和Vector的差异,HashMap和Hashtable的差异java和c++
答:就ArrayList与Vector主要从二方面来说:
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的。
二.数据增长:当需求增长时,Vector默许增长为本来一培,而ArrayList却是本来的一半ArrayList,Vector,LinkedList的存储功能和特性。
ArrayList和Vector都是运用数组办法存储数据,此数组元素数大于实际存储的数据以便增加和刺进元素,它们都答应直接按序号索引元素,可是刺进元素要涉及数组元素移动等内存操作,所以索引数据快而刺进数据慢,Vector因为运用了synchronized办法(线程安全),一般功能上较ArrayList差,而LinkedList运用双向链表完成存储,按序号索引数据需求进行前向或后向遍历,可是刺进数据时只需求记载本项的前后项即可,所以刺进速度较快。
就HashMap与HashTable主要从三方面来说.
一.历史原因:Hashtable是基于陈腐的Dictionary类的,HashMap是Java1.2引入的Map接口的一完成
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap答应在一个调集中有一个null键和在一个调集中有多个null值
Hashtable是HashMap的同步版本;HashMap答应有null值和一个null键,可是,Hashtable不答应有任何内容为null。Hashtable类的对象必须掩盖Object类的hashCode()和equals()办法关于其他调集类型。
一.ArrayList供给快速遍历和快速拜访。现在规划了新的RandomAccess接口,它指出这种列表支持快速随机拜访。Vector也完成了RandomAccess接口。
二.遍历HashSet与HashMap时,其次序是不知道的(但增加删去快)。LinkedHashSet和LinkedHashSet是依照元素的刺进的次序遍历的(遍历快)。
三.TreeSet和TreeMap将确保元素依照元素的自然次序进行摆放。也能够运用一个用户自己完成的比较规则。
四、HashSet有一个散列表支持它。它为基本操作供给固定时刻功能。TreeSet它确保了排序集将按元素升序,依据自然次序排序。

java基础知识点整理汇总

1.&和&&的差异?
&:逻辑与(and),运算符两头的表达式均为true时,整个结果才为true。
&&:短路与,假如第一个表达式为false时,第二个表达式就不会计算了。
2.在java中如何跳出当前的多重循环?
在循环句子外前面定义一个标号,然后在里层循环体的代码中运用带有标号的break句子,即可跳出循环。
比如:
ok:
for(inti=0;i<10;i++){
{
for(intj=0;j<10;j++){
breakok;
}
}
}
3.最有功率的办法算出2X8等于几?
运用位运算,功率最高:2<<3,表示2向左移动了3位,就相当于2乘以2的3次方,结果:16。
4.”==”和equals办法究竟有什么差异?
==:表示两个变量的值是否持平,比较两个根本数据类型的数据或许引证变量,用==。
equals:用于比较两个独立方针的内容是否相同。字符串的比较也用equals。java
5.Int和integer的差异?
Int是Java的8中根本数据类型之一,integer是int的封装类。Int类型的默认值为0,integer默认值为null,所以差异在于,integer能区分出null值和0的差异。
6.三个与取整有关的办法:
Math.ceil():表示向上取整;Math.ceil(11.3)=12;Math.ceil(-11.3)=-12。
Math.floor():表示向下取整;Math.floor(11.6)=11;Math.floor(-11.6)=-12。
Math.round():表示四舍五入;Math.round(11.5)=12;Math.round(-11.5)=-11;
Math.round(11.3)=11;Math.round(-11.3)=-11;
7.重载和重写的差异?
重载(Overload):函数名相同,参数不同。能够改动返回值类型,参数的个数和类型。
重写(Override):和父类的的办法称号、参数完全相同。
8.面向方针的特征?
封装:将方针属性和办法的代码封装到一个模块中,也便是一个类中,确保软件内部具有优良的模块性的根底,完成“高内聚,低耦合”。
笼统:找出一些事物的类似和共性之处,然后归为一个类,该类只考虑事物的类似和共性之处。笼统包括行为笼统和状况笼统。
承继:在已经存在的类的根底上进行,将其定义的内容作为自己的内容,并能够参加新的内容或许修正原来的办法合适特殊的需求。
多态:同一操作作用于不同的方针,能够有不同的解释,发生不同的履行结果,便是多态,简单点说:便是用父类的引证指向子类的方针。目的:进步代码复用性,解决项目中紧耦合问题,进步可扩展性。
多态的机制:靠的是父类的或许接口的引证变量能够指向子类或许具体完成类的实例方针。
9.String和StringBuffuer、StringBuilder的差异?
String:字符串数值不行变;
StringBuffer:字符串可修正,能够动态构造字符数据。StringBuffer类是能够经过Append()来修正值。线程安全。
StringBuilder:线程不安全。
三者在履行速度方面的比较:StringBuilder>StringBuffer>String
关于三者运用的总结:
1.假如要操作少量的数据用=String
2.单线程操作字符串缓冲区下操作很多数据=StringBuilder
3.多线程操作字符串缓冲区下操作很多数据=StringBuffer
10.java中有几种办法完成一个线程?用什么关键字润饰同步办法?stop()和suspend()办法为何不推荐运用?
第一种:承继Thread类。NewThread(){}.start():表示调用子类方针的run办法。
第二种:完成Runable接口。
第三种:线程池创立多线程。
第四种:完成Callable接口,重写call函数(
承继Thread类完成多线程,重写run办法时没有返回值也不能抛出反常,运用Callable接口就能够解决这个问题。
Callable接口和Runnable接口的不同之处:
1.Callable规则的办法是call,而Runnable是run
2.call办法能够抛出反常,可是run办法不行
3.Callable方针履行后能够有返回值,运转Callable使命能够得到一个Future方针,经过Future方针能够了解使命履行情况,能够撤销使命的履行,而Runnable不行有返回值

用synchronized关键字润饰同步办法。
对立运用stop(),是因为它不安全。它会解除由线程获取的所有确定,并且假如方针处于一种不连贯状况,那么其他线程能在那种状况下查看和修正它们,结果很难查看出真实的问题所在。
suspend()办法容易发生死锁。调用suspend()的时候,方针线程会停下来,但却仍然持有在这之前获得的确定。此时,其他任何线程都不能访问确定的资源,除非被”挂起”的线程康复运转。对任何线程来说,假如它们想康复方针线程,一起又企图运用任何一个确定的资源,就会造成死锁。所以不应该运用suspend(),而应在自己的Thread类中置入一个标志,指出线程应该活动仍是挂起。若标志指出线程应该挂起,便用wait()命其进入等待状况。若标志指出线程应当康复,则用一个notify()重新启动线程。
更多基础知识:https://www.cnblogs.com/talenter/p/9652976.html

未经允许不得转载:IT技术网站 » java基础(知识点整理汇总)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载