java整理部分知识点
java整理部分知识点
&& & || |
- &&逻辑与 也叫做短路与 因为只要当前项为假,它就不往后判断了,直接认为表达式为假
- ||逻辑或 也叫做短路或 因为只要当前项为真,它也不往后判断了,直接认为表达式为真
- &按位与,可以进行位运算,boolean在内存中为二进制,所以科已经逻辑运算,但是需要计算全部的都为true才为true
- |按位或,计算出所有的,全为false才为false
数组的写法
- int a[][] = new int[3][3];
- int []a[] = new int[3][3];
- int[][] a= new int[3][3];
变量
- 成员变量、方法
没有用static修饰的变量和方法 - 类变量、方法
用static修饰的的变量和方法
重载(overlord):
- 同名不同参数,可不同返回值的方法,叫重载。只和参数有关。
- 两同三不同:
同一类,同一名。 不同形参类型,不同形参个数,不同顺序。
继承
- 子类只能继承父类非私有成员(方法和属性)(非静态),构造方法需要用super来调用。
- 父类 父 = new 子类 先运行父类构造方法。
- 关系
- 子类是不继承父类的static变量和方法的。因为这是属于类本身的。但是子类是可以访问的。
- 子类和父类中同名的static变量和方法都是相互独立的,并不存在任何的重写的关系。
继承成员变量之间的关系
- 在子类方法中访问一个变量(同名)(就近原则)
- 首先在子类局部范围找。
- 然后在子类成员范围找
- 最后在成类成员范围找
- 还没有就报错(不能是父亲的父亲)
构造方法的关系
- 子类的构造方法都会默认访问父类的空构造方法。
- 子类的会继承父类的数据,可能还会使用父类的数据,所以,子类初始化之前,一定要完成数据的初始化。
- 每个构造方法的第一条语句默认是:super()(必须放在第一行)
成员方法关系
- 就近原则
单例模式
这个类在整个项目中只能被创建一次。
super 和 this
this三大作用:
this调用属性、调用方法、利用this表示当前对象。
super三大作用:
super调用父类的属性、父类的调用方法、利用tsuper表示当前父类的对象。
在构造方法中
super,在构造方法中,调用父类的构造方法,且只能在第一行。
This在普通方法中,指的是哪个对象?在构造方法中,指的是?
重写(override):
- 继承的父类,再写一个和父类一样的方法,叫重写,运行时,运行子类的,不运行父类的。
- 方法名,参数类型要与父类的相同,返回值类型和抛出异常与父类相等或者更小。
- 子类方法权限的应比父类更大或者相等。
- 子类重写父类的方法后,调用父类的方法,需要super.方法名。父类的private方法,子类访问不到。
代码块
细节都在注释里面了。
public class CodeBlock {
static {
System.out.println("这是一个CodeBlock static代码块");
}
public static void main(String[] args) {
A a = new A();
A a1 = new A();
{// 在代码块中的有效,用完被回收
int x = 5;
System.out.println(x);
}
// System.out.println(x);
}
}
class A {
// 无论创建多少对象,就只运行一次。而且优先创建对象运行
static {
System.out.println("这是一个A static代码块");
}
// 构造方法的代码块,每次创建对象都会先运行这个代码
{
System.out.println("这是一个A 没static代码块");
}
public A() {
System.out.println("这是A的一个构造方法");
}
}
同时导入两个同名包
import 只能导入一个。第二个使用的时,需要连指定路径都指定。
final
- 作用修饰变量、类、方法。不可以被改变
- 特点
- 修饰类 不能被继承
- 方法 不能被重写
- 变量 只能被赋值一次,不能更改
多态
- 概述
- 某一个事物,在不同时刻表现出来的不同状态
- 多态的前提条件
-有继承关系- 有方法重写
- 有父类引用指向子类对象
- 案列
- 父类父亲=new子类() ;
- 这里放代码图片
- 成员访问特点
- 成员变量
- 编译看左边,运行看左边
- 成员方法
- 编译看左边,运行看右边
- 静态方法
- 编译看左边,运行看左边
- 成员变量
- 好处
- 提高了程序的维护性
- 提高了程序的扩展性
- 弊端
- 不能访问子类特有功能(如果一 定要访问怎么
- 转型问题
- 向上转型
- 从子到父
- 父类引用指向子类对象
- 向下转型
- 从父到子
- 父类引用转为子类对象
- 例子:
- 小慧装爹
- 向上转型
- instanceof
-instanceof运算符的前一个操作数通常是一个引用类型变量 后一个操作数通常是一个类/接口。 它用于判断前面引用变量所指向的具体对象是否是后面这个类,或者后面这个类的子类,或者后面这个类的实现类的一个实例对象。 是则返回ture, 否则返回false。
抽象类
- 概述
- 在Java中,一个没有方法体的方法应该定义为抽象万法,而类中如果有抽象方法,该类必须定义为抽象类。
- 特点
- 抽象类和抽象方法必须用abstract关键字修饰
- 抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
- 抽象类不能被实例化
- 具体方法由具体子类实现
- 抽象类的子类要么是抽象类,要么重写(实现)所有的抽象方法
- 成员特点
成员变量可以是变量, 也可以是常量- 有构造方法,但是不能实例化。它的作用在于子类访问父类数据时做初始化
- 成员方法可以有抽象方法(限定子类必须完成某些动作),也可以有非抽象方法,提高代码复用性
- 问题
- 一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
- 关键字共存问题
- private 冲突
- final冲突
- static无意义
集合和数组的区别
- 长度
- 数组长度固定
- 集合长度可变
- 内容
- 数组存储同一类型元素
- 集合存储不同类型元素
-元素类型 - 数组可以存基本类型,也可以存引|用类型
- 集合只可以存引用类型
Collection
1:添加功能
boobpan add(Object obj):添加一个元素
bolean addAll(Collection c):添加一个集合的元素
2:删除功能
void clear():移除所有元素
boolean remove(Object 0):移除一个元素
boolean removel(Collection c):移除一个集合的元素(是一 个还是所有)
3:判断功能
boolean contains(Object o):判断集合中是否包含指定的元素
boolean containsAl(Collection c):判断集合中是否包含指定的集合元素(是一个 还是所有)
boolean isEmpty():判断集合是否为空
4:获取功能
Iterator
5:长度功能
int size():元素的个数
面试题:数组有没有length()方法呢?字符串有没有length()方法呢?集合有没有length()方法呢?
数组中长度用length,字符串用length(),集合用size()
6:交集功能
boolean retainAIl(Collection c):两个集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢?
集合改变了返回true,没有改变返回false
7:把集合转换为数组
Object] toArray()
迭代器
- 在迭代器中,不可以对list进行修改,否则抛出ConcurrentModificationException异常。
- 要进行修改,ListIterator对象中方法,例如添加,会在当前位置后添加,不会在list末位添加。也可使用for循环来遍历,此时会在list末位进行添加。