简述类与对象

一、两者关系

类是Java语言中最重要的数据类型,用于创建具体实例(对象)

抽象出一类事物共有的属性和行为,即数据以及数据上的操作

类是对现实事物的模拟,包含属性(成员变量)和行为(成员方法)

  • 类是一类事物的描述,是抽象的
  • 对象是一类事物的实体,是具体的
  • 类是对象的模板,对象是类的实例

一个类的类体由两部分组成:变量的声明、方法的定义

public class Demo {
    int num1 = 10; // 正常运行 声明成员变量时可以赋予初值
    int num2;
    // num2 = 20;  // 标红报错 赋值语句只能出现在方法体中
    }
}

二、对象使用

导包 —> 创建 —> 使用

对应API文档的三个关注点:类所在的包,构造方法摘要,方法摘要

API(Application Programing Interface),应用程序编程接口,JDK 提供给程序员使用类的说明文档

/**
 * 点运算符“.”也称引用运算符、访问运算符
 * 创建对象:类名称 对象名 = new 类名称();
 * 使用对象:对象名.成员变量;对象名.成员方法(参数);
 */
public class Test {
    public static void main(String[] args) { 
        Student stu = new Student(); 
        stu.name = "鱼悠奕";
        System.out.println(stu.name); // 鱼悠奕
        stu.study();
    }
}

(1)new 创建对象

new运算符和构造方法运算时做两件事情

A、为类的成员变量分配内存空间,执行构造方法中的语句,初始化成员变量

B、计算出一个称作引用的值,即表达式new Student()是一个值,此时对象才诞生

所谓创建对象,就是指为对象分配变量,并获得一个引用,以确保这些变量由该对象来操作管理

(2)避免使用空对象

类声明的变量称做对象,对象负责存放引用,以确保对象可以操作分配给该对象的变量以及调用类中的方法

分配给对象的变量被习惯地称作对象的实体,对象可以动态地被分配实体,Java 编译器对空对象不做检查

没有实体的对象称作空对象,空对象不能使用,否则程序在运行时会出现 NullPointerException 空指针异常

		Student student = null;
		// student.setAge(18); // java.lang.NullPointerException 【运行时异常】

三、内存模型

!!成员变量存的是数值,成员方法存的是地址值

!!同类对象的成员方法指向方法区中的同一处内存

(1)一个对象的内存图
在这里插入图片描述
(2)两个不同对象的内存图
在这里插入图片描述
(3)两个相同对象的内存图
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/454808.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《如何使用C语言去下三子棋?》

目录 一、环境配置 二、功能模块 1.打印菜单 2.初始化并打印棋盘 3、行棋 3.1玩家行棋 3.2电脑行棋 4、判断是否和棋 5.判赢 三、代码实现 1、test.c文件 2、game.c文件 3、game.h文件 一、环境配置 本游戏用到三个文件,分别是两个源文件test.c game.c 和…

排序算法之快速排序算法介绍

目录 快速排序介绍 时间复杂度和稳定性 代码实现 C语言实现 c实现 java实现 快速排序介绍 快速排序(Quick Sort)使用分治法策略。 它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据…

动态规划——传球问题

题目链接:1.传球游戏 - 蓝桥云课 (lanqiao.cn) 本题关键在于动态规划的数组设计,以及围坐一圈时索引的变化。 首先是动态规划,由于是求球传递m次回到第一位同学,那么就可以设计成一个二维数组,每个位置代表的是&#x…

【LeetCode热题100】240. 搜索二维矩阵 II

一.题目要求 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 ‘每列的元素从上到下升序排列。 二.题目难度 中等 三.输入样例 示例 1: 输入:matrix [[1,4,7…

蓝桥杯 填空 卡片

蓝桥杯 填空题 卡片 解题思路&#xff1a; 我们只需要消耗完卡片的个数即可。 代码示例&#xff1a; #include<bits/stdc.h> using namespace std; int a[10]; bool isEnd(){for(int i0;i<10;i){if(a[i]-1)return false;}return true; } bool getN(int x){while(x){i…

ARM 汇编指令:(五)CMP指令

目录 1.CMP比较指令 2.指令条件码 cond 1.CMP比较指令 CMP指令是计算机指令集中的一种比较指令&#xff0c;用于比较两个操作数的大小关系或相等性&#xff0c;并根据比较结果设置或更新条件码寄存器&#xff08;或程序状态字&#xff09;的标志位。 指令格式&#xff1a;C…

jenkins + gitea 自动化部署Docker项目(vue + .NET Core)

废话不多说&#xff0c;服务先安装好Jenkins 和 gitea 理论上 gitlab 一样的实现流程 Jenkins 配置&#xff1a; 第一步装插件 安装 Generic Event 安装 gitea 相关插件 创建一个任务 设置 git 根据自己git 的认证填写对应的认证方式 构建环境记得勾选这个&#xff0c;会清…

【关注】国内外经典大模型(ChatGPT、LLaMA、Gemini、DALL·E、Midjourney、文心一言、千问等

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

Python XML数据处理库之xmltodict使用详解

概要 在 Python 的开发中,处理 XML 数据是一项常见的任务。然而,Python 标准库中的 XML 解析器使用起来可能较为繁琐,需要编写大量的代码来处理 XML 数据。幸运的是,有一个名为 xmltodict 的第三方库可以帮助我们简化这个过程。本文将深入探讨 xmltodict 库的各个方面,包…

16、设计模式之观察者模式(Observer)

一、什么是观察者模式 观察者模式属于行为型模式。在程序设计中&#xff0c;观察者模式通常由两个对象组成&#xff1a;观察者和被观察者。当被观察者状态发生改变时&#xff0c;它会通知所有的观察者对象&#xff0c;使他们能够及时做出响应&#xff0c;所以也被称作“发布-订…

【git】GitHub仓库没有 Contribution activity

解决方案 检查并更改本地的 git 绑定的邮箱和名字 git config --global user.name "Your New Name" git config --global user.email "yournewemailexample.com"查询方式 git config --global user.name git config --global user.email成功显示

opencv dnn模块 示例(25) 目标检测 object_detection 之 yolov9

文章目录 1、YOLOv9 介绍2、测试2.1、官方Python测试2.1.1、正确的脚本2.2、Opencv dnn测试2.2.1、导出onnx模型2.2.2、c测试代码 2.3、测试统计 3、自定义数据及训练3.1、准备工作3.2、训练3.3、模型重参数化 1、YOLOv9 介绍 YOLOv9 是 YOLOv7 研究团队推出的最新目标检测网络…

Spring Cloud Alibaba微服务从入门到进阶(三)

Spring Cloud Alibaba是spring Cloud的子项目 Spring Cloud Alibaba的主要组件&#xff08;红框内是开源的&#xff09; Spring Cloud是快速构建分布式系统的工具集&#xff0c; Spring Cloud提供了很多分布式功能 Spring Cloud常用子项目 项目整合 Spring Cloud Alibaba …

开源导出html表格项目-easyHtml

开源导出html表格项目-easyHtml 背景介绍 背景 项目的由来&#xff0c;在面试的过程中&#xff0c;发现这个需求&#xff08;导出html表格&#xff09;比较常见&#xff0c;同时也引起我的兴趣&#xff0c;所以就有了开源项目easyHtml第一个版本 介绍 功能 支持自定义表格标…

Linux 配置ssh、scp、sftp免密登录

SSH&#xff08;Secure Shell&#xff09;是一种安全的远程登录协议&#xff0c;它使用客户端-服务器架构促进2个系统之间的安全通信&#xff0c;并允许用户远程登录服务器。在某些高可用环境下&#xff0c;服务器之间可能还需要配置免密互信&#xff0c;即基于密钥验证登录。 …

vue3 + antd二次封装a-table组件

前置条件 vue版本 v3.3.11 ant-design-vue版本 v4.1.1 内容梗概 二次封装a-table组件&#xff0c;大大提高工作效率和降低项目维护成本&#xff1b; 先看效果图 代码区域 utils.js文件 // 用于模拟接口请求 export const getRemoteTableData (data [], time 1000) >…

STM32第八节:位带操作——GPIO输出和输入

前言 我们讲了GPIO的输出&#xff0c;虽然我们使用的是固件库编程&#xff0c;但是最底层的操作是什么呢&#xff1f;对&#xff0c;我们学习过51单片机的同学肯定学习过 sbit 修改某一位的高低电平&#xff0c;从而实现对于硬件的控制。那么我们现在在STM32中有没有相似的操作…

【数据结构】Set的使用

文章目录 一、Set的使用1.Set的常用方法&#xff1a;1.boolean add(E e)2.void clear()3.boolean contains(Object o)4.boolean remove(Object o)5.int size()6.boolean isEmpty()7.Object[] toArray()8.boolean containsAll(Collection<?> c)9.boolean addAll(Collecti…

学习Vue(1)环境搭建与运行一个vue项目

下载node.js 下载地址&#xff1a;下载 | Node.js 中文网 安装 双击下载好的安装文件&#xff0c;选择安装路径即可。 安装完成&#xff0c;输入命令&#xff1a;nodel -v&#xff0c;查看版本&#xff0c;正常显示版本即安装成功。 自定义全局安装路径和缓存路径&#xff0…

SpringCloud-深度理解ElasticSearch

一、Elasticsearch概述 1、Elasticsearch介绍 Elasticsearch&#xff08;简称ES&#xff09;是一个开源的分布式搜索和分析引擎&#xff0c;构建在Apache Lucene基础上。它提供了一个强大而灵活的工具&#xff0c;用于全文搜索、结构化搜索、分析以及数据可视化。ES最初设计用…