Java 学习和实践笔记(16):类的理解以及初始值

类,英文名叫class。基本上对应的就是语言里的名词。

比如,房子、人、树、花、汽车等等,这些名词,这些可以定义成类。

以房子为例,作为一个房子,它一定有相应的属性,比如房顶、墙、门、窗等等,把这些属性当作房子这个表格(如前所学,类就对应表格)的列。

这样,就使用这个房子表格,就可以描述很多种具有不同数量的门、窗等的房子了。

具体到某一行,就对应一个具体的描述好的房子,这就是房子这个类里的一个对象,又叫实例,即object或者instance。

所以,一个类,就是一个描述一些共有特征的模板。比如这个房子表格一样。它就是一个模板。模板内的属性的具体内容可以变(比如在窗的这一列,不同行,可以有不同的数量的窗),但是这个模板一旦定义好就不会变。

总结:
类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共
同的属性、方法。

 

public class Student {int id;int age;String name;public void study(){System.out.println("正在学习");}public void kickball(){System.out.println("踢球中");}public static void main(String[] args){Student s1 = new Student();System.out.println(s1.id);System.out.println(s1.age);System.out.println(s1.name);s1.id=1;s1.name="jason";System.out.println(s1.id);System.out.println(s1.name);s1.study();s1.kickball();}}

运行结果:
0
0
null
1
jason
正在学习
踢球中

上面就是先创建一个学生类,然后创建一个类的对象学生1(S1)的过程。这其中特别值得注意是语句:  Student s1 = new Student();

创建一个学生类,相当于创建了一个学生表,这个表只有表头,也就是只有各列的列名(属性),表本身是空的,没有行,也就说是还没有对象。

用这个new语句创造了一个行,也就是创造了一个对象,这很容易理解。

上面这段代码在内存中具体是怎样实现的,如下图所示:

第一步,先在方法区,把整个类信息,也就是这个Student类的全语信息,按一定规则摆放好。

第二步,在stack,先入main,从这里开始执行。执行的第一步,先传递args的参数,这里是空的。然后先用new,在堆区创造一个空的类对象,并将其起始地址指向s1。

第三步,继续往下执行即可。

第四步,如果要创建新的对象如s2、s3,依此类推即可。

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

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

相关文章

企业品牌软文发布在媒体上,有啥用呢

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 通常企业都会建立自己的媒体矩阵,在公众号,视频号,抖音,网易号,搜狐号等企业品牌矩阵中发布软文,公司动态&#xf…

【MySQL】如何理解索引(高频面试点)

一、前言 首先这个博客会介绍一些关于MySQL中索引的基本内容以及一些基本的语法,当然里面也会有些常见的面试题的解答。 二、关于索引 1、概念 索引是一种能够帮助MySQL高效的去磁盘检索数据的一种数据结构。在MySQL的Innodb存储引擎中呢,采用的是B树的…

Mendix 实现WMS物料移动场景

前言 见客多了,总有那么一些客户让你心生敬佩! 他们总能抓住事物本质,即使是沟通低代码时,提的问题也直击内核。 去年初有客户问“如何用3-4张表实现一个问卷应用,问题数量不确定且类型多样”。 这个深刻问题体现出…

大数据揭秘:Hadoop短视频流量分析实战

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

【高频SQL基础版本】1204.最后一个能进入巴士的人

题目: 自己去搜一下吧。 解题思路: 这里最重要的知识点是累加求和,而不是直接汇总求和。 如果直接汇总求和体重就是SUM(weight),而根据turn的次序,累加求和,则需要SUM(weight)over (order by turn),这样…

华为算法题 go语言或者ptython

1 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返…

Hudi程序导致集群RPC偏高问题分析

1、背景 Hudi程序中upsert操作频繁,过多的删除和回滚操作,导致集群RPC持续偏高 2、描述 hudi采用的是mvcc设计,提供了清理工具cleaner来把旧版本的文件分片删除,默认开启了清理功能,可以防止文件系统的存储空间和文件数量的无限…

ITSM专家会诊功能上线,群聊解难题,协同解决就这么简单!

在最新推出的V1.28.0版本中,燕千云带来了一系列激动人心的新功能及优化,旨在全面提升您的工作效率和体验:全新的多会话模式,大幅强化的Prompt模板,便捷的群聊功能,智能工单旅程和审批单动态记录的深度优化&…

RAW 编程接口 TCP 简介

一、LWIP 中 中 RAW API 编程接口中与 TCP 相关的函数 二、LWIP TCP RAW API 函数 三、LwIP_Periodic_Handle函数 LwIP_Periodic_Handle 函数是一个必须被无限循环调用的 LwIP支持函数,一般在 main函数的无限循环中调用,主要功能是为 LwIP各个模块提供…

【思扬赠书 | 第3期】由面试题“Redis是否为单线程”引发的思考

⛳️ 写在前面参与规则!!! ✅参与方式:关注博主、点赞、收藏、评论,任意评论(每人最多评论三次) ⛳️本次送书1~4本【取决于阅读量,阅读量越多,送的越多】 很多人都遇到…

java.lang.IllegalStateException: Promise already completed.

spark submit 提交作业的时候提示Promise already complete 完整日志如下 File "/data5/hadoop/yarn/local/usercache/processuser/appcache/application_1706192609294_136972/container_e41_1706192609294_136972_02_000001/py4j-0.10.6-src.zip/py4j/protocol.py"…

SpringBoot和SpringCloud的区别,使用微服务的好处和缺点

SpringBoot是一个用于快速开发单个Spring应用程序的框架,通过提供默认配置和约定大于配置的方式,快速搭建基于Spring的应用。让程序员更专注于业务逻辑的编写,不需要过多关注配置细节。可以看成是一种快速搭建房子的工具包,不用从…