笔记

java常识

  • Java编程语言的主要特性
    • 纯面向对像
    • 简单VS复杂
    • 代码开放性
    • 代码安全性
    • 垃圾回收(GC)
    • 跨平台
  • 编译型语言和解释型语言的特点
    • 编译型语言(c、c++)
      源文件 – 编译器–> 可执行文件 运行可执行文件 –> 机器指令
    • 解释型语言 (javascript 、perl)
      文本文件 —解释器-> 直接翻译成机器指令
  • Java语言的运行机制
    • 先编译,后解释(java)
      .java源文件 – 编译(javac Stu.java) –> .class字节码文件 (字节码)– jvm解释执行(java Stu) –> 真正的机器指令 Write Once , Run Anywhere(一次编写到处运行)
  • JRE (Java Runtime Environment) Java运行时环境
    JRE = JVM(Java Virtual Machine) Java虚拟机+解释器
  • JDK(Java Development Kit) Java开发工具包
    JDK = JRE + 工具(编译器、调试器、其他工具……) + 类库
  • JAVA_HOME
    表示的是Java的安装目录
    如:D:\Program Files (x86)\Java\jdk1.7.0
  • CLASSPATH
    是用来指示编译器和JVM去哪个目录寻找.class文件如:.
  • PATH
    是在命令行上输入Java命令时,用来指示操作系统去哪个路径下找Java 的相关程序。往往会把PATH变量配成Java的安装路径/bin目录
  • 什么是变量?如何声明变量,如何给变量赋值
    变量概念是在内存中开辟的空间,用于存储数据,并取名
    a)程序运行在内存中
    b)程序的核心是处理数据
    c)在内存中存储数据的单元(容器)
    d)内存中:内存地址——>不好记——>取别名——>变量
  • 公开类的特点?
    1、如果一个类是公开类,.java文件名字与公开类名字一致
    2、一个.java文件只应该有一个公开类
  • 什么命令编译和执行java程序
    编译:javac Stu.java或者javac java源文件名
    执行:java stu 或者java 类名

匿名对象

  • 没有名字的对象
  • 使用场景:
    • 当对象只使用一次的时候
    • 作为实参传递
  • 好处
    • 使用完成可以即时被回收,提高内存使用效率

面向对象(OOP)

  • 三大特征
    • 封装
    • 继承
    • 多态

封装

  • 概述:隐藏对象的属性和实现细节,仅对外提供公共访问方式
    • 对应代码就是:将成员变量私有化(用private修饰);向外提供公共的set方法(setter)和get方法(getter)
  • 好处:

    • 提高代码安全性
    • 提高代码的复用性
    • 有助于建立个系统之间的松耦合关系,提高系统独立性

    - 松耦合关系

    强内聚(模块的功能尽量在模块内部独立完成,不让外面干预),弱耦合(提供给外部尽量少的方法调用)

  • private

    • 私有的 访问权限修饰符
    • 可以修饰成员(成员变量和成员方法)
    • 被private修饰的成员只能在本类中才能访问
  • this(句柄)关键字
    • this这个的意思,是一个代词,指代一类东西
    • this在java中指代的就是本类对象的引用
    • 具体指代的是哪一个对象呢?哪一个对象调用就指代哪一个
  • 生成setter和getter
    • 在代码区域单击右键–source–Generate Getters and Setters

static关键字

  • static静态。被static修饰的成员叫做类成员,随着类的加载而加载
  • static修饰成员变量,该变量就是静态变量
  • static修饰成员方法,该变量就是静态方法
  • 作用:共享数据
  • 调用方式:
    • 类名.静态成员(标准用法)
    • 对象.静态成员(语法不错,但是不推荐)
  • 注意:
    • 静态方法只能调用静态,不能调用非静态
    • 常用于工具类中
    • 局部变量不能使用static
    • 非静态方法是万能的,静态和非静态都可以
    • 为什么?结合静态的生命周期分析
    • static方法中不能使用this
  • 静态的内容存在于方法区的静态区

main方法

  • public static void main(String[] args)
    • public 访问权限,公共的,访问权限最大,因为main方法需要被JVM访问
    • static 静态的,属于类成员,随着类加载。因为main被JVM访问,不需要创建对象
    • void 无返回值
    • main 这个是方法名,只有该方法名能被jvm识别成入口,切记不能更改
    • String[] args 参数,类型为字符串数组。用来接收用户输入的数据
  • ArrayIndexOutOfBoundsException 数组索引越界

11.30

代码块

  • 用{}括起来的内容
  • Java中有一下代码快
    • 局部(普通)代码块:方法内部,用{}表示作用:限制局部变量的生命周期
    • 构造(动态)代码块:类中方法外,用{}表示作用:用来初始化成员变量(如果构造方法中相同的数据初始化,就可以将相同的初始化语句放在该代码块中)执行次数:每调用一次构造就被执行一次
    • 静态代码块:类中方法外,用static{}表示 作用:用来进行类的初始化 执行次数:只会被执行一次
    • 同步代码块
  • 静态代码块 > main > 构造代码快 >构造方法(执行顺序)

this的另一个用法

  • this(…)调用本类的构造方法
  • this(…)放在构造方法中可执行代码的第一行

继承

  • java中用关键字extends实现继承
  • class 子类 extends 父类
  • 子类又叫派生类,父类又叫基类、超类
  • 注意:
    • java类与类之间只支持单继承,不支持多继承,但是可以多重继承
    • 私有(private)成员不能被继承
    • 构造方法不能被继承,但子类构造会默认调用父类的无参构造
    • 怎么调用?通过super()调用。记住:子类构造可执行代码的第一行默认有super();
    • 为什么会有super():因为子类需要使用父类的数据,而父类的数据需要通过父类的构造方法初始化
  • 继承的好处:
    • 提高代码的复用性
    • 提高代码的维护性
    • 让类与类之间产生了关系,是多态的前提
  • 继承的弊端:
    • 打破了代码的封装性
    • 增强了代码的耦合性
  • 注意
    • 不能为了步伐功能而继承
    • 什么时候使用继承呢?继承中类之间体现的是:”is a”的关系。

super(…)

  • 继承关系的初始化:分层初始化
    • 先初始化父类,再初始化子类
  • java中最基本的单元是类,初始化就是对类的成员变量初始化
    • 默认初始化
    • 显示初始化
    • 构造初始化

方法的重写(Override)

  • 子类中出现了和父类一模一样的方法声明,也称为方法的覆盖,方法的重写
  • 注意
    • 私有方法不能被复写
    • 子类复写的方法访问权限不能低于父类
    • 静态方法复习也必须是静态方法

12.01

  • final最终的意思
    • 修饰类 该类为最终类,不能被继承
    • 修饰变量 该变量变常量, 只能被赋值一次
    • 修饰成员变量的时候怎么赋值呢?
      • 在构造方法执行完之前赋值即可。但是建议定义时候就赋值
      • 静态常量static final 数据类型 常量名:只能在定义的时候赋值
    • 修饰成员方法;该方法不能被子类复写
    • 注意
    • final修饰基本数据类型的变量是该变量的数据值不能改变
    • final修饰引用数据类型的变量是该变量的地址值不能改变

单例设计模式

  • 作用:解决对象共享同一内存地址
  • 步骤:
    • 1、将构造方法私有化
    • 2、定义并初始化一个私有对象
    • 3、定义一个方法,将该私有对象提供一个公共的访问方法
    • 代码
    • public class Dog{
      • private static final Dog dog = new Dog();
      • private Dog(){
        • //ToDo Auuto….
      • }
      • public static Dog getInstance(){
        • return dog;
      • }
    • }

多态

  • 某以事物,在不同时刻表现出来的不同状态
  • 如何实现?
    • 有继承或实现关系
    • 有方法的复写(非必要)
    • 有父类引用指向子类对象
  • 成员访问特点:
    • 成员变量:编译看左,运行看左
    • 成员方法:编译看左,运行看右
    • 静态方法:编译看左,运行看左
  • 好处:
    • 提高了代码的维护性(由继承保证)
    • 提高了代码的扩展性(由多态保证)
  • 弊端:
    • 不能访问子类特有的成员
  • 如何访问?
    • 使用多态的转型(向下转型)访问
    • 向上转型:从子类到父类 Fu fu = new Zi();
    • 向下转型:从父类到子类 Zi zi = (Zi)Fu();

抽象类

  • java中用abstract表示抽象,可以修饰类、方法
  • java中没有方法体的方法就是抽象方法,就用abstract修饰
  • 有抽象方法的类为抽象类,用abstract修饰
  • 抽象类不一定有抽象方法
  • 抽象类不能被实例化,但是有构造方法。构造方法在这里仅仅初始化数据
    • 如何才能访问抽象类的成员?通过多态的特征让子类进行实例化
  • 抽象类的子类:
    • 要么是抽象列
    • 要么是重写抽象类中的所有抽象方法
  • 抽象类的成员特点:
    • 成员变量可以是变量也可以是常量
    • 成员方法可以是抽象也可以是非抽象
    • 有构造方法,但是不能实例化
  • abstract不能和一下关键字共存
    • private
    • static
    • final

接口

  • java中用interface表示接口
  • 格式:interface 接口名 {}
  • 类与借口的关系是实现关系,格式 class 类名 implements 借口名{}
  • 借口中成员的特点:
    • 成员变量只能是静态常量 用public static final修饰
    • 成员方法必须是抽象方法, 用public abstract 修饰
    • 没有构造方法,也不能被实例化。可以通过多态让实现类进行实例化
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值