javaSE基本概念总结

1、java基本概念

1.1、类和对象

类:具有相同属性和方法的一组对象的集合,类是对象的抽象,对象是类的具体
类图:用于分析和设计类

1.2、方法和方法的重载

  • 形参用来约束变量类型,参数名可以随便取
  • 引用基本类型(能点出属性和方法)和基本数据类型

1.2.1、方法传参

参数传递为基本数据类型参数变化不会保留,参数传值(传递一个副本过去)
参数传递为引用数据类型参数变化会保留 ,参数传址(操作的是同一个对象)

参数可以传引用数据类型数组

1.3、封装(面向对象的三大特征之一)

  • 为什么使用封装:结束属性随意访问,不合理的赋值
  • 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

封装的两个原则

  1. 把尽可能多的东西藏起来,对外提供便捷的接口
  2. 把所有的属性藏起来

优点:

  • 防止错误修改属性
  • 有助于系统之间的松耦合,提高系统的独立性
  • 提高软件的可重用性
  • 降低了构建大型系统的风险

1.4、static

1.4.1、static变量

类变量(静态变量:被static修饰的变量)

  • 在内存中只有一个拷贝
  • 在类内部,可以在任何方法直接访问静态变量
  • 在其他类,可以直接通过类名访问

实例变量

  • 没有被static修饰的变量
  • 每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响
  • 可以new一个实例去访问这个变量

1.4.2、static代码块

  • jvm加载类时,加载静态代码块
  • 如果有多个静态块,按照顺序加载
  • 每个静态代码块只会被执行一次

1.5、继承

将重复操作的代码提取到父类

子类继承父类哪些东西:

  • 继承public和protected修饰的属性和方法,不管子类和父类是否在同一个包里
  • 继承默认权限修饰符修饰的属性和方法,但是子类和父类必须在同一个包里

使用super关键字,代表父类对象

  • 在子类构造方法中调用且必须是第一句
  • 不可以范文父类中定义private的属性和方法

1.5.1、继承条件下的构造方法调用规则

  1. 子类构造方法没有通过super显式调用父类的有参构造方法,也没有通过this显式调用自身其他构造方法,系统默认调用父类的无参构造方法
  2. 子类构造方法通过super显式调用父类的有参构造方法,执行父类相应的构造方法,而不执行父类无参构造方法
  3. 子类构造方法通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则
单根继承

访问父类的父类成员,super代表的是所有父类
java只支持单根继承
一个类只有一个直接父类,却有很多间接父类

1.6、方法重写

规则:

  • 方法名相同

  • 参数列表相同

  • 返回值类型相同或者其子类

  • 访问权限不能严于父类(里氏代换原则:子类可以扩展父类的功能,但不能改变父类原有的功能)

  • 父类的静态方法不能被子类覆盖为非静态方法,父类的非静态方法不能被子类覆盖为静态方法

  • 子类可以定义与父类同名的静态方法,以便在子类中隐藏父类的静态方法在静态方法中无法使用super

  • 父类的私有方法不能被子类覆盖

  • 不能抛出比父类方法更多的异常

1.7、Object类

object类经常被重写的方法

toString()返回当前兑现本身的有关信息,按字符串对象返回
equals()比较两个对象是否是同一个对象,是则返回true
hashCode()返回该对象的哈希代码值
getClass()获取当前对象所属的类信息,返回class对象

1.7.1、equals()方法

==equals()
简单数据类型,直接比较值/
引用数据类型,比较两者是否为同一对象 (内存地址是否一样)默认为比较两者是否为同一对象 (内存地址是否一样)

示例1:new两个实体类对象,分别使用==和equals方法

			Employee e1 = new Employee();
			Employee e2 = new Employee();
			System.out.println(e1==e2);
			System.out.println(e1.equals(e2));

结果如下:

false
false

原因:内存地址不一样,此时的==和equals都是比较地址
在这里插入图片描述
示例2:new一个e1对象,然后赋值给e2

			Employee e1 = new Employee();
			Employee e2 = e1;
			System.out.println(e1==e2);
			System.out.println(e1.equals(e2));

结果如下:

true
true

原因,他们在地址里指向同一个对象
在这里插入图片描述

1.7.1.1、重写equals()方法

告诉计算机一个新的规则,只要值相同,就认为是同一对象

			public boolean equals(Object obj) {
				if(this==obj) {
					return true;
				}
				if(!(obj instanceof Student){
					return false;
				}
			}

1.8、多态?

具体实现

  • 使用父类作方法的形参,是java中实现和使用多态的主要方法
  • 使用父类作方法的返回值,也是java中实现和使用多态的主要方式
    在这里插入图片描述

动态绑定

  • 实例方法(动态绑定机制):在调用时与引用变量实际引用对象绑定,调用重写后的方法,由运行时的java的jvm决定
  • 静态方法(静态绑定机制):不管返回的具体,调用的静态方法与引用变量所声明类型绑定,编译阶段就进行了绑定

向上转型和向下转型

1.9、接口

  • 接口中的成员变量:默认都是public static final的,必须显式初始化
  • 接口中的方法:默认都是public abstract的,除了成员变量和方法,不能包含其它
  • 接口没有构造方法,不能被实例化
  • 一个接口不能实现另一个接口,但是可以继承多个接口
  • 一个类必须实现接口抽象方法(implements),除非这个类也是抽象类

接口和抽象类的区别
相同点:

  • 代表系统的抽象层
  • 都不能被实例化
  • 都能包含抽象方法,用于描述系统提供的服务,不必具体实现

不同点:

  • 在抽象类中可以为部分方法提供默认实现,而接口中只能包含抽象方法
  • 一个类只能继承一个直接父类,但是可以实现多个接口
  • 已存在的继承树,可以方便的抽取接口,但是抽取的抽象类不容易

1.10、异常

java编程语言使用异常处理机制为程序提供了错误处理的能力
如果程序出现了异常——对异常进行处理——处理完毕,程序继续进行

技巧:在异常上面Ctrl+e可以看见部分异常

如果抓住了异常,就可以进行异常处理,程序可以继续进行下去

  1. 无异常,try-catch后面的代码
  2. 有异常,而且恰好和catch后面的异常类型匹配:try-catch里面的代码-catch后面的代码

如果没有抓住异常,程序就会中断

  1. 无异常:try-catch后面的代码
  2. 有异常:而且恰好和catch后面的异常类型匹配:try-catch里面的代码-catch后面的代码
  3. 有异常:但是和catch后面的异常类型不匹配:try-中断

常见的异常处理

异常类型说明
Exception异常层次结构的父类
ArithmeticException算术错误情形,如0做除数
ArrayIndexOutOfBoundsException数组下标越界
NullPointerException尝试访问null对象成员
ClassNotFoundException不能加载所需的类
IllegalArgumentException方法接收到非法参数
ClassCastException对象强制类型转换出错
NumberFormatException数字格式转换异常

finally和return(先执行finally再执行return)

在这里插入图片描述

  • finally唯一不执行的情况是exit(1)

多重catch块:因为一段程序可能出现多种类型的异常

  • 排列catch语句的顺序,先子类后父类(先小后大)
  • 发生异常时按顺序逐个匹配
  • 只执行第一个与异常类型匹配的catch语句

throw和throws异常

throwthrows
生成并抛出异常声明方法内抛出异常
位于方法体内部,可作为单独语句使用必须跟在方法参数列表后面,不能单独使用
抛出一个异常对象,且只能是一个声明抛出异常类型,可以跟多个异常

异常处理原则:

  • 异常只能用于非正常情况
  • 不要将过于庞大的代码块放在try中
  • 在catch中制定具体的异常类型
  • 需要对铺获的异常做处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值