开发工具:
文件大小: 5mb
下载次数: 0
上传时间: 2019-10-05
详细说明:JAVA 基础知识总结包括:1.java 基础与算法;2.算法 与 解决方案;3.类加载机制等内容法(线程安仝),通常性能上较 ArrayList差,而 Linkedlist使用双向链表实现存储,按序
号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,
所以插入速度较快。
7. Collection和 Collections的区别。
答: Collection是 java. util|下的接∏,它是各种集合的父接∏,继承于它的接∏主要有
Set和List
Collections是个 java util下的类,是针对集合的帮助类,提供一系列静态方法实现对各
种集合的搜索、排序、线程安全化等操作
8&和&&的区别
答:&是位运算符,衣示按位与运算,&&是逻辑运算符,衣示逻辑与(and)。&&还具
有短路的功能
9 HashMap和 Hashtable区别?
答:二者都实现了Map接口,是将惟一键映射到特定的值上:主要区别在J:
1) Hash Map没有排序,允许一个nul键和多个hul值而 Hashtable不允许
2) Hash Map把 Hashtable的 contains方法去掉了,改成 containsvalue和 contains Key因为
contains方法容易让人引起误解
3) Hashtable继承自 Dictionary类, HashMap是lava12引进的Map接口的实现
4) Hashtable的方法是 Synchronize的,而 Hash Map不是,在多个线程访问 Hashtable时,
不需要自己为它的方法实现同步,而 Hash Map就必须为之提供外同步。
Hashtable和 Hash Map采用的hash/ rehash算法大致一样,所以性能不会有很大的差异
10.fina, finally, finalize的区别。
答: final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承
内部类要访问局部变量,局部变量必须定义成 final类型,例如,“段代码.
finally是异常处理语句结构的一部分,表示总是执行。
finalize是 Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,
叮以覆盖此方法提供垃圾收集时的其他資源囯收,例如关閉文件等。VM不倮让此方法
总被调用
11 Overload和 Override的区别。 Overloaded的方法是否可以改变返回值的类型?
答:方法的重写 Overriding和重载 Overloading是Java多态性的不同表现。重写
Overriding是父类与子类之间多态性的一种表现,重载 Overloading是一个类中多态性的
种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重
写( Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类
中的定义如同被“屏敞”了。如果在个类中定义了多个同名的方法,它们或有不同的
参数个数或有不同的参数类型,则称为方法的重载( Overloading) Overloaded的方法是
可以改变返回值的类型
12 error和 exception有什么区别?
答:eror表示系统级的错误和稈序不必处理的异常,是恢复不是不可能佀很闲难的情
况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;
exception表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是
说,它表示如果程序运行正常,从不会发生的情况
13. abstract class和 interface有什么区别?
答
相同点:1、均不能生成实例(不能使用neW生成实例)
2、可以声明变量,但必须指向子类或者实现类的对象(即不能为 private)
2/166
3、在接口中可以声明一个标记接口(即没有任何方法声明,表示具有某种功能)
在抽象类中可以声明一个没有抽象方法的抽象类
不同点:1、java只允许子类有一个父类,不允许多重继承,但子类可以实现多个接口
2、接口比抽象类应用更广泛、灵活
3、接∏内不能有任何实例字段,但抽象类可以有实例字段以及实现了的方法
4、接口内的所有方法默认为pubc,而抽象类必须手动标识
5、继承类不必实现抽象类中的所有 abstract方法,而实现类必须实现接口中的所
有方法
14. Static Nested class和 Inner Class的不同?
答: Static Nested class是被声明为静态( static)的内部类,它可以不依赖于外部类实
例被实例化。而通常的内部类需要在外部类实例化后才能实例化
15GC是什么?为什么要有GC?
答:GC是垃圾收集的意思( Gabage collection)内存处理是编程人员容易出现问题的地
方,忘记或者错误的内存回收会导致稈序或系统的不稳定甚至崩溃,Java提供的GC功
能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供
释放已分配内存的显小操作方法
16. short s1=1;s1=s1+1;有什么错? short s1=1;1+=1;有什么错?
答: short s1=1;s1=s1+1;s1+1运算结果是int型,需要强制转换类型
short s1=1;s1+=1;可以正确编译,自动类型提升
17. Math. round(115)等于多少? Math. round(-115)等于多少?
答: Math. round(15)12 Math. round(-115)-11 round方法返回与参数最接近的长
整数,参数加1/2后求其 floor o
18 String s= new string("xyz");创建了几个 String object?二者之间有什么区别?
答:两个对象,一个是"xyx",一个是指向"xyx"的引用对象s
19AVA有没有goto?
答:有,goto保留字
20.请写出你最常见到的几个 runtime exception
F: NullPointer Exception, ArraylndexOutOfBounds Exception, Class CastException
IOExceptio、 ClassNotFoundException。
21接口是否可继承接口?抽象类是否可实现( implements接口?抽象类是否可继承具体类
concrete class)?抽象类中是否可以有静态的main方法
答:接口可以继承接口。抽象类可以实现( implements接口,抽象类可继承具体类。抽
象类中可以有静态的main方法。
只有记住抽象类与普通类的唯一区别就是不能创建实例对象和允许有
abstract方法
22.List,set,Map是否继承自 Collection接口?
List,Set是,Map不是
23.数组有没有 length0)这个方法? String有没有engt(这个方法?
答:数组没有| ength(这个方法,有| ength的属性。 String有 length)这个方法。
24.set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是 equals?
它们有何区别?
答:Set里的元素是不能重复的,元素重复与否是使用 equals()方法进行判断的。Set里
的元素是不能重复的,用 equals(方法米区分重复与否。覆盖 equals()方法用米判断对
象的内容是否相同,而”=”判断地址是否相等用来决定引用值是否指向同一对象。
3/166
25构造器 Constructor是否可被 override?
答:构造器 Constructor不能被继承,因此不能重写 Override,但可以皱重载 Overload。
26是否可以继承 String类?
答: String类是 final类,不能被继承
27 swtich是否能作用在byte上,是否能作用在long上,是否能作用在 String上?
答: switch(expr1)中,epr1是一个整数表达式。因此传递给 switch和case语句的
参数应该是int、 short、char或者byte。long, string都不能作用于 swtich
8try}里有一个 return语句,那么紧跟在这个try后的 finall!甲的code会不会被执行,什
么时候被执行,在 return前还是后?
答:会被执行,在 return之前
29当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变
化后的结果,那么这里到底是值传递还是引用传递?
答:是值传递。εJava编程语言只有值传递参数。当一个对象实例作为一个参数被传递到
方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但
对象的引用是永远不会改变的
30你所知道的集合类都有哪些?主要方法?
答:最常用的集合类是Lst和Map。List的具体实现包括 Arraylist和 Vector,它们
是可变大小的列表,比较适合构建、存储和操作仁何类型对象的元素列表。List适用
于按数值索引访问元素的情形
Map提供了一个更通用的元素存储方法。Map集合类用于存储元素对(称作"键"和"
值"),其中每个键映射到一个值
31.char型变量中能不能存贮一个中文汉字?为什么?
答:能够定义成为个中文的,因为java中以 unicode编码,个char占16个字节,
所以放一个中文是没问题的。
33.JAVA语言如何进行异常处理,关键字: throws, throw, try, catch. final!y分别代表什么意义?
在try块中可以抛出异常吗?
答:Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良
好的接∏。在Java中,每个异常都是个对象,它是 Throwable类或其它了类的实例。
个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象
的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词米实现的
try、 catch、 throw、 throws和 finally。一般情况下是用ty来执行一段程序,如果出现
异常,系统会抛出( throws)一个异常,这时候你可以通过它的类型来捕捉( catch)它,
或最后( finally)由缺省处埋器来处埋
try用来指定一块预防所有“异常”的程序
catch子句紧跟在try块后面,用来指定你想要捕提的“异常”的类型
throw语句用来明确地抛出一个“异常”;
throws用来标明一个成员函数可能抛出的各种“异常”;
Finally为确保一段代码不管发生什么“异常”都被执行一段代码
可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语
句保护其他代码。每当遇到一个try语句,“异常”的框架就放到堆栈上面,直到所有
的ty语句都完成。如果下·级的try语句没有对某种“异常”进行处理,堆栈就会展开,
直到遇到有处理这种“异常”的try语句。
34静态变量和实例变量的区别?
答:静态变量也称为类变量,归全类共有,它不依赖于某个对象,可通过类名直接访问
4/166
而实例变量必须依存于某一实例,只能通过对象才能访问到它
35是否可以从一个 static方法内部发出对非 static方法的调用?
答:不可以如果其中包含对象的 method),不能保证对象初始化。
.List、Map、Set三个接口,存取元素时,各有什么特点?
答:List以特定次序来持有元素,可有重复元素。Set无法拥有重复元素,内部排序,
Map保存 key-value值,vaue可多值。
37请阐述一下你对“面向接口编程”的理解
在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这
种情况下,各个对象内部是如何实现自己的对系统设计人员来计就不那么重要了:而各
个对象之间的办作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之
间的交互,在系统设计之初都是要着重老虑的,这也是系统设计的主要工作内容
8 Servlet的生命周期
可分为3个阶段
初始化阶段
相应客户请求阶段
终止阶段
在 javax. servlet Servlet接口定义了3个方法init(). service() destroy),他们将分别在 Servlet
的不同阶段被调用
41服务器端跳转和客服端跳转的区别
客服端跳转改变URI
服务器端跳转不改变URL
42==和 equals()方法的区别
二=号在比较基本数据类型时比较的是值,而用=号比较两个对象吋比较的是两个对象的
地址值。
equals0)方法存在于 Object类中,因为 Object类是所有类的直接或间接父类,也就是说
所有的类中的 equals()方法都继承自 object类,而通过源码我们发现, object类中 equals()
方法底层依赖的是==号,那么,在所有没有重写 equals()方法的类中,调用 equals(方法
其实和使用=号的效果·样,也是比较的地址值,然而,Java提供的所有类中,绝大多
数类都重写了 equals(方法,重写后的 equals()方法一般都是比较两个对象的值
43. Object类有哪些方法
c Object
Objecto
o cloned: Object
e equals(Object): boolean
f五 maizel0:void
● getClass(0: Classs2>
● hashCode0:int
dF notify: void
d notifyAllo: void
string: String
dF waitO: void
wait(long): void
dF wait(long, int): void
5/166
Object类有12个成员方法,按照用途可以分为以下几种
构造函数
2, hash Code和 equale函数用来判断对象是否相同,
3, wait(, wait(long), wait(long int), notify, notify allo
4, toString( Fu getclass
5, clone
6, finalize用于在垃圾回收
clone
cone(函数的用途是用来另存一个当前存在的对象。
hashCodel)和equa|e()
equale()用于确认两个对象是否相同。
hashCode(用于获取对象的哈希值,这个值的作用是检索,具体的作用可以参考这里
哈希值相同的对象不一定 equale()
eaua|e(返回true的两个对象一定相同。
toString()和 getclass(0
tostring(返回一个 String对象,用来标识自己
getclass(0返回一个 Class对象,如果打印出来会发现结果是如下格式
class package name.xXx
因为返回的是一个cass对时象,后面可以跟clas类的方法。用的是谁的构造函数,那么 getClass
返回的就是谁的类型。
getclass(经常用于java反射机
waito, wait(long), wait(long, int), notify o, notify allo
这几个数体现的是Java的多线程机制
在使用的时候要求在 synchronize语句中使用
wait(用于让当前线程失去操作权限,当前线程进入等待序列
noty()用于随机通知一个持有对象的锁的线程获取操作权限
notify(用于通知所有持有对象的锁的线程获取操作权限
wait(long)和wait( long, int)用于设定下一次获取锁的距离当前释放锁的时间间隔
finalize
这个函数在进行垃圾回收的时候会用到,匿名对象回收之前会调用到
45 Java new对象时都做了什么东西?
(1)类加载并初始化类中的静态属性(赋默认值,如果静态属性有自己赋值,则显示自己
赋的值
(2)执行静态代码块。之前进行过类加载,则从第3步开始进行
(3)初始化类中的非静态属性
(4)调用父类的构造器(如果父类构造器中调用了子类重写后的父类方法,则调用子类的方
(5)父类构造器执行完以后,如果自己声明的属性有显示的赋值,则覆盖默认值
(6)执行匿名代码块
(7)执行构造器
(8)返回内存地址
46传值和传引用
值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形
6/166
式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,
所以方法执行中形式参数值的改变不影响实际参数的值。
引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是
对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操
作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形
式参数的改变将会影响实际参数。
47JAVA反射
Reflection机制允许程序在止在执行的过程中,利用 Reflection Apis取得任何知
名称的类的内部信息,包括:
package、 type parameters、 superc1ass、 implemented interfaces、i
nner classes、 cuter classes、 fields、 constructors、 methods、mo
differs等,并可以在执行的过程中,动态生成 instances、变更£ie]ds内容或唤起
me thods
1、获取构造方法
Class类提供了四个 public方法,用于获取某个类的构造方法
Constructor getConstructor(Classl] params
根据构造函数的参数,返回一个具体的具有 public属性的构造函数
Constructor getConstructors(
返回所有具有pub1ic属性的构造函数数组
Constructor getDeclaredConstructor(class[] params
根据构造函数的参数,返回一个只体的构造函数(不分po1ic和非 public属性)
Constructor getDeclaredConstructors(
返回该类中所有的构造函数数组(不分pub1ic和非 public属性)
反南出向中的构盛法输出打的式!“ Modifier饰城构方进名(世例
pu海14品专v压d回!、R专0币C6作st萨电必产(研Hf){
Ca音tpr,getC】a);
5 tring")
3、获取类的成员变量(成员属性
存在四种获取成员属性的方法
Field getField(string name
根据变量名,返回一个具体的具有 oublic属性的成员变量
d[] getFields(
返回具有 oublic属性的成员变量的数组
Field getDeclaredfield(string
根据变量名,返回一个成员变量(不分pub1ic和非pub1ic属性)
Field[ getDeicaredFields(
返回所有成员变量组成的数组(不分puo1ic和非pub1ic属性)
4反射创建类的实例
(1)方法一:对象 getclass5)
Student stu=new Student(
Class clazz=stu. get(
(2)方法二:类cass
Class clazz= Student class
Class clazz=String. class,
(3)方法三: Class forname(
clazz=class for Name(java. lang String);
clazz=Class for Name "java util. Date");
5. Class for Name o 4 ClassLoader loadclass
Class forName(className)方法,内部实际调用的方法是
8/166
Class for Name(className, true, classloader);
第2个 boolean参数表示类是否需要初始化, Class forname( className)默认是需要初始化
口初始化,就会触发目标对象的 static块代码执行, static参数也也会被冉次初始化
Classloader! oadclassi( classname)方法,内部实际调用的方
ClassLoader load Class(className, false
第2个 boolean参数,表示日标对象是否进行链接, false表示不进行链接,由上面介绍可
以,不进行链接意味着不进行包括初始化等一些列步骤,那么静态块和静态对象就不会得到
执行
使用 Class forName( classname)才能在反射回去类的时候执行 static块
48注解
4种标准儿注解元注解的作用是负责注解其他注解。
Target修饰的对象范围 Target说明了 Annotation所修饰的对象范围: Annotation
可被用」 packages、 ty pes(类、接口、枚举、 Annotation类型)、类型成员(方法、
构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、 catch参数)。
Retention定义被保留的吋间长短 Retention定义了该 Annotation被保留的时间长
短:表小需要在什么级别保存注解信息,用于描述注解的生命周期
Documented述- javadoc Documented用于描述其它类型的 annotation应该
被作为被标注的程序成员的公共APⅠ,因此可以被例如 javadoc此类的工具文档化
Inherited阐述了某个被标注的类型是被继承的
55.线程安全的实现方法
1.互斥同步
互斥同步( Mutual exclusion& Synchronization)是常见的一种并发正确性保障于段。同步
是指在多个线程并发访问共享数据时,保证共享数据在同·个时刻只被个(或者是·些,
使用信号量的时候)线稈使用。而互斥是实现同步的一种手段,临界区( Critical
Section)、互斥量( Mutex)和信号量( Semaphore)都是主要的互斥实现方式。因此,在这
4个字里面,互斥是因,同步是果;互斥是方法,同步是目的。
在Java中,最基本的互斥同步于段就是 synchronized关键字, synchronized关键字经过编译
之后,会在同步块的前后分别形成 monitorenter和 monitorexit这两个字节码指令,这两个
字节
码都需要一个 reference类型的参数米指明要锁定和解锁的对象。如果Java程序中的
synchronized明确指定了对象参数,那就是这个对象的 reference;如果没有明确指定,那就
根
据svnη chronized修饰的是实例方法还是类方法,去取对应的对象实例或Cass对象来作为锁
对
象
除了 synchronized之外,我们还可以使用 java util. concurrent(卜文称JUC)包中的重入锁
( Reentrantlock)来实现同步,在基本用法上, Reentrantlock与 synchronized很相似,他们
都
具备一样的线程重入特性,只是代码写法上有点区别,一个表现为AP层面的互斥锁
(lock()和 unlock()方法配合try/ finally语句块来完成),另一个表现为原生语法层面的
互
斥锁。不过,相比 synchronized, ReentrantLock增加了一些高级功能,主要有以下3项:等待
中断、可实现公平锁,以及锁可以绑定多个条件。
9/166
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.