JavaSE总结-上部(面向对象)

JavaSE总结-上部(面向对象)

这是我第一篇博客,主要就是记录日常所学的知识和日常遇到的问题和解决方案,如果有写的不足或者有失的地方还请各位见谅和指教。下部传送门

Java概述

###Java的分类 ###

  • javaSE (标准版 基础)
  • javaEE (企业版 企业的PC端开发)
  • javaME (微型版 移动端开发)

Java的特性

  • 简单
  • 面向对象
  • 分布式
  • 健壮型
  • 安全
  • 结构中立型
  • 可移植
  • 解释型
  • 高性能
  • 多线程
  • 动态变化的

Java名词

  • jdk
    java development kit java开发工具包
  • jre
    java runtime environment java运行时环境
  • jvm
    java virtual machine java虚拟机

基本数据类型

JavaSE总结-上部(面向对象)

引用数据类型

  • 接口
  • 枚举
  • 数组

数据类型默认类型

  • 整型
    int
  • 浮点型
    double

类型转换

  • 自动转换
    小字节数据类型转换成大数据类型
  • 强制转换
    大字节数据类型转成小数据类型

&&和&的区别

  • &&
    如果第一个表达式为false,就不会执行第二个表达式
  • &
    两边都会执行
    这就是短路效应

||和|的区别

  • ||
    如果第一个表达式为true,就不会执行第二个表达式
  • |
    两边都执行

位移

JavaSE总结-上部(面向对象)

三目运算

表达式1?表达式2:表达式3
如果表达式1结果为true,结果就是表达式2
如果表达式1结果为false,结果就是表达式3

switch判断因子的数据类型

byte,short,int,char,枚举类型,java7开始支持字符串String

while和do…while的区别

  • while
    先判断再循环
  • do…while
    先循环再判断

break和continue的区别

  • break
    结束当前循环
  • continue
    结束本次循环,继续执行下面循环
    break和continue只针对当前所处的循环对其他循环不起作用

数组

相同数据类型的组合

一维数组内存结构示意图

JavaSE总结-上部(面向对象)

二维数组内存结构示意图

JavaSE总结-上部(面向对象)

面向对象

面向过程和面向对象的区别

  • 面向过程
    面向过程(亲历亲为,注重过程)
    • 例子(想吃西红柿炒蛋)
      自己去菜市场买菜,自己去烹饪,自己吃
  • 面向对象
    面向对象 (注重结果,让专业的人做专业的事)
    • 例子(想吃西红柿炒蛋)
      自己让保姆给你做一份西红柿炒蛋

面向对象的四大特征

  • 封装
    把类的细节隐藏起来,只为外部提供调用和赋值的方法.提高了代码的安全性
  • 继承
    用于表明类与类之间的关系
    父类:基类 子类:派生类,继承了父类的属性和方法,也有自己特有的属性方法
    可以继承父类的非私有的方法和属性且java只支持单继承可多重继承

    构造函数的调用关系

    创建子类的时候,子类的构造函数会自动调用父类的构造函数,父类的构造函数会继续往上调用父类的构造函数
    子类的构造函数中,如果没有显示的写出调用父类的构造函数,那么jvm会自动调用并且只会调用父类的无参构造函数,如果父类没有无参的构造函数,那么会报错,必须子类手动写出调用父类的其他构造函数,通过super关键字
  • 多态
    类不同时期展现的多种形态

    多态的前提

    两个类之间要有继承关系,要有方法的重写,父类的引用指向子类的实例
  • 抽象
    抽象就是从多个事物中将共性的,本质的内容抽取出来

继承的优缺点

  • 优点

    1. 提高代码复用率
    2. 提高代码可维护性
    3. 多态的前提
  • 缺点

    1. 类与类之间产生了依赖
    2. 破环了封装性
    3. 不符合代码的编写原则(高内聚低耦合)

封装的缺点

  • 优点
    1. 提高了代码的安全性
    2. 降低了软件的耦合度
    3. 封装的实体类传递参数高效

多态的优缺点

  • 优点

    1. 提高代码的可扩展性
    2. 方法的形参可以设置成父类类型,这样一来,不管有多少个子类,都可以填入,通用方法
    3. 运用在抽象类和接口创建实例静态成员和成员变量的区别
  • 缺点

    1. 不能使用子类特有的方法

static

静态的变量和方法是随着类的加载而加载,优先于我们的对象,所以不能在静态里调用对象的东西

静态方法和普通方法的区别

  • 普通方法可以调用静态的变量和静态方法,也可以调用非静态变量和方法
  • 静态方法只能调用静态变量和方法
  • 普通方法可以通过对象来去调用
  • 静态方法既可以通过对象去调用(不推荐),也可以通过类名去调用(推荐)

静态成员和成员变量的区别

  1. 所属关系
    • 成员变量依赖于对象,属于对象
    • 静态变量属于类,可以叫类成员或者叫类变量
  2. 内存
    • 成员变量在各自对象的堆里
    • 静态变量在方法区里的静态区里
  3. 调用方式
    • 成员变量使用对象来获取
    • 静态变量通过类名来获取
  4. 生命周期
    • 成员变量的生命周期和对象同步,对象消失,成员变量也就消失了
    • 静态变量与类的声明周期同步,随着类的加载而加载,随着类的消失而消失

this与super

  • this 可以看作这个类的一个对象
  • super 父类的一个对象

重写和重载

JavaSE总结-上部(面向对象)

重写的好处

  • 类具有多样性,也是多态的前提
  • 提高了类的代码的灵活性
  • 还可以对类进行扩展性

多态的成员访问特点

JavaSE总结-上部(面向对象)

接口

属于扩展功能的API

抽象类与接口的区别

JavaSE总结-上部(面向对象)

修饰符

JavaSE总结-上部(面向对象)