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 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末位进行添加。

posted on 2020-05-16 08:03  寄居の友人c  阅读(338)  评论(0编辑  收藏  举报