没有合适的资源?快使用搜索试试~ 我知道了~
java基础知识总结
资源推荐
资源详情
资源评论
基础篇
、 语言有哪些特点
、简单易学、有丰富的类库
、面向对象( 最重要的特性,让程序耦合度更低,内聚性更高)
、与平台无关性( 是 跨平台使用的根本)
、可靠安全
、支持多线程
、面向对象和面向过程的区别
面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后在使用的时候一
一调
用则可。性能较高,所以单片机、嵌入式开发等一般采用面向过程开发
面向对象:是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,
而是
为了描述某个事物在解决整个问题的过程中所发生的行为。面向对象有封装、继承、多态的特性,
所以
易维护、易复用、易扩展。可以设计出低耦合的系统。 但是性能上来说,比面向过程要低。
、八种基本数据类型的大小,以及他们的封装类
基本类型 大小(字节) 默认值 封装类
! "
#$ # %$
&
' ($$ )'
注:
是基本数据类型, 是 的封装类,是引用类型。 默认值是 ,而 默
认值是 $,所以 能区分出 和 $ 的情况。一旦 * 看到 $,就知道这个引用还没
有指向某个对象+再任何引用使用前,必须为其指定一个对象,否则会报错。
基本数据类型在声明时系统会自动给它分配空间,而引用类型声明时只是分配了引用空间,
必须 通过实例化开辟数据空间之后才可以赋值。数组对象也是一个引用对象,将一个数组赋值给另
一个数组时只是复制了一个引用,所以通过某一个数组所做的修改在另一个数组中也看的见。
虽然定义了 这种数据类型,但是只对它提供了非常有限的支持。在 虚拟机中没
有任何供 值专用的字节码指令, 语言表达式所操作的 值,在编译之后都使
用 虚拟机中的 数据类型来代替,而 数组将会被编码成 虚拟机的 数组,
每个元素 元素占 位。这样我们可以得出 类型占了单独使用是 个字节,在数
组中又是 个字节。使用 的原因是,对于当下 位的处理器(),-)来说,一次处理数据是
位(这里不是指的是 ./ 位系统,而是指 ),- 硬件层面),具有高效存取的特点。
、标识符的命名规则。
标识符的含义:
是指在程序中,我们自己定义的内容,譬如,类的名字,方法名称以及变量名称等等,都是标识符。
命名规则:(硬性要求)
标识符可以包含英文字母,&0 的数字,1以及23
标识符不能以数字开头
标识符不是关键字
命名规范:(非硬性要求)
类名规范:首字符大写,后面每个单词首字母大写(大驼峰式)。
变量名规范:首字母小写,后面每个单词首字母大写(小驼峰式)。
方法名规范:同变量名。
、关键字的作用
'!3严格来说是 中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法
为:
3$343*3'!3)3
其中 *3为一个对象,)3表示一个类或者一个接口,当 *3为 )3的对象,或者是其直接或
间接子类,或者是其接口的实现类,结果 $3都返回 $,否则返回 !。
注意:编译器会检查 *3是否能转换成右边的 ' 类型,如果不能转换则直接报错,如果不能确
定
类型,则通过编译,具体看运行时定。
、 自动装箱与拆箱
装箱就是自动将基本数据类型转换为包装器类型();调用方法: 的
方法
拆箱就是自动将包装器类型转换为基本数据类型()。调用方法: 的
方
法
在 35 之前,如果要生成一个数值为 的 对象,必须这样进行:
33436373
334373
8 $ 93'!37..编译不通过 必须是引用类型,不能是基本类型
8 $ 93'!3:*'7..编译不通过
33436373
8 $ 93'!37..$3
..!3+在 5 规范 中对 '!3运算符的规定就是:如果 *3为 $,那么将返回
!。
8 $ 9$3'!3:*'7
而在从 35 开始就提供了自动装箱的特性,如果要生成一个数值为 的 对象,只需要这
样就可以了:
334373
面试题 1: 以下代码会输出什么?
运行结果:
为什么会出现这样的结果?输出结果表明 和 指向的是同一个对象,而 和 指向的是不同的对象。此时只需一
看源码便知究竟,下面这段代码是 的 $:! 方法的具体实现:
3
其中 )' 类的实现为:
9$'3'33;3
9$'3'3#38<=33;3
334373
334373
334373
334373
8 $ 94473
8 $ 94473
>3
>
$3
!
9$'3'33$:!33;3
!3?43&3@@33A43)' 3
$3)' ''<3B3=73
$36373
>3
93'3'3)'3;3
'3C3373
'3C33''<=73
'3;3
C336343&73
..33$3833'C$#33993
3343D73
!3)'E,9$3F43$3;3
..3-3 #'#333#3G38#33
..3H$3I3$J3''333K#3
3343 #'#)'E,9$ $73
343 8J+3D73
..3J8$833K33 LM2L-53
343 8+3 LM2L-53&3&673
>
34373
''34363<3&363B3=73
3*343673
!3G34373G3A3'' 73GBB3
''<G=34363*BB73
>
从这 段代码可以看出,在通过 $:! 方法创建 对象的时候,如果数值在<&
+D=之间,便返回指向 )' '' 中已经存在的对象的引用;否则创建一个
新的 对象。
上面的代码中 和 的数值为 ,因此会直接从 '' 中取已经存在的对象,所以 和
指向的是同一个对象,而 和 则是分别指向不同的对象。
面试题 2:以下代码输出什么?
运行结果:
!3
!3
原因: 在某个范围内的整型数值的个数是有限的,而浮点数却不是。
、 重载和重写的区别
重写
从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子
类继 承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,
参数列表,返回类型除过子类中方法的返回值是父类中方法返回值的子类时都相同的情况下, 对
方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。
93'3'3)'3;3
'3C3373
'3C33''<=73
'3;3
C336343&73
..33$3833'C$#33993
3343D73
!3)'E,9$3F43$3;3
..3-3 #'#333#3G38#33
..3H$3I3$J3''333K#3
3343 #'#)'E,9$ $73
343 8J+3D73
..3J8$833K33 LM2L-53
343 8+3 LM2L-53&3&673
>
34373
''34363<3&363B3=73
3*343673
!3G34373G3A3'' 73GBB3
''<G=34363*BB73
>
9$'3'33;3
9$'3'3#38<=33;3
%$3343 73
%$3343 73
%$3343 73
%$3343 73
8 $ 94473
8 $ 94473
>3
>
9$'3'3"3;3
9$'3'3#38<=33;3
..3N:%:3L$&#3$3
33436373
E73
>
9$'3#3E3;3
重写 总结:
发生在父类与子类之间
方法名,参数列表,返回类型(除过子类中方法的返回类型是父类中返回类型的子类)必须相同
访问修饰符的限制一定要大于被重写方法的访问修饰符
(9$'?9'#?#!$?93
重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常
重载()
在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不
同)
则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相
同来判断重载。
9$'3'3"3;3
9$'3'3#38<=33;3
..3N:%:3L$&#3$3
33436373
E73
>
9$'3#3E3;3
9$'3'3"3;3
9$'3'3#38<=33;3
..3N:%:3L$&#3$3
"334363"73
E73
EO6O73
>
9$'3#3E3;3
8 $ 9OEO73
>
9$'3#3E383;3
8 $ 9OEO3B3O3O3B3873
>3
>3
剩余63页未读,继续阅读
资源评论
陈远驹
- 粉丝: 11
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功