Java基础知识总结
- 格式:pdf
- 大小:229.84 KB
- 文档页数:9
Java基础知识总结
基础预备:低级基础1.1 java基本类型
byte(字节)
short(短整型)
int(整型)
long(长整型)
float(浮点型)
double(双精度)
char(字符型)
boolean(布尔型)
1.2值传递和引⽤传递的区别
值传递:实参初始化形参,两个存储单元不同,不影响实参的值
引⽤传递:实际参数与形式参数指向同⼀个地址,形式参数的改变将会影响实际参数1.3当⼀个对象被当作参数传递到⼀个⽅法后,此⽅法可改变这个对象的属性,并可返回变化后的结果,那么这⾥到底是值传递还是引⽤传递?
是值传递。⽅法调⽤该对象引⽤的参数,参数被改变,但是引⽤不会改变1.4 &和&&的区别。
&和&&都是逻辑「与」,&&只要第⼀个表达式是false就不会计算第⼆个表达式
&也可以作为运算符
2.1使⽤final关键字修饰⼀个变量时,是引⽤不能变,还是引⽤的对象不能变
引⽤变量不能变,引⽤变量所指向的对象中的内容可以改变2.2final类型可不可以不初始化,如果没有初始化的final类型应该在哪⾥初始化?
final⼀定有初始值,没有初始化叫空⽩final
如果没有需要声明之后在其构造器中赋值2.3 "=="和equals⽅法究竟有什么区别?
「==」是看两个对象引⽤是否指向同⼀个对象
「 equals() 」是⽐较两个对象的内容是否相等3.1静态变量和实例变量的区别
静态变量的变量前加了static 的修饰,其中⼀个对象将它值改变,其他对象得到的就是改变后的结果;
实例变量的变量前没加static 的修饰,某⼀个对象将其值改变,不影响其他对象3.2是否可以从⼀个static⽅法内部发出对⾮static⽅法的调⽤?为什么?
不可以。使⽤⾮static⽅法需要先创建对象,⽽使⽤static⽅法则不⽤4.1 java中什么是⾃动装箱与拆箱呢?
⾃动装箱是某地⽅需要Integer类型,你传int类型会⾃动⽣成Integer,
反之Integer变int,就是⾃动拆箱4.2 int 和 Integer 有什么区别
Int是基本数据类型,Integer是int的封装类。
原始类型封装类Boolean Boolean
Char Character
Byte Byte
Short Short
Int Integer
Long Long
Float Float
Double Double
5.1请说出作⽤域public, protected,以及不写时的区别
不写是表⽰friendly。
作⽤域当前类同⼀package ⼦孙类其他packagepublic √√√√
protected √√√×
friendly √√××
private √×××
6.1能不能⾃⼰写个类,也叫http://www.doczj.com/doc/2f10420580.html ng.String?
可以,但在应⽤的时候,需要⽤⾃⼰的类加载器去加载,否则,系统的类加载器永远只是去加载jre.jar包中的那个http://www.doczj.com/doc/2f10420580.html ng.String。
7.1 排序都有哪⼏种⽅法?请列举。⽤JAVA实现⼀个快速排序。
冒泡,选择,插⼊,快速
冒泡排序:
冒泡排序:先⽐较第⼀位和第⼆位,把⼩数放前⾯⼤数放后⾯,接着⽐较第⼆位和第三位,直到最后⼀位,通过两个for循环再重复总位数次8.1什么是堆什么是栈。
Java 把内存划分成两种:⼀种是栈内存,另⼀种是堆内存。
栈:⼀些基本类型的变量和对象的引⽤变量都是在函数的栈内存中分配,当超过变量的作⽤域后,java会⾃动释放掉为该变量分配的内存空间
堆:⽤于存放由new创建的对象和数组,数组和对象在没有引⽤变量指向它的时候,才变成垃圾,不能再被使⽤,但是仍然占着内存,在随后的⼀个不确定的时间被垃圾回收器释放掉8.2 heap和stack有什么区别。
heap是堆
stack是栈
栈:⼀些基本类型的变量和对象的引⽤变量都是在函数的栈内存中分配,当超过变量的作⽤域后,java会⾃动释放掉为该变量分配的内存空间
堆:⽤于存放由new创建的对象和数组,数组和对象在没有引⽤变量指向它的时候,才变成垃圾,不能再被使⽤,但是仍然占着内存,在随后的⼀个不确定的时间被垃圾回收器释放掉8.2 Static Nested Class 和 Inner Class的不同。
Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。⽽通常的内部类需要在外部类实例化后才能实例化。9. 1 数组有没有length()这个⽅法? String有没有length()这个⽅法?
数组没有length()这个⽅法,有length的属性。String有有length()这个⽅法。10.1描述⼀下JVM加载class⽂件的原理机制?
装载:查找和导⼊类或接⼝的⼆进制数据;
链接:执⾏下⾯的校验、准备和解析步骤,其中解析步骤是可以选择的;
校验:检查导⼊类或接⼝的⼆进制数据的正确性;
准备:给类的静态变量分配并初始化存储空间;
解析:将符号引⽤转成直接引⽤;
初始化:激活类的静态变量,初始化Java代码和静态Java代码块10.2、char型变量中能不能存贮⼀个中⽂汉字?为什么?
⼀个char占1个字节,所不能存放
第⼀章:万事万事皆对象1.1 ⾯向对象的概念
如果假设⼀部⼿机是⼀个对象的话,那么⼿机的⾼度,宽度等可以看做这个⼿机对象的属性,打电话发短信可以看做这个⼿机对象的⽅法,⽽⽣产这种⼿机的模板就是类。
在Java中,我们把属性数据和⽅法存放到类中(封装),通过类实例化出对象,围绕对象进⾏⼀系列的流程操作
⾯向对象式编程有三个特性,即抽象、封装、继承和多态1.2 封装的概念
是指把数据及对数据的操作⽅法放在⼀起,作为⼀个相互依存的整体——对象2.1是否可以从⼀个static⽅法内部发出对⾮static⽅法的调⽤?
不可以。使⽤⾮static⽅法需要先创建对象,⽽使⽤static⽅法则不⽤
第⼆章:初始化与清理1.1垃圾回收的优点和原理。并考虑2种回收机制。
垃圾回收可以有效的防⽌内存泄露,有效的使⽤可以使⽤的内存。垃圾回收器通常是作为⼀个单独的低级别的线程运⾏,不可预知的情况下对内存堆中已经死亡的或者长时间没有使⽤的对象进⾏清楚和回收,程序员不能实时的调⽤垃圾回收器对某个对象或所有对象进⾏垃圾回收。
回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。2.1 java中会存在内存泄漏吗,请简单描述。
会存在,就是程序员可能创建了⼀个对象,以后⼀直不再使⽤这个对象,这个对象却⼀直被引⽤,即这个对象⽆⽤但是却⽆法被垃圾回收器回收的,这就是java中可能出现内存泄露的情况2.2 内存泄露的防⽌
⽤spring管理对象2.3构造器Constructor是否可被override?
构造器不能被继承,因此不能重写,但可以被重载。
第三章:隐藏与实现1.1 Overload和Override的区别。Overloaded的⽅法是否可以改变返回
值的类型?Overload是重载的意思,Override是覆盖的意思,也就是重写
重载Overload可以改变返回类型
第四章:复⽤类4.1 组合的概念
组合就是A类是B类对象的⼀个属性!4.2 继承的概念
继承是⾯向对象最显著的⼀个特性。
⼦类可以拥有⽗类的属性的⽅法,并扩展其能⼒4.3 Java 继承与组合的区别
继承就是⼦类和⽗类看成⼀个对象
组合就像类中的⼀个对象类5.1、是否可以继承String类?
String类是final类故不可以继承
5.2继承时候类的执⾏顺序问题,⼀般都是选择题,问你将会打印出什么?
⽗类静态—⼦类静态—⽗类的⾮静态域—⽗类的构造器--⼦类的⾮静态域—⼦类的构造器
第五章:多态5.1 多态的概念
多态的最主要⽬的是接⼝重⽤,可以屏蔽不同⼦类对象之间的差异,写出通⽤的代码,以适应需求的不断变化
第六章:接⼝与内部类1.1、抽象类是什么?
⽐如说到肯德基就像到炸鸡汉堡之类的1.2、抽象类的特性?
1.抽象类不能被实例化,但有构造⽅法
2.抽象类的抽象⽅法必须由⼦类复写
3.如果类中包含⼀个抽象⽅法,该类必须为抽象类
4.抽象类可以有⾮抽象⽅法,也可以没有抽象⽅法
5.⼦类的抽象⽅法不能与⽗类抽象⽅法同名
6.Abstract不能与final并列修饰⼀个类
7.Abstract不能与final、static、private、native并列修饰⼀个⽅法
2.1、什么是接⼝?接⼝是⽤来建⽴类与类之间的协议,只提供⼀种形式⽽没有具体的实现⽅式。2.2、接⼝的特性是什么?
●接⼝中的属性是常量
●接⼝中的所⽤⽅法都是抽象⽅法
●接⼝不能被实例化
接⼝不允许实现接⼝2.3、接⼝与抽象类的区别?
抽象类拥有任意范围的变量,也拥有⾃⼰的⾮抽象⽅法;但在接⼝中,它没有构造⽅法,仅允许拥有静态的、不能改变的成员,它的所有⽅法都是抽象⽅法3.1接⼝是否可继承接⼝? 抽象类是否可实现(implements)接⼝? 抽象类是
否可继承实体类(concrete class)?
不可以。4.1什么是内部类?
类中的类4.2内部类有哪些好处?什么时候使⽤内部类?
实现多继承http://www.doczj.com/doc/2f10420580.html /jihuanliang/article/details/8661906
4.3 Static Nested Class 和 Inner Class的不同?
Static 不需要实例化,Inner需要实例化。
第七章:异常与类型识别1.1 异常的概念
派⽣于Error为系统异常,不可处理
派⽣于Exception异常为编程异常,可处理InterruptedException —线程中断异常
IOException — I/O异常
ArrayStoreException —错误的类型对象存在数组⾥
SecurityException —安全异常
1.2给我⼀个你最常见到的runtime exception。
2.1 error和exception有什么区别?
error 表⽰恢复不是不可能但很困难的情况下的⼀种严重问题。⽐如说内存溢出。不可能指望程序能处理这样的情况。exception 表⽰⼀种设计或实现问题。也就是说,它表⽰如果程序运⾏正常,从不会发⽣的情况。
2.2 final, finally, finalize的区别。
final ⽤于声明属性,⽅法和类,分别表⽰属性不可变,⽅法不可覆盖,类不可继承。finally是异常处理语句结构的⼀部分,表⽰总是执⾏。finalize是Object类的⼀个⽅法,在垃圾收集器执⾏的时候会调⽤被回收对象的此⽅法,可以覆盖此⽅法提供垃圾收集时的其他资源回收,例如关闭⽂件等。3.1运⾏时异常与⼀般异常有何异同,常见的运⾏时异常?