导图社区 JavaSE
新手使用的 JavaSE 知识点总结,包括:1.基本类型;2.运算符;3.流程控制语句;4.数组;5.权限修饰符;6.三大特性;7.抽象类;8.接口;9.Java 实用类。
编辑于2022-06-25 22:55:46JavaSE
1.基本类型
1.八大基本类型
int
Integer
boolean
Boolean
char
Character
short
Short
long
Long
byte
Byte
float
Float
double
Double
2.引用类型
String
3.数据类型转换
按照数据范围从小到大排序:byte->short->int->long->float->double
2.运算符
算术运算符
+
-
*
++自增
--自减
赋值运算符
赋值=
加后赋值+=
减后赋值-=
比较运算符
==
!=
不等于
<
>
<=
>=
逻辑运算符
非!
与&&
或||
类型相关运算符
三元运算符
(条件表达式)?表达式1:表达式2;
3.流程控制语句
if
if(条件语句){
执行语句;.. }
if...else
if...else if...else
switch..case
while循环语句
while
do..while循环语句
for循环语句
fori
for each
for(元素的数据类型 变量 : Collection集合or数组){
//写操作代码
tips
增强for循环必须有被遍历的目标,目标只能是Collection或者是数组;
增强for(迭代器)仅仅作为遍历操作出现,不能对集合进行增删元素操作,否则抛出ConcurrentModificationException并发修改异常
4.数组
声明方法
String[] strs; int[] ints;.....
String[] strs =new String[3]; ........
String[] strs={"江苏省",“广西省”};
5.权限修饰符
访问权限大小:public > protected > 空 > private
public:公共的
该项目中所有包的所有类都能访问到(最宽泛,范围最大)
protected:受保护的
:可以被同一个包的类及其它包的子类访问(同包下)
private:私有的
私有,只有自已类能访问,出去本类不可以(修饰属性字段,不使用在方法[写了方法给别人使用])
default
可以被同一个包的类及其它包的子类访问(同包下)
6.三大特性
封装
优点
1).提高代码安全性(如年龄随意输出负或是过大,不让外部可以任意修改数据
2).提高代码复用性(重构也是复用性) 3).高内聚:封装代码细节,便于修改内部代码,提高代码可维护性 4).低耦合:简化外部调用,便于调用者方便使用,利于扩展及协作
简介
封装是高内聚低耦合(封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。
封装使用访问控制符
步骤
(1).修改属性(属性变量名称,如: name, age...)的可见性来限制对属性的访问(使用 private 定义)
(2).对每个值属性提供对外的公共方法访问,创建一对赋取(写读)值方法,用于对私有属性的访问
继承
简介
Java 继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力(主要特性是做扩展,如父亲,父亲下面有儿子或女儿,儿子下面又有儿子...)。 类和类之间的有继承关系,其中父类又叫超类或基类,子类又叫派生类。父类是子类的一般化,子类是父类的特 化。(一般只说:父类[或超类,基类],子类[或派生类]) JAVA 不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,同时一个类可以 实现多个接口,从而克服单继承的缺点。(真正开发当中使用面向接口方式,变成多继承实现方式,而类只有单继 承) 继承就是子类继承父类的特征和行为,使得子类对象(或叫实例化)具有父类的实例域和方法,或子类从父类继承 方法,使得子类具有父类相同的行为。(如:子继承父方式,俗语:子承父业) 注:只要继承关系存在,子就拥有父的一切(除了私有属性之外,如同前面介绍的,父亲留给的粮票,现在这年代还 是能用吗?) Java 中最高的父类是 Object ,所有的 java 类都是默认继承自 Object。 使用关键字:extends (中文译:扩展)。
格式
public class 父类 { }
public class 子类 extends 父类 {}
super关键字
简介
通过 super 关键字来实现对父类的属性及方法的访问,用来引用当前对象的父类。构造方法的第一句总是 supper()(不写也是默认调用父类构造器,不写,编译器也会自动加上),如果使用自动生 成构造器,则会自动创建 supper(),作用则是调用父类的构造方法。
构造器
子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。 如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的 无参构造器。
多态
简介
多态(Polymorphism)按字面的意思就是“多种形态,多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。一句话:允许将子类类型的指针赋值给父类类型的指针。 多态指同一个方法调用,由于对象的不同而产生不同的行为方法。现实生活中,同一个方法,具体实现完全不同。 (如前面的学过的吃方法eat,对应每个人所吃方法不一样)
优点
- 消除类型之间的耦合关系(继承耦合过高)
可替换性
可扩充性
接口性[后面学]
要点
1).多态只是方法的多态,而不是属性的多态(多态因此与属性没有关系,只与方法有关)
2).多态存在必须达到三个条件: 继承,方法重写,父类引用指向子类对象 3).父类引用指向子类对象后,用该父类调用子类重写方法,此时则产生多态
7.抽象类
简介
使用了关键词 abstract 声明的类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)抽象类。“抽象方法”,属于一种不完整方法,只含有一个声明,没有方法主体(大括号)。
抽象方法
使用 abstract 关键字修饰过的方法称之为抽象方法,没有方法体,只有声明的方法名称。定义的只是一组“规范”(或叫约束),就是告诉子类必须要给抽象方法提供具体的实现(子类方法实现)。 抽象方法没有定义,方法名后面直接跟一个分号,而不是大括号。
要点
1).有抽角方法,类必须定义成抽象类
2).抽象类不能实例化,不能用 new 实例化抽象类 3).抽象类可以包含属性,普通方法,有抽象方法,构造方法。但构造方法也不能使用 new 实例,只能被子类调用 4).抽象类只能用来被子类继承
8.接口
简介
Java 接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法实现[对子类的一组约束规范],因此这些方法可以在不同的地方被不同的类实现(子类实现具体方法),而这些实现可以具有不同的行为(功能)。
[相当于:接口方法名称定义在一个类(父类),实现接口方法体在一个类(子类),实现方法体的类可以有多个]
功能:接口实现和类继承的规则不同,为了数据的安全,继承时一个类只有一个直接父类,也就是单继承,但是一个类可以实现多个接口,接口弥补了类的不能多继承缺点,继承和接口的双重设计既保持了类的数据安全也变相实现多继承。 最主要的作用:一组规范(接口类规范[或形象理解为:父])和具体实现方法(实现类实现方法体[或形象理解为:子])进行分离
声明接口
访问修饰符权限 interface 接口名称{
public interface UserDao{ 抽象方法 } 接口实现类([implements 其他的接口名] ) public Class UserDaoImpl implements UserDao { 实现抽象类里所有的抽象方法 }
特性
1).接口是隐式抽象的,当声明一个接口的时候,不必使用 abstract 关键字
2).接口中每一个方法也是隐式抽象的,声明时同样不需要 abstract 关键字 3).接口中的方法都是公有的,使用 public 定义即可 4).声明定义一个接口必须使用 interface 关键字
描述
1).访问修饰符必须是 public
2).接口类名,方法名:和类名及普通方法名命名规范一样 3).接口关键字: interface 4).常量:接口中属性只能是常量,只能是: public static final修饰,不写默认编译加上[String name ="root";](一般开发中不在接口中定义常量) 5).接口方法:接口方法编译器默认有[ public abstract] void addUser(),如果不实现接口类,就是无用接口类 6).子类只能通过 implements 来实现接口中的规范 7).一个类实现了此接口,必须实现接口中所有的方法(遵守的一组规范),并且这些方法必须是 public 访问的权限 8).接口类里的方法是不变化,因此极稳定,企业开发中则使用的几乎全是面向接口的设计
9.Java 实用类
包装类
糖衣语法,计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,方便程序员使用。使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
1.装箱拆箱
自动装箱
int i=iInt;//Integer包装类型自动拆箱成int,编译器自动转换操作,而不需要开发人员去做,在自动装箱与拆箱在使用的过程中,则是一个"语法糖"
//编译器自动加上:int i=iInt.intValue() boolean bool = bBool; //编译器自动加上:boolean bool = bBool.booleanValue();
自动拆箱
Integer iInt=10;//Integer包装类,查看Integer源
Boolean bBool = true;//编译器会自动加上:Boolean bBool = Boolean.valueOf(true);
2.空指针异常避免
//int int1= integer;//自动拆箱时编译器操作调用:integer.intValue(),没有值情况下去做转换操作而出现空指针异常NullPointerException
if(integer!=null){//判定避免出现空异常 int int1= integer; }
3.集合自动查找
//List
ints = new ArrayList<>();//直接装基本数据类型无法通过编译