没有合适的资源?快使用搜索试试~ 我知道了~
Java--工作面试总结.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 85 浏览量
2022-06-25
10:43:37
上传
评论
收藏 2.46MB DOC 举报
温馨提示
试读
64页
Java--工作面试总结.doc
资源推荐
资源详情
资源评论
JAVA
OOP
OOP 简介
面向对象编程这里主要理解”对象”的概念在 中体现的是万物皆对象所有的对象
都继承自”类且是单根继承的结构即一个类只能有一个父类但接口不受此限制因
为接口不是”类”而只是对类的一个规范性的限制即实现某接口的类必须和这样的结构有
这种方法等…
面向对象三大特性封装继承多态
抽象类和接口
抽象类即”抽象”的类既然它是抽象的则它没有具体的对象在程序中体现的就是无法实例
化抽象类同样抽象类也是类所以它也只能有一个父类抽象类中可以有具体的方法也可以
有抽象方法但一个类里如果有抽象方法则它必须是抽象类如果一个类 继承一个抽象类
则 必须实现 中的抽象方法或将 也设为抽象类于是我们就得到了和接口一样的效果
规定对象的对外接口即在一定程度上规定它有哪些方法
但接口比抽象类更抽象它里面没有任何方法体只是列出了方法的名称返回值接收值而且
接口可以多重继承 这样就可以继承多个接口一个类也可以实现多个接口
在选择抽象类或接口时衡量的标准是是否需要公用的方法如果需要则用抽象类
对象声明,实例化
栈中存放的是基本类型变量值和对象的引用
栈比堆存取速度快
栈中数据大小和生命周期是确定的
实例化对象一般是用 表示在堆中创建一个对象而原始类型的变量声明是在栈中的
比较特殊的是它不是基本类型但实例化 有两种不同的方法
!
这样是直接在堆中创建
"
这样先在栈中创建 对象的引用然后在栈中查找看有没有”这个值如果有则
直接将引用指向它如果没有则在栈中新建”然后将引用指向它
所以 比较返回的是 #$#%!也返回的 #
但 ! !只能用 $#% 比较才返回 #
因为是比较的栈中的信息即栈中的实际值或引用但用 创建的对象引用指向不同
的地方
CLASS
在 中每一个类都对应一个 % 对象当我们新建一个新的类时就会产生一个新的
% 对象保存在和类同名后缀名为% 的文件中!这个类包含了该类的所有信息
在运行期间一旦我们想生成这个类对象的对象& 首先检查这个类的 % 文件是否已经
被加载如果尚未加载则根据类名查找对应的%文件并将其载入也就是说 程序不
是一开始就将所有的类都加载
在反射机制中我们可以如下创建一个类的对象
%'()* &+%!,!
这样就可以创建类&+%的一个对象但如果 & 找不到该类对应的%文件则会抛出
异常%)(-(#./0(
为了应对这种情况我们可以用这种方法
&+%%,!
上面这种方法就要求 & 已经加载了 &+%在我们需要动态生成某类的对象时肯定要用
上面的反射'()* 方法当然我们就要用 +12来捕获异常了
原始类型
中提供了如下几种原始类型
((%+22(%(3((#%
原始类型是不继承任何类的也就是说它们是不继承自的
众所周知 在对象传递时是传的引用但这对原始类型是例外的即在使用原始类型的值
时我们传递的是实际的值的副本举例说明
在程序中我们将一个对象传递给一个函数如果该对象是原始类型它会自动将对象的值复制
一份然后传过去如果不是基本类型则会该对象的引用复制一份然后传过去这时候区别就
体现了引用实际就相当于指针它是指向内存中某一区域的一个标识复制一个引用后它还
是指向该内存区的但如果是直接复制的值则相当于在另一内存区放上同样的值
所以我们在接收对象的函数中对传递过来的原始类型对象进行修改的时候不会影响到原始
值而对引用进行修改时会影响到原始对象的值
注意在传的时候也是传的值的副本不是引用
456+456!
77!
7'7!
456
7'7!
+*(#/%8!!
这时候显示出来的是9但实际上我操作的是 ,但 也受到了影响
77!
7'7
+*(#/%!
这时候显示出来的是
为了体现 万物皆对象以及其单根继承结构 中为原始类型都提供了对应的包装类
包装类继承自原始类型对应的包装类是
++
22
((%((%
2(2(
,
%(4(
3(-%(
(#%:(#%
Java-Integer 特殊属性
/#%%;
<
/#%0=(*>?!
<
,@@
,"@@
'"!<
+*(#/%7"7!
A%<
+*(#/%7B"7!
A
,9"@@
,C"@@
'9C!<
+*(#/%79C7!
A%<
+*(#/%79BC7!
A
A
A
输出结果
"
9BC
原因为了提高效率对 , 作了限制在 值在D"EDD"F 范围内的时候直接比较两
个的值但如果不在这个范围内则 会这样做,!即比较它们的句柄引用!
String—不可变,非原始类型
不是原始类型但它是不可变类型体现在我们新建一个 然后对它进行操作时它
不是在原来的那个对象上进行的而是再新建一个 类如
G
上面两条语句实际上产生了两个 对象在执行下面一条语句后 的垃圾回收机制帮
我们把上面的“回收了而留下的是
从上面可以得到在我们拼接字符串时用G操作是非常慢的因为每一次操作都会形成新的
对象消耗大量的时间和空间为此 中有了另一个对象#H它是可变对象实例化
一个对象后再对它进行任何操作都是对它这个对象进行的所以用它来进行字符串的拼接就
比前面快的多它的用法是
#H#H!
// !
// !
1
最后可以通过(!方法获得字符串
考虑下面这条语句
2%%(G (G B
它也是字符串的拼接但它的效果和用 #H 一样那是因为 & 对这样的语句进行过
优化默认也是用 #H 来处理但象下面这种
G
G
G
G
1
这样的效率就没法和用 #H 相比了
对象比较
在操作时我们经常会作判断
B$#%!1等下面介绍它们的用法及区别
equals 和 ==,!=
如上面所说 中类分两种原始类型和非原始类型所以比较也分两种比较引用比较值
和B是比较对象的引用即看所比较的两个对象是否指向同一内存区
$#%!默认也是比较对象的引用因为所有的对象都是继承自而中的 $#%!
方法就是比较的引用所以在没有重写$#%!方法的前提下上面的两种比较方法是一样的
但大多数类都会重写的方法而变成比较实际值
对于原始类型两种比较效果一模一样包装类比较应该用$#%!
instanceof
instanceof&+%返回一个布尔值告诉我们对象是否是某一类的实例
'(':(!
:(!!I!
在将 转型成 :(前判断语句会先检查对象 是否是 :( 的实例如果不是它的实例但你要
转成那种类型会得到一个 %./0(类型转换异常
isInstance :
动态的('
有两个数组一个放类一个放类对应的 %
%>?(*;+/<(*%(*"%(*9%(*C%A
>?(*<(*C%,!(*"%,!A
参考如下语句
JJ不用动态的
'(@5(*%2GG!<
((*>?
'(('(*!
JJ做些啥
if(o instanceofsome2)
JJ做些啥
if(o instanceofsome3)
JJ做些啥
if(o instanceofsome4)
JJ做些啥
A
JJ用动态方法
剩余63页未读,继续阅读
资源评论
智慧安全方案
- 粉丝: 3619
- 资源: 59万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功