【Java学习】类和对象

目录

一、选择取块解

二、类变量

三、似复刻变量

四、类变量的指向对象

五、变量的解引用访问

1.new 类变量(参)

2.this(参)

3.类变量/似复刻变量.

六、代码块

七、复制变量的赋值顺序

八、访问限定符

1.private

2.default

九、导类


一、选择取块解

解引用都有可以取块选择解的性质,即我们有了指向该对象的地址,该对象的所有都可以解引用此地址所取到,但我们通常不需要对象的所有,更多时候一次只需要解到对象的一部分,即一次解引用里对所能解引用到的所有内容进行选择取块地解要解的部分内容

二、类变量

class(类)是一种类型,用class(类)可以创建类变量类变量里存储变量与方法,创建类变量时都有开辟空间,类变量里的存储的成员变量都存储在堆区,类变量里存储的成员方法都存储在方法区类变量本身也是个变量存有空间,它里面存储这些成员变量与成员方法,不过类变量开辟的存储空间有部分在堆上(变量),有部分在方法区上(方法),是在两个不同区域开辟空间创建来的变量,类变量创建后相应地它也有哈希值,指向创建的这个类变量,能访问这个类变量的所有

三、似复刻变量

类变量创建好后,类变量也可作为一种类型,以此类变量为类型创建似复刻变量,似复刻变量按照类变量里的非静态变量模具变量创建复制变量、在堆上开辟空间存储有类变量里的静态变量、类变量里的所有方法的访问路径信息,用类变量创建的似复刻变量在堆区,复刻变量里存储复制变量与访问类变量路径信息两块内容,创建好似复刻变量后,相应地有指向此似复刻变量的哈希值,能访问与管理到此似复刻变量的所有内容似复刻变量的存哈希值引用类型与类变量存哈希值引用类型是共用的,因为它们最终的指向对象类型都是相同的

四、类变量的指向对象

类变量里面存储有静态变量非静态变量静态方法非静态方法

  • 静态变量与非静态变量都是存储在类变量的堆区部分,静态变量用来类变量里的存值的,而非静态变量对于类变量来说不存值,它作为复刻模具变量用来给似复刻变量照着复制出变量的
  • 静态方法与非静态方法都存储在类变量里的方法区那块部分,都是类变量里面创建好的方法,非静态方法的形参有专门接似复刻变量哈希值的形参,这也就决定了非静态方法必须得有似复刻变量传它哈希值下才可调用(此形参this往往隐藏起来的),而静态变量就普通没有这一形参

五、变量的解引用访问

类变量、似复刻变量都是引用变量,里面存指向对应空间的哈希值,通过哈希值来访问、管理的

类在文件里写好的,文件里写好后在允许访问的范围内程序一加载该类,该类变量就已经创建好了,类变量里就装有了此类变量的哈希值,在能访问到的范围内,类变量.或类变量()即可解引用此哈希值使用访问类变量


1.new 类变量(参)

—— 创建似复刻变量时

解引用类变量里的哈希值得到类变量内容进行创建似复刻变量

创建好似复刻变量后(此时里面的复制变量都设置好初始值为0)就有了指向其的哈希值(似复刻变量里面不仅有复制变量,还有路径信息),再将似复刻变量的哈希值与参数传到类变量里的构造方法中进行初始构造此似复刻变量,最后返回指向该创建好的似复刻变量的哈希值同用类变量的引用类型来接,此时此类变量创建的变量就是似复刻变量,里面装的是指向似复刻变量空间的哈希值


2.this(参)

—— 似复刻变量去构造方法时

一个似复刻变量刚创建好后即会被自动去调用执行它的构造方法,构造方法对于一个似复刻变量来说只有在这一过程中可被执行,构造方法这一过程结束之后,之后都不可再调用构造方法,在构造方法里执行时,构造方法有隐藏的形参this,是来接此似复刻变量哈希值的,所以在构造方法里,可用this.解似复刻变量哈希值得里面的复制变量this(参)解引用似复刻变量里的哈希值,取块选择解其路径信息中的指向类变量里方法区非静态方法中的构造方法实现再次调用构造方法


3.类变量/似复刻变量.

—— 访问使用其指向内容时

解引用类变量或似复刻变量里的哈希值得到引用对象指向的对应对象的内容


六、代码块

  • 静态代码块是类变量创建时执行给静态变量初始化
  • 实例代码块给似复刻变量自动初始化里面复制变量的,静态代码块先,实例代码块后

七、复制变量的赋值顺序

似复刻变量在创建时首先给复制变量设置好初始值为0,接着是就地初始化的赋值,实例代码块的赋值,最后是构造方法的赋值

八、访问限定符

1.private

被private修饰的限制在只能在同一个类中访问,在类里能访问,在类中就要封装好对外能间接访问到的接口

2.default

默认权限是default,同包的范围都可访问


九、导类

文件里写好的类都是创好了类变量的,把类文件导入进来就有了类变量(在可访问到范围),然后类变量一加载就有了一系列的功能,包括可直接使用类变量里的静态方法(类变量.),也可以用类变量创建似复刻变量就可以使用到里面的类变量里的全部方法包括非静态的方法(用类变量new完的似复刻变量.)

  • import java.util.* —— 导入包,会按实际使用情况自动导入包中的类

  • import java.util.Arrays; —— 导入类,导入要使用的Arrays这个类这个类变量

也可以手动解引用来一次解到一个类:

java.util.Date date = new java.util.Date();

导入类时可以以静态导入类,即只导入一个类变量里面静态的内容,导入后静态的内容直接进文件,不需要去解类变量的哈希值去得里面类变量的静态方法了,可以直接使用类里面导进来的的静态方法静态导只能导类,一次导入一个类变量里面的静态内容

java.lang这个包的这层包下的所有类都已经自动导入有了 

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

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

相关文章

使用css实现镂空效果

前言: 最近在公司完成小程序的新手引导中遇到了要将蒙层挖空,漏出后面内容的功能,找了各种资料之后,发现了一种就使用几行css代码就实现这个效果的方式,在这里分享给各位小伙伴们。 功能描述:实现下图的镂…

15.1 Process(进程)类

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 通常开发时想要获得进程是比较困难的事,必须要调用CreateToolhelpSnapshot、ProcessFirst、ProcessNext等API或者诸如 Zw…

【全栈开发】----Mysql基本配置与使用

本篇是在已下载Mysql的情况下进行的,若还未下载或未创建Mysql服务,请转到这篇: 2024 年 MySQL 8.0.40 安装配置、Workbench汉化教程最简易(保姆级)_mysql8.0.40下载安装教程-CSDN博客 本文对于mysql的操作均使用控制台sql原生代码…

数据恢复-01-机械硬盘的物理与逻辑结构

磁盘存储原理 磁盘存储数据的原理: 磁盘存储数据的原理是利用磁性材料在磁场作用下的磁化性质,通过在磁盘表面上划分成许多小区域,根据不同的磁化方向来表示0和1的二进制数据,通过读写磁头在磁盘上的移动,可以实现数据…

神经网络新手入门(3)光明顶复出(2006-2012)

让我们继续这场科技江湖的传奇,见证神经网络如何从寒冬中涅槃重生: 第五章:光明顶复出(2006-2012) 2006年,江湖人称"深度学习教主"的辛顿(Geoffrey Hinton)闭关修炼二十…

【C++】基础入门(详解)

🌟 Hello,我是egoist2023! 🌍 种一棵树最好是十年前,其次是现在! 目录 输入&输出 缺省参数(默认参数) 函数重载 引用 概念及定义 特性及使用 const引用 与指针的关系 内联inline和nullptr in…

【2025最新版】软件测试面试题总结(150道题含答案解析)

接口测试面试题 1:你平常做接口测试的过程中发现过哪些 bug? 2:平常你是怎么测试接口的? 3:平常用什么工具测接口? 4: webService 接口是如何测试的? 5:没有接口文档,如何做接口测试? 6&…

使用EVE-NE-锐捷实现NAT+ACL服务限制

一、项目拓扑 二、项目实现 1.NET配置 点击左侧的NetWorks,设置与图相同的配置,实现实验环境桥接到物理网络 2.GW配置 进入特权模式 enable进入全局模式 configure terminal 更改名称为GW hostname GW进入g0/0接口 interface g0/0将g0/0接口IP地址配置为192.168.…

nginx 实战配置

一、配置一个默认80端口的,静态页面,路径是path1。 http://192.168.0.111/path1 , /path1路径指向linux的/data/index1.html vi /data/nginx-1.24.0/conf/nginx.conf 文件添加以下配置 location /path1 { alias /data/…

kubekey一键部署k8s高可用与kubesphere

kubekey一键安装k8s与kubesphere还是蛮方便的,kubesphere官网上面也提到了高可用安装的一些事宜,但是没有涉及到kubesphere资深的redis的系统的部署问题,本文简单给出对应配置,其实这个配置在kubephere的cluster-configuration.ya…

怎么使用服务器运行pySCENIC

前言 我们注意到在其他的一些论坛,有一些用户反馈,在服务器上面运行pyscenic不太顺畅。本文我们整理了在服务器上运行pyscenic的三个方法供大家参考,分别是conda安装pyscenic运行、arboreto_with_multiprocessing运行、容器化运行。总的来说&…

QEMU 搭建arm linux开发环境

Qemu 作为一款强大的开源虚拟化软件,为我们提供了一个便捷且经济实惠的方式来模拟各种硬件环境,从而在上面安装和学习 Linux 系统。本文将详细介绍如何使用 Qemu 搭建 Linux 学习环境, 环境准备 操作系统:建议使用 Ubuntu 20.04…

坐井说天阔---DeepSeek-R1

前言 DeepSeek-R1这么火,虽然网上很多介绍和解读,但听人家的总不如自己去看看原论文。于是花了大概一周的时间,下班后有进入了研究生的状态---读论文。 DeepSeek这次的目标是探索在没有任何监督数据的情况下训练具有推理能力的大模型&#…

EasyExcel 复杂填充

EasyExcel ​Excel表格中用{}或者{.} 来表示包裹要填充的变量,如果单元格文本中本来就有{、}左右大括号,需要在括号前面使用斜杠转义\{ 、\}。 ​代码中被填充数据的实体对象的成员变量名或被填充map集合的key需要和Excel中被{}包裹的变量名称一致。 …

华为防火墙pppoe拨号接入互联网配置案例

目录 1.pppoe拨号背景2.网络拓扑3.网络需求4.网络配置4.1 网络基础配置4.2 pppoe配置4.2.1 pppoe服务端配置(现网环境可忽略)4.2.2 pppoe客户端配置4.2.3 结果验证 5.小结 1.pppoe拨号背景 PPPoE(Point-to-Point Protocol Over Ethernet)拨号产生的背景…

认识vue-admin

认识vue-admin **核心交付:** 为什么要基于现成架子二次开发 什么是二次开发:基于已有的代码(项目工程,脚手架)开进行新功能的开发 所以看懂已有的框架中的既有代码,变得很重要了 1. 背景知识 后台管理系统是一种最…

【16】思科AireOS:创建使用 LWA 认证的 WLAN

1. 概述 LWA(Local Web Authentication)是一种基于 Web 认证的方式,允许无线客户端在连接 WLAN 后,使用 Web 认证页面进行身份验证。该方法适用于访客网络或需要身份认证的场景。 本指南详细介绍如何在 Cisco AireOS 无线控制器(WLC)上配置 LWA 认证的 WLAN,并确保认证…

电解电容的参数指标

容量 这个值通常是室温25℃,在一定频率和幅度的交流信号下测得的容量。容量会随着温度、直流电压、交流电压值的变化而改变。 额定电压 施加在电容上的最大直流电压,通常要求降额使用。 例如额定电压是4V,降额到70%使用,最高施…

【C++】IO流

目录 一、C语言的输入与输出二、流是什么三、CIO流3.1 C标准IO流3.2 C文件IO流3.2.1 二进制读写3.2.2 文本读写 四、stringstream的简单介绍结尾 一、C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据…

软件开发 | GitHub企业版常见问题解读

什么是GitHub企业版? GitHub企业版是一个企业级软件开发平台,专为现代化开发的复杂工作流程而设计。 作为可扩展的平台解决方案,GitHub企业版使组织能够无缝集成其他工具和功能,并根据特定需求定制开发环境,提高整体…