CoreJava全套详细笔记心血放出资料.docx

上传人:b****1 文档编号:2448708 上传时间:2022-10-29 格式:DOCX 页数:78 大小:726.58KB
下载 相关 举报
CoreJava全套详细笔记心血放出资料.docx_第1页
第1页 / 共78页
CoreJava全套详细笔记心血放出资料.docx_第2页
第2页 / 共78页
CoreJava全套详细笔记心血放出资料.docx_第3页
第3页 / 共78页
CoreJava全套详细笔记心血放出资料.docx_第4页
第4页 / 共78页
CoreJava全套详细笔记心血放出资料.docx_第5页
第5页 / 共78页
点击查看更多>>
下载资源
资源描述

CoreJava全套详细笔记心血放出资料.docx

《CoreJava全套详细笔记心血放出资料.docx》由会员分享,可在线阅读,更多相关《CoreJava全套详细笔记心血放出资料.docx(78页珍藏版)》请在冰豆网上搜索。

CoreJava全套详细笔记心血放出资料.docx

CoreJava全套详细笔记心血放出资料

1.原码、反码、补码

1.1.原码

将最高位作为符号位(以0代表正,1代表负),其余各位代表数值本身的绝对值(以二进制表示)。

为了简单起见,我们用1个字节来表示一个整数:

+7的原码为:

00000111

-7的原码为:

10000111

问题:

+0的原码为:

00000000

-0的原码为:

10000000

1.2.反码

一个数如果为正,则它的反码与原码相同;

一个数如果为负,则符号位为1,其余各位是对原码取反。

为了简单起见,我们用1个字节来表示一个整数:

+7的反码为:

00000111

-7的反码为:

11111000

问题:

+0的反码为:

00000000

-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的补码为:

00000111

-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:

System.out.println("A");break;

case8:

System.out.println("B");break;

case7:

System.out.println("C");break;

case6:

System.out.println("D");break;

default:

System.out.println("E");break;

}

}

}

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、多态定理:

如果我们把子类对象当作父类对象来看,那么就只能访问父类中已有定义的属性和方法(不能访问子类扩展的属性和方法)。

如果子类覆盖了父类的方法,再

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1