Java基础篇(三)--- 抽象类,接口,final,单目运算符

多态
①父类引用指向子类:
java允许父类的引用变量引用它的子类的实例(对象)
Animal animal = new Cat();
这种转换是自动完成的
子类在一定条件下是可以转换为父类的
②继承:
类的单继承和接口的多继承,都能体现多态
③重写、重载
重载:同一个类的同名函数(方法的参数类型、个数、顺序至少有一项不同)
重写:子类重写父类方(子类的方法的返回类型,参数,方法名称要和父类保持一致;子类不能缩小父类方法的访问权限)

抽象类、接口、final
1.抽象类
父类方法不确定时,可以使用抽象方法
①有抽象方法的类,一定是抽象类;但是抽象类不一定有抽象方法
②当一个类继承抽象类时,需要我们把抽象类中所有抽象方法全部实现
③抽象类不能被实例化,抽象方法不能有主体
2.接口
①当一个类实现了一个接口,就得把这个接口所有的方法都实现
②接口不能被实例化
③接口中所有的方法不能有主体
④接口中的变量,本质上都是static、final的;调用形式:接口名.变量名
⑤一个接口不能继承别的类,但是可以继承别的接口。接口继承接口不需要实现所有的方法
⑥一个类可以实现多个接口

接口是更加抽象的抽象的类,抽象类里可以有方法体,接口里所有方法都没有;接口体现了程序设计的多态和高内聚低耦合的设计思想
3.final
①当不希望父类的某个方法被子类覆盖时,可以用final
②当不希望类的某个变量值被修改,可以用final
③当类不希望类被继承时,可以用final
④如果一个变量是final的,定义时则必须赋初始值
final变量一般使用下划线,rate_test

数组
①数组可存放同一类型数据,简单数据类型(int,float)可直接赋值
②对象数组定义后,赋值时需再次分配空间(即:new对象)
③数组大小必须事先指定
④数组名可以理解为指向数组首地址的引用
⑤数组的下标是从0开始编号的

位移, 与,或(都是以补码运算的)
算数右移,逻辑右移:>>, >>>
原、反、补码:
①:最高位符号位,0是正数,1是负数。
②:正数的原、反、补码都一样
③:负数的反码=他的符号位不变,其他位取反
④:负数的补码=他的反码+1
⑤:0的反码,补码都是0
⑥:Java中的数都有符号,计算机运算时,都是以补码方式运算的

&:两位全为1,结果为1
| :两位一个未1,结果为1
异或^: 两个一个为0,一个为1,结果为1
按位取反~: 0->1,1->0 符号位也变,如果为负数,则转换为原码
算数右移:>> 地位溢出,符号位不变,并用符号位补溢出的高位
算数左移:<< 符号位不变,低位补0
逻辑右移:>>> 低位溢出,高位补0

排序
①内部排序:
将需要处理的所有数据都加载到内部存储器中进行排序。
包括(交换式排序法、选择式排序法、插入式排序法)
②外部排序法:
数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。
包括(合并排序法和直接合并排序法)

方法体传值,传入的简单类型的值,方法体内变,方法体外不变。而像类、数组的这些会改变。

找错误
①int i;
for(i=5,int j =10;i<10;j–){}
②int i,j;
for(i=0,j=10;i<10,j>0;i++,j–){}
③int i,k;
for(i=0,k=9;(i<10&&k>0);i++,j–){}
④int i,j;
for(i=0;j=10;i<10;i++,j–){}
解析:①×,不考虑死循环的问题,去掉int i,再把for循环的int放在i的前面就可以了
for(int i=5,j =10;i<10;j–){}
②×,for循环的中间,删掉一个判断就好
int i,j;
for(i=0,j=10;j>0;i++,j–){} 或
for(i=0,j=10;i<10;i++,j–){}
③×,j没有定义
④×,过多分号

long y = 1;
switch(y){
case 1:
System.out.println(“Got it”);
}
×,首先,switch里面不能用long,其次,y是long型,而case 1的1是int型。

byte y = 1;
switch(y){
case 1/1:
System.out.println(“Got it”);
}

猜你喜欢

转载自blog.csdn.net/danWuDe/article/details/84108091
今日推荐