Java语言与面向对象的程序设计

2023-11-12

这几天很迷茫,听老师介绍了一款软件~中国大学MOOC。刚好我是软件专业的学生,索性听了北京大学老师的一节关于Java的讲课,果断被震撼到了,他们的讲课给人一种很深刻(深入)的感觉。我今天就把老师讲到的东西记了下来,以便于有兴趣的朋友阅读…

Java分为三大平台

  • Java SE 标准版
  • Java EE 企业版
  • Java ME 微型版

Java的开发工具包 JDK(Java Development Kit)

Java的推动力:JCP与JSR

Java是一种编程语言

  • 它是一种面向对象的编程语言(OOP)
  • 它的语法结构与C和C++语言极为相似
  • Java所用的语法十分简单

Java的特点

  • 简单一些
  • 面向对象
  • 平台无关性
  • 安全稳定
  • 支持多线程

丰富的类库

Java提供了大量的类以满足网络化、多线程、面向对象的系统需要

  • 语言包(package)
  • 实用程序包
  • I/O包
  • 网络包
  • 图形用户界面包
  • And More…

Q:Java 可以干什么
A:如下

  • 面向对象的应用开发
  • 各类网络应用程序的开发
  • 计算过程的可视化
  • 动态界面/交互操作
  • Internet的系统管理
  • 数据库操作
  • And More…

Java是C++–

  • 无直接指针操作
  • 自动内存管理
  • 数据类型长度固定
  • 不用头文件
  • 不包括结构和联合
  • 不支持宏
  • 不支持多重继承
  • 无类外全局变量
  • 无GOTO

Java运行机制

Java三种核心机制

  • Java虚拟机(JVM)
  • 代码安全性检测(Code Security)
  • 垃圾收集机制(Garbage Collection)

Java的编译与运行

java的编译与运行流程

Java虚拟机(JVM)


  • 在一台计算机上由软件或硬件模拟的计算机。
  • Java虚拟机(JVM)读取并处理经编译过的字节码class文件。


  • Java虚拟机规范定义了:

  • 指令集
  • 寄存器集
  • 类文件结构
  • 栈堆
  • 垃圾回收堆
  • 内存区域

Java运行环境(JRE)


  • JRE(The Java Runtime Environment)
  • JRE = JVM+API(Lib)
  • JRE运行程序时的三项主要功能:

  • 加载代码:由class loader完成;
  • 校验代码:由bytecode verifier完成;
  • 执行代码:由runtime interpreter完成。

Java自动垃圾回收技术


  • 垃圾回收(garbage collection)
  • 在C/C++等语言中,由程序员负责回收无用内存
  • Java语言自动垃圾回收

  • 系统级线程跟踪存储空间的分配情况
  • 在JVM的空间时,检查并释放那些可被释放的存储器空间
  • 程序员无须也无法精确控制和干预该回收过程

JDK(Java开发工具包)

JDK = JRE+Tools
JRE(运行环境) = JVM+API

JDK下载


  • 要开发Java程序,要下载JDK

  • http://java.sum.com
  • 可以只下载JavaSE
  • 注意:如果只运行Java程序,则只下载JRE
  • http://java.com
  • JDK提供的工具
  • java编译器 javac.exe
  • java执行器 java.exe
  • 文档生成器 javadoc.exe
  • java打包器 jar.exe
  • java调试器 jdb.exe

面向对象程序设计

对象

对象具有两方面的含义:


  • 在现实生活中:

  • 是客观世界中的一个实体
  • 在计算机世界中:
  • 是一个可标识的存储区域

类(class)


  • 类:具有共同属性和行为的对象集合

  • 属性:变量(字段 field)
  • 行为:函数(方法 method)
  • 类与对象的关系
  • 类是对象的抽象(模板)
  • 对象是类的实例
  • 注:类和对象有时候都统称为“对象”,为了明确起见,后者称为“对象实例”。

Person类

class Person{
    int age;
    String name;
    void sayHello(){...}
}

对象实例化

Person person = new Person();

面向对象的三大特征

  • 封装性
  • 继承性
  • 多态性

封装

模块化:将属性和行为封装在类中,程序定义很多类。
信息隐蔽:将类的细节部分隐藏起来,用户只通过受保护的接口访问某个类。

class Person{
    private int age;
    public int getAge(){
        return age;
    }
    public void setAge(int a){
        age=a;
    }
    String name;
    void sayHello(){...}
}

继承(inheritance)


  • 继承性

  • 父类和子类之间共享数据和方法
  • 继承的好处
  • 更好的进行抽象与分类
  • 增强代码的重用性
  • 提高可维护性

父类

class Person{
    int age;
    String name;
    void sayHello(){...}
}

子类

class Student extends Person{
    String school;
    double score;
    void meetTeacher(){...}
}

多态性


  • 多态

  • 不同的对象收到同一个消息(调用方法)可产生完全不同的效果
  • 实现的细节则由接受对象自行决定
  • 例 foo(Person p ){ p.sayHello(); }
  • foo( new Student() );
  • foo( new Teacher() );

面向对象设计思想的要点


  • 认为客观世界由各种对象组成
  • 程序的分析和设计都围绕着

  • 有哪些对象类
  • 每个类有哪些属性、哪些方法
  • 类之间的关系(继承、关联等)
  • 对象之间发送消息(调用方法)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java语言与面向对象的程序设计 的相关文章

随机推荐

  • spring与mybatis集成

    Spring 集成 MyBatis 将 MyBatis与 Spring 进行整合 主要解决的问题就是将 SqlSessionFactory 对象交由 Spring来管理 所以 该整合 只需要将 SqlSessionFactory 的对象生成
  • Nodejs+Express中页面控制器及脚本自动加载设计

    Express自身带强大的路由功能 这让我们可以详细拆分项目的需求 设计出优美的restful风格对外API 为了方便实现上述功能 我加入了页面控制器及脚本自动加载设计 比如针对会员模块 我们在app js中指定了模块的路由文件 app u
  • 【Java】你还在使用单线程处理大量数据么?

    Java 结合实际业务场景 使用多线程异步处理大量数据 业务场景 优化方案 多线程的实现 线程池 为什么要使用线程池 线程池的创建 1 Spring配置类 2 手动创建 提交任务 1 execute 2 submit 案例伪代码 后续优化
  • 【Python】OpenCV常用操作函数大全!

    目录 cv2常用类 1 图片加载 显示和保存 2 图像显示窗口创建与销毁 3 图片的常用属性的获取 4 生成指定大小的矩形区域 ROI 5 图片颜色通道的分离与合并 6 两张图片相加 改变对比度和亮度 7 像素运算 1 加减乘除 8 像素运
  • 【Windows】Windows下wget的安装与环境变量配置

    1 wget安装 GNU Wget常用于使用命令行下载网络资源 包括但不限于文件 网页等 GNU Wget官网 GNU Wget GNU Wget for Windows GNU Wget for Windows 安装时首先下载主安装包 C
  • 老王的24天,

    数组元素的反转 数组元素的反转 本来的样子 1 2 3 4 之后的样子 4 3 2 1 要求不能使用新数组 就用原来的一个数组 public class Demo07ArrayReverse public static void main
  • nRF52832 — 多通道ADC接口的使用

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX 作 者 文化人 XX 联系方式 XX 版权声明 原创文章 欢迎评论和转载 转载时能告诉我一声就最好了 XX 要说的
  • Golang基础(项目结构)

    一 标准的项目结构 在实际开发中不可能只有一个main包 更不可能就只有一个 go文件 不同级别大小的项目中包和文件数量都不同 Go语言中组织单元最大的为项目 项目下包含包 一个包可以有多个文件 包在物理层面上就是文件夹 同一个文件夹中多个
  • iOS App的上架和版本更新流程

    一 前言 作为一名iOSDeveloper 把开发出来的App上传到App Store是必要的 下面就来详细讲解一下具体流程步骤 二 准备 一个已付费的开发者账号 账号类型分为个人 Individual 公司 Company 企业 Ente
  • curl使用总结

    curl使用官网 https curl haxx se docs manpage html 1 查看curl的安装版本以及支持的协议 curl V 2 CURL分析HTTPS请求耗时时间 HTTPS耗时 TCP握手 SSL握手 因为涉及到一
  • 短视频矩阵系统源代码开发搭建分享--代码开源SaaS

    一 什么是短视频矩阵系统 短视频矩阵系统是专门为企业号商家 普通号商家提供帐号运营从流量 到转化成交的一站式服务方案 具体包含 点赞关注评论主动私信 评论区回复 自动潜客户挖掘 矩阵号营销 自动化营销 粉丝 管理等功能 可以帮助企业或商家快
  • stl排序之sort函数

    STL容器的排序 支持随机访问的容器vector deque string没有sort成员 可调用std sort排序 list排序调用自带的list sort 下面是std sort函数 有两个版本 template
  • LED点阵书写显示屏

    LED点阵书写显示屏 题目的大概要求是做一个32 32的点阵书写屏 LED 点阵模块显示屏工作在人眼不易觉察的扫描微亮和人眼可见的 显示点亮模式下 当光笔触及 LED 点阵模块表面时 先由光笔检测触及位置处 LED 点 的扫描微亮以获取其行
  • springboot no tests were found

    springboot单元测试报错 no tests were found 如图所示 原因分析 1 进行单元测试的方法不能有返回值 2 方法不能私有化 以上两个问题都会报 no tests were found 错误 正确写法
  • 华为od机试 Java 【url拼接】

    题目 给定一个URL的前缀和后缀 我们需要将其合并成一个完整的URL 在合并时 请注意以下几点 如果前缀的结尾没有斜线 而后缀的开头也没有斜线 那么在两者之间需要添加一个斜线 如果前缀的结尾和后缀的开头都有斜线 那么需要保留其中的一个 删除
  • Vue-生命周期函数

    Vue 生命周期函数 一 生命周期和生命周期函数 生命周期 Life Cycle 是指一个组件从创建 gt 运行 gt 销毁的整个阶段 强调的是一个时间段 生命周期函数 是由vue 框架提供的内置函数 会伴随着组件的生命周期 自动按次序执行
  • 【js】从数组中随机选一个数,从数组中随机选几个数

    每组中随机选一个 每组中随机选一个 randomFun arr let ri Math floor Math random arr length return arr ri 使用 let arr 1 2 3 4 5 6 7 console
  • Android QQ 登录接入详细介绍

    今日科技快讯 近日 百度地图发布2022春节出行大数据 迁徙大数据显示 2022年春运迁徙规模较去年农历同期有明显上升 春节期间全国人口迁徙规模日均值为去年农历同期的近两倍 春节前的迁徙规模峰值出现在1月29日 腊月廿七 春节后于2月6日达
  • Python写简单的拼图小游戏(附源码、资源)

    郑重声明 嘿嘿 代码与图片已上传资源 需要者自取 资源地址 https download csdn net download qq 44651842 20009562 Python小白一只 正在成长 程序自己设计 很多不足 算法很多地方能优
  • Java语言与面向对象的程序设计

    这几天很迷茫 听老师介绍了一款软件 中国大学MOOC 刚好我是软件专业的学生 索性听了北京大学老师的一节关于Java的讲课 果断被震撼到了 他们的讲课给人一种很深刻 深入 的感觉 我今天就把老师讲到的东西记了下来 以便于有兴趣的朋友阅读 J