CoreJava全套详细笔记心血放出资料Word格式.docx
- 文档编号:15365662
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:78
- 大小:726.58KB
CoreJava全套详细笔记心血放出资料Word格式.docx
《CoreJava全套详细笔记心血放出资料Word格式.docx》由会员分享,可在线阅读,更多相关《CoreJava全套详细笔记心血放出资料Word格式.docx(78页珍藏版)》请在冰豆网上搜索。
-0的反码为:
11111111
1.3.补码
利用溢出,我们可以将减法变成加法。
对于十进制数,如果从9得到结果5,可以用减法:
9-4=5;
因为4+6=10,我们将6作为4的补数,将上式的减法改写为加法:
9+6=15;
去掉高位1(也就是减去10),得到结果5。
对于16进制数,如果从C得到结果5,可以用减法:
C-7=5;
因为7+9=16,我们将9作为7的补数,将上式的减法改写为加法:
C+9=15;
去掉高位1(也就是减去16),得到结果5。
在计算机中,如果我们用1个字节表示一个数,一个字节有8位,超过8位就进1,在内存中情况为:
100000000,进位1被丢弃。
一个数如果为正,则它的原码、反码、补码相同;
一个数如果为负,则符号位为1,其余各位是对原码取反,然后整个数加1。
为了简单起见,我们用1个字节来表示一个整数。
+7的补码为:
-7的补码为:
11111001
1.4.负数的补码转换为十进制数
a、先对各位取反;
b、将其转换为十进制数;
c、加上负号,再减去1。
例如:
11111010,最高位为1,是负数,先对各位取反得00000101,转换为十进制数得5,加上负号得-5,再减1得-6。
2.char
char类型(2字节)用于表示Unicode编码的字符单元;
char类型用于表示单个字符,通常用来表示字符常量。
'
A'
是编码为65所对应的字符常量。
Unicode编码单元可以表示为十六进制值,其范围从\u0000到\uffff。
除了可以采用转义序列符\u表示Unicode代码单元的编码之外,还有一些用于表示特殊字符的转义序列符。
如:
转义序列
名称
Unicode值
\b
退格(Backspace)
\u0008
\t
制表(Tab)
\u0009
\n
换行(Linefeed)
\u000a
\r
回车
\u000d
\”
双引号(Doublequote)
\u0022
\’
单引号(Singlequote)
\u0027
\\
反斜杠(Backslash)
\u005c
尽管char不是整数,但在许多情况中你可以对它们进行运算操作就好像他们是整数一样,这允许你可以将2个字符相加,或对一个字符变量值进行增量操作。
3.运算符
3.1.移位运算符
只能针对二进制数据(整数)
<
左移,左移一位相当于原来的数乘二,大于32位的话高出的位就不要了,如果移动的位数大于32的话java会自动把这个位数变为这个数对32求余的值;
>
右移,右移一位相当于除2取整,两位相当于连续除2取整而不是除4取整,看正数还是负数,正数右移的话高位补0,负数的话补1;
无符号右移(算数右移),不考虑符号位,移进来的都补0。
3.2.位运算符
&
按位与,两个数按位与,全部转换成二进制后按位比较,全为1才是1,其它是0,返回一个新的整数;
|按位或,两个数按位或,全部转换成二进制后按位比较,全为0才是0,其它是1,返回一个新的整数;
^按位异或,两个数的二进制位数比较,相同结果为0,相异结果为1;
~按位求反,把一个数二进制的每一位都反过来。
3.3.逻辑运算符
短路与,两边如果左边是假的话就不再判断右边的,直接返回假;
||短路或,两边如果有一个为真的就不再判断右边的,直接返回真;
与,不管怎样两边都会判断,都为真才返回真;
|或,不管怎样两边都会判断,都为假才返回假。
4.流程控制
4.1.switch
a、switch后括号中的值必须是int,byte,char,short,枚举类型的变量之一,其它类型的就不行了;
b、每个case后面的值必须是不相等的,而且必须是常量;
c、如果每个case冒号后面的语句执行完后没有break,还会继续执行后面case里的语句,所以在每个case的语句结束后加一个break;
d、多个case可以可并到一起,表示或的关系;
e、default代表如果和所有case后的值都不匹配,就执行这里的语句。
无论default写哪都是最后执行的。
publicclassGrade{
publicstaticvoidmain(String[]args){
Scannersca=newScanner(System.in);
System.out.println("
请输入一个百分数:
"
);
ints=sca.nextInt();
if(s<
0||s>
100){
System.out.println("
ERRORDATA:
S"
System.exit(0);
//退出这个程序
}
switch(s/10){
case10:
case9:
A"
break;
case8:
B"
case7:
C"
case6:
D"
default:
E"
}
}
4.2.break和continue
a、break退出当前的循环体,在嵌套循环中,只退出当前的一层循环;
b、continue结束当前本次循环,继续进行下一轮的循环。
可以说,只是本次忽略循环内后面的语句;
c、continue只能在循环体内用;
d、break可以用在任意代码块中,表示退出当前程序块(配合标签使用,很好用)。
5.方法
5.1.构造方法
每次在创建实例变量,对类中的所有变量都要初始化是很乏味的。
如果在一个对象最初被创建时就把对它的设置做好,那样的话,程序将更简单并且更简明。
因为对初始化的要求是共同的,Java允许对象在他们被创造时初始化自己。
这种自动的初始化是通过使用构造方法来完成的。
构造方法在对象创建时初始化。
一旦定义了构造方法,在对象创建后,在new运算符完成前,构造方法立即自动调用。
构造方法看起来有点奇怪,因为它没有任何返回值,即使是void型的值也不返回。
这是因为一个类的构造方法内隐藏的类型是它自己类的类型。
构造方法的任务就是初始化一个对象的内部状态,以便使创建的实例变量能够完全初始化,可以被对象马上使用。
5.2.方法重载
在Java中,同一个类中的2个或2个以上的方法可以有同一个名字,只要它们的参数声明不同即可。
在这种情况下,该方法就被称为重载(overloaded)。
当一个重载方法被调用时,Java用参数的类型和(或)数量来表明实际调用的重载方法的版本。
因此,每个重载方法的参数的类型和(或)数量必须是不同的。
当一个重载的方法被调用时,Java在调用方法的参数和方法的自变量之间寻找匹配。
但是,这种匹配并不总是精确的。
在一些情况下,Java的自动类型转换也适用于重载方法的自变量。
classOverloadDemo{
voidtest(doublea){
System.out.println("
Insidetest(double)a:
"
+a);
}
classOverload{
publicstaticvoidmain(Stringargs[]){
OverloadDemoob=newOverloadDemo();
inti=88;
ob.test(i);
OverloadDemo的这个版本没有定义test(int)。
因此当在Overload内带整数参数调用test()时,找不到和它匹配的方法。
但是,Java可以自动地将整数转换为double型,这种转换就可以解决这个问题。
因此,在test(int)找不到以后,Java将i扩大到double型,然后调用test(double)。
当然,如果定义了test(int),当然先调用test(int)而不会调用test(double)。
只有在找不到精确匹配时,Java的自动转换才会起作用。
6.this
this等价于当前对象,调用当前对象的属性或方法就用this.属性名,或this.方法名()。
当前对象:
指谁在调用当前这个方法和属性,谁就是当前对象。
在定义类的时候是不存在当前对象的。
在局部变量与外部变量同名的时候,为了区分,就要在外部变量的前面加一个this来表示这个变量是类的全局变量。
7.继承
尽管子类包括超类的所有成员,它不能访问超类中被声明成private的成员。
子类的对象可以调用父类的一切公有的变量和方法,也可以扩展自己新的属性和方法,但是新扩展的部分父类的对象是无法调用的。
7.1.super
在子类的构造方法中调用父类的构造方法,并且super要放在第一行,不能与this一起用,主要用为在构造子类的时候给父类中定义的变量赋值:
a、任何子类的构造方法都会调用父类的构造方法:
因为调用构造方法和创建一个对象是绑在一起的,而一个子类对象的一部分可以看做是父类对象,所以当创建一个子类对象时一定是先创建一个父类的对象,再在父类对象的基础上扩展(extends)成一个子类对象。
注意:
自始至终只创建了一个对象,因为创建的那一个子类对象的一部分是父类对象(上帝想创造一个科学家,肯定是先创造一个人,在人的基础上进行教育培训等,最终变成一个科学家,而最初的人和最后的科学家其实是一个对象);
b、任何子类的构造方法的第一行必须是this(...)或super(...)的调用,如果程序员不写,则系统会隐含的调用super(),也就是说子类无论如何都会调用父类的构造方法,没写就调用父类的无参构造方法;
c、子类构造方法的第一行只能出现this(...),super(...)这两种情况,无论怎么调用,最终总能找到父类构造方法,否则造成死循环。
因为如果子类的某个构造方法的第一行出现this(...),此时系统不会加上缺省的super(…)那么this(...)会调用子类的其他构造方法,所以子类的构造方法之间开始调用,如果子类的所有的构造方法的第一行全都是this(...)那便构成了一个死循环。
7.2.多态(polymorphism)
a、对象的多态:
一个对象多种形态。
方法的重载和覆盖就是方法多态的一种体现;
b、对象多态的基础:
子类对象可以当作父类对象来看,例如:
Animala=newBird();
c、多态定理:
如果我们把子类对象当作父类对象来看,那么就只能访问父类中已有定义的属性和方法(不能访问子类扩展的属性和方法)。
如果子类覆盖了父类的方法,再
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CoreJava 全套 详细 笔记 心血 放出 资料