Java基础(一)

一、java特点

  • 解释性语言
  • 平台无关
  • 自动内存管理
  • 参数值传递
  • 自动垃圾回收
  • 单继承

平台无关性实现方式

  • Java虚拟机(JVM)
    • Java 代码编译后生成的字节码文件(.class文件)可以在任何安装了JVM的操作系统上运行
    • JVM 负责将字节码解释或编译成本地机器码,从而在特定平台上执行
  • 标准库和API
    • Java 提供了丰富的标准库,这些库封装了与操作系统无关的功能,开发者可以使用这些库而不需要关心底层操作系统的差异
    • Java API 也是跨平台设计的,确保了相同的代码在不同平台上具有相同的行为
  • 编译器和字节码:
    • Java 编译器(javac)将源代码编译成平台无关的字节码,这些字节码在JVM中运行
    • 字节码是一种中间语言,它既不是源代码也不是机器码,因此可以在任何安装了JVM的平台上解释执行
  • 抽象层:
    • Java 通过提供抽象层来隐藏底层平台的差异。比如,Java 的文件I/O操作通过 java.io 包提供,网络操作通过 java.net 包提供,这些包在不同平台上有相同的接口。

垃圾回收算法

  • 标记清除
    • JVM识别并清除,导致内存空间不连续(内碎片)但是快
  • 标记复制
    • 空间分两半,一开始在左边(假设),复制存活对象到右边,清空左侧的垃圾,再来的对象在右侧。
    • 无内碎片,浪费一半空间,复制慢
  • 标记整理
    • 标记,清理,整理。无内碎片,不浪费空间,性能低

不支持多继承

  • 多继承会导致菱形继承:B、C都继承了A,然后D继承了B、C,则D会有两份来自A的属性与方法(产生歧义)
  • 所以不支持多继承,可以多实现implements(需要重写@Override)

二、面向对象 vs 面向过程

  • 面向对象
    • 属性、行为封装为对象
    • 从问题中抽象出对象,通过对象间的调用解决问题
  • 面向过程
    • 分步骤设计函数,依次调用

面向对象三大基本特征

  • 封装:客观事物抽象为java类,类中有属性、方法
  • 继承:子类继承父类,为了复用(单继承,多实现)
  • 多态:重写使子类和父类在同一个方法中有不同含义

重载 vs 重写

  • 重载:方法名称相同,参数不同
  • 重写:方法名称相同、参数也相同@Override

面向对象五大基本原则

  • 单一职责:一个类只做一件事
  • 开放封闭:对扩展开放,对修改封闭(implements)
  • 里氏替换:子类必须能替换其基类
  • 依赖倒置:程序依赖抽象接口,而不是具体的实现
  • 接口隔离:多个小而专(专门)的接口,而不是大的总接口

三、接口 vs 抽象类

  • 都可以实现抽象层
  • 接口
    • 只有抽象方法,只定义方法,无实现,修饰符public
    • 若定义了成员变量,必须初始化
    • 无构造器
    • 被实现
    • 制定规范
  • 抽象类
    • 修饰符public、protected、private、default
    • 可以有构造器
    • 被继承
    • 复用

四、包装类

  • 布尔型
    • 基本数据类型:boolean - 包装类:Boolean
  • 整型
    • byte - Byte 1字节 -128 ~ 127
    • short - Short 2字节
    • int - Integer 4字节
    • long - Long 8字节
  • 字符型
    • char - Character 2字节
  • 浮点型
    • float - Float 4字节
    • double - Double 8字节
  • 包装类使基本数据类型有了对象的性质,并为其添加了属性和方法
  • 默认值不同
    • 基本数据类型:0,false,\u0000
    • 包装类:null
  • 初始化方式不同
    • 包装类要new,基本数据类型不需要
  • 存储方式不同
    • 基本数据类型保存在栈上
    • 包装类保存在堆上
  • 自动拆装箱
    • 基本数据类型 to 包装类:装箱,反之拆箱
    • 基本数据类型放入集合类
    • 包装类和基本类比大小
    • 包装类运算
    • 三目运算符
    • 函数参数与返回值
 Integer i= 10;	//自动装箱[包装类的ValueOf()实现]
 int b = i;	//自动拆箱[包装类的xxxValue()]xxx是对应的包装类名

五、浮点数不能表示金额

  • 浮点数是近似值,表示金额会精度丢失
  • 用BigDecimal实现精确运算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值