【Java学习笔记】类与对象

类与对象


什么是类?

知识迁移:类比 C 语言中的结构体

类的描述

类是一个对象的抽象,从字面意思就表示一个类的事物,类具有属性方法(行为)对象是类的一个具体表现

总结:对象抽象对象映射

实例理解:创建一个猫类

对象的引出

由这个类可以映射出不同的猫(对象),当属性方法变化时只需要在类中进行修改就可以映射到不同的类上,这也体现了类的便捷性

小结:类与对象的关系


快速入门

第一种方式:直接创建一个对象

public class hello{public static void main(String[] args){person person1 = new person();  //直接创建}
}
class person{int age;String name;double height;String[] job; //属性既可以基本数据类型,也可以是引用类型
}

第二种方式:先声明一个对象,之后创建

public class hello{public static void main(String[] args){//先声明一个对象,然后创建person person1;person1 = new person();}
}
class person{int age;String name;double height;String[] job; //属性既可以基本数据类型,也可以是引用类型
}

代码解析

person person1 = new person();

在 main 方法中使用 new 创建一个类,用一个数据类型为 person 这个类的一个对象接收

重点:对象在内存中的存在形式

请添加图片描述

分析

  • (1)当还没有创建 cat 这个类并用一个数据类型为 cat 这个类的一个对象接收时,cat 在栈空间中指向空

  • (2)类创建后

    • 1. 在堆空间中分配一段空间,存储类中的成员变量初始值为对应数据类型的默认值,最后把地址返回给 cat,使得cat 指向这个堆空间

    • 2. 在方法区加载类的属性和方法,只会加载一次

    • 3.String 是一个类,当成员变量中有 String 出现时,会把 String 放到方法区中的一个常量池里面,把这个地址返回给堆空间中的 String


类的要素一:属性

概念:成员变量 = 属性 =field(字段)

即成员变量是用来表示属性的

1. 简要提及访问修饰符

2. 使用细节

属性的访问方法:使用类.属性的方式,可以用一个变量接收结果

注意点:如果属性是String类型,即是一个类(引用类型),需要和类一样,需要创建一个对象接收

代码示例

public clas objectexercise{public static void main(String[] args){person person1 = new person();int age = person1.age = 18;double height = person1.height = 1.63;String name = person1.name = "jackson";person1.job = new String[] {"student","programmer"};String[] job = person1.jobSystem.out.println("age: " + age);System.out.println("height: " + height);System.out.println("name: " + name);System.out.print("job: ");for(int i = 0; i < person1.job.length; i++){System.out.print("第" + (i+1) + "份工作是:" + person1.job[i] + " ");}}
}
class person{int age;String name;double height;String[] job; //属性既可以基本数据类型,也可以是引用类型
}//输出结果
age: 18
height: 1.63
name: jackson
job:1份工作是:student 第2份工作是:programmer

深刻理解对象的内存分配机制

过程再回顾

person p = new person()
p.name = "jack"
p.age = 10;

练习一

Person p1 = new Person();
p1.age  = 10;
p1.name = "小明";Person p2 = p1;

P2的属性是否和P1一致?

首先明确一点,类是引用类型,在传值的过程中传的地址,代码中把P1的地址赋给了P2,即P1P2指向同一块堆空间,结果一致

练习二

// Person.java
public class Person {public int age;public String name;
}// Main.java
public class Main {public static void main(String[] args) {Person a = new Person();a.age = 10;a.name = "小明";Person b;b = a;System.out.println(b.name);  // 小明b.age = 200;b = null;System.out.println(a.age);  // 200System.out.println(b.age);  // 会抛出 NullPointerException}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何对极狐GitLab 议题进行过滤和排序?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 排序和议题列表排序 (BASIC ALL) 您可以通过多种方式对议题列表进行排序&#xff0c;可用的排序选项可以根据列表的上下文进…

k8s中资源的介绍及标准资源namespaces实践

文章目录 第1章 k8s中的资源(resources)介绍1.1 k8s中资源(resouces)的分类1.2 k8s中资源(resources)的级别1.3 k8s中资源(resources)的API规范1.4 k8s中资源(resources)的manifests 第2章 k8s中的标准资源之namespaces的实践2.1 基本介绍2.2 编写相关ns资源对象的manifests2.3…

优化uniappx页面性能,处理页面滑动卡顿问题

问题&#xff1a;在页面遇到滑动特别卡的情况就是在页面使用了动态样式或者动态类&#xff0c;做切换的时候页面重新渲染导致页面滑动卡顿 解决&#xff1a;把动态样式和动态类做的样式切换改为通过获取元素修改样式属性值 循环修改样式示例 bannerList.forEach((_, index)…

DeepSeek赋能Nuclei:打造网络安全检测的“超级助手”

引言 各位少侠&#xff0c;周末快乐&#xff0c;幸会幸会&#xff01; 今天唠一个超酷的技术组合——用AI大模型给Nuclei开挂&#xff0c;提升漏洞检测能力&#xff01; 想象一下&#xff0c;当出现新漏洞时&#xff0c;少侠们经常需要根据Nuclei模板&#xff0c;手动扒漏洞文章…

leetcode - 字符串

字符串 466. 统计重复个数 题目 定义 str [s, n] 表示 str 由 n 个字符串 s 连接构成。 例如&#xff0c;str ["abc", 3] "abcabcabc" 。 如果可以从 s2( )中删除某些字符使其变为 s1&#xff0c;则称字符串 s1( )可以从字符串 s2 获得。 例如&#xf…

Java求职者面试:从Spring Boot到微服务的技术深度探索

场景&#xff1a;互联网大厂Java求职者面试 角色介绍&#xff1a; 面试官&#xff1a;技术精湛&#xff0c;负责把控面试质量。谢飞机&#xff1a;搞笑的程序员&#xff0c;偶尔能答对问题。 第一轮&#xff1a;基础知识 面试官&#xff1a;谢飞机&#xff0c;你能简要介绍…

榕壹云国际版短剧系统:基于Spring Boot+MySQL+UniApp的全球短剧创作平台

一、项目背景与简介 在短视频行业高速发展的今天&#xff0c;短剧内容已成为全球用户娱乐消费的新宠。为满足市场对高质量、多样化短剧的需求&#xff0c;我们基于Spring Boot MySQL UniApp技术栈开发了榕壹云国际版短剧系统&#xff0c;这是一款面向全球市场的短剧创作与分…

资料分享!瑞芯微RK3506(3核ARM+Cortex-A7 + ARM Cortex-M0)工业评估板硬件资料

前 言 本文主要介绍TL3506-EVM评估板硬件接口资源以及设计注意事项等内容。 RK3506J/RK3506B处理器的IO电平标准一般为1.8V、3.3V,上拉电源一般不超过3.3V或1.8V,当外接信号电平与IO电平不匹配时,中间需增加电平转换芯片或信号隔离芯片。按键或接口需考虑ESD设计,ESD器…

C#通过NTP服务器获取NTP时间

C#通过NTP服务器获取NTP时间 注意事项&#xff1a; 如果NTP服务器地址是域名&#xff0c;如阿里云的NTP服务器地址。需要DNS解析。NTP使用UDP通讯&#xff0c;默认端口是123NTP经过很多年的发展&#xff0c;有4个版本号&#xff0c;目前常用的3和4。NTP区分客户端和服务端&am…

使用cmd来创建数据库和数据库表-简洁步骤

创建数据库和表&#xff1a; 1. 按WinR打开“运行”&#xff0c;输入cmd&#xff0c;回车 2. 登录数据库&#xff1a;mysql -u root -p 然后输入密码 3. 创建数据库create database myblog; myblog为数据库名(自定义你的数据库名) &#xff01;注意分号不要漏了&#xff01; …

java工具类

LocalDateTime LocalDateTime可以获取当前时间&#xff1a; LocalDateTime now LocalDateTime.now(); 同时他也可以获取指定时间&#xff1a; LocalDateTime dateTime LocalDateTime.of(2023, 5, 15, 10, 30) 若我们时间值超出了我们的实际情况值&#xff0c;我们将会出现…

02_java的运行机制以及JDKJREJVM基本介绍

1、运行机制 2、JDK&JRE&JVM JDK 基本介绍 &#xff08;1&#xff09; JDK 的全称(Java Development Kit Java开发工具包) JDK JRE java的开发工具 [ java, javac, javadoc, javap等 ] &#xff08;2&#xff09;JDK是提供给Java开发人员使用的&#xff0c;其…

【文心快码】确实有点东西!

这里写自定义目录标题 背景 Electron 开发 Markdown 编辑器全记录提问1&#xff1a;提问2&#xff1a;提问3&#xff1a;提问4&#xff1a;完整项目结构总结 背景 前两天百度在2025 百度AI开发者大会"如何驾驭Coding Agent分会场"上发布了文心快码&#xff0c;注册试…

AI心理健康服务平台项目面试实战

AI心理健康服务平台项目面试实战 第一轮提问&#xff1a; 面试官&#xff1a; 请简要介绍一下AI心理健康服务平台的核心技术架构。在AI领域&#xff0c;心理健康服务的机遇主要体现在哪些方面&#xff1f;如何利用NLP技术提升用户与AI的心理健康对话体验&#xff1f; 马架构…

Win10安装 P104-100 驱动

安装完之后总结一下, 之前做了不少功课, 在网上搜了很多教程, 视频的文字的, 但是很多已经比较陈旧了. 最后发现的这个 GitHub 项目 NVIDIA-patcher 是最有用的, 因为这是现在这些魔改驱动的来源. NVIDIA-patcher 仓库地址: https://github.com/dartraiden/NVIDIA-patcher 安…

把一个 PyTorch 的图像张量转换成 NumPy 格式,并按照正确的维度顺序显示出来

示例代码&#xff1a; plt.imshow(np.transpose(tensor_denorm.numpy(), (1, 2, 0)))它的作用是&#xff1a;把一个 PyTorch 的图像张量转换成 NumPy 格式&#xff0c;并按照正确的维度顺序显示出来。 &#x1f680; 一步步解释&#xff1a; ✅ tensor_denorm 这是一个形状为…

【速写】conda安装(linux)

序言 昨天叶凯浩空降&#xff08;全马241&#xff09;&#xff0c;降维打击&#xff0c;10分24秒断层夺冠。 夏潇阳10分53秒绝杀小崔10分54秒第2&#xff0c;小崔第3&#xff0c;均配都在3’30"以内&#xff0c;即便我是去年巅峰期也很难跑出这种水平。我就知道他去年大…

算法题(135):唯一的雪花

审题&#xff1a; 本题需要我们对于每一组数据都找出最大的包裹大小 思路&#xff1a; 本题解析题目意思后我们可以把雪花的编号当成数组中元素的值&#xff0c;把包裹看成一个区间。 本质上就是让我们找出一组数据中&#xff0c;所有子段中最长的子段。 方法一&#xff1a;暴力…

算法习题-力扣446周赛题解

算法可以调度思维&#xff0c;让程序员的思维发散&#xff0c;找到更好的解决方案。 第一题&#xff1a;执行指令后的得分 题目&#xff1a; 给你两个数组&#xff1a;instructions 和 values&#xff0c;数组的长度均为 n。你需要根据以下规则模拟一个过程&#xff1a; 从下标…

Ubuntu下MySQL的安装

Ubuntu下MySQL的安装 1. 查看当前操作系统版本2. 添加MySQL APT源2.1 访问下载页面&#xff0c;并下载发布包2.2 执行安装指令2.3 安装MySQL 3. 查看MySQL状态4. 设置开机自启动 1. 查看当前操作系统版本 通过命令lsb_release -a查看&#xff1a; 2. 添加MySQL APT源 2.1 访问下…