当前位置: 首页 > news >正文

Java从入门到精通-类和对象(二)

0. 类和对象

![在这里插入图片描述](https://img-blog.csdnimg.cn/9ab78dc17d214f0f831be8f7c9defd6e.png

3. 类的构造方法

在这里插入图片描述
构造方法是一种特殊的方法,用于创建和初始化对象。构造方法的名称必须与类名相同,它没有返回值,并且在创建对象时自动调用。构造方法的主要作用是确保对象在创建时具有合适的初始状态。

以下是构造方法的基本概念和使用方式:

3.1 构造方法的特点:

  1. 构造方法的名称必须与类名相同。
  2. 构造方法没有返回值,甚至不需要使用void关键字。
  3. 构造方法在对象创建时自动调用,不能手动调用。
  4. 类可以有多个构造方法,根据不同的参数列表进行重载。
  5. 如果没有为类定义任何构造方法,Java会自动生成一个默认无参构造方法。

3.2 构造方法的作用:

构造方法的主要作用是进行对象的初始化,通常用于执行以下操作:

  • 初始化对象的属性。
  • 分配内存空间。
  • 执行必要的设置和准备工作。

3.3 构造方法示例:

public class Student {private String name;private int age;// 无参构造方法public Student() {// 默认构造方法,不执行特定初始化操作}// 带参数的构造方法public Student(String name, int age) {this.name = name;this.age = age;}// 其他构造方法...
}

定义了一个Student类,它有两个构造方法:一个无参构造方法和一个带有参数的构造方法。带参数的构造方法用于初始化学生的姓名和年龄属性。

3.4 构造方法的使用:

public class Main {public static void main(String[] args) {// 使用无参构造方法创建对象Student student1 = new Student();// 使用带参数的构造方法创建对象Student student2 = new Student("Alice", 20);}
}

我们使用构造方法创建了两个Student对象,一个使用无参构造方法,另一个使用带参数的构造方法来初始化属性。

4. 静态变量和静态方法

在这里插入图片描述
静态变量和静态方法是与类关联而不是与对象关联的。它们属于类而不是对象,因此可以通过类名直接访问,而无需创建类的实例。让我们深入了解静态变量和静态方法的概念和用法。

4.1 静态变量(静态字段)

静态变量,也称为静态字段或类变量,是在类级别上声明的变量,它们的值对于所有类的实例都是共享的。静态变量通常用static关键字修饰。以下是静态变量的特点和用法:

  • 静态变量属于类,而不属于类的任何实例。
  • 所有类的实例共享相同的静态变量。
  • 静态变量在类被加载时初始化,只会初始化一次。
  • 静态变量可以通过类名直接访问,无需创建对象。

示例:

public class Counter {// 静态变量public static int count = 0;// 静态方法public static void increment() {count++;}
}

示例中,Counter类具有一个静态变量count,用于跟踪计数,并且有一个静态方法increment(),用于增加计数。

4.2 静态方法

静态方法是在类级别上声明的方法,它们不需要依赖于类的实例而可以直接调用。静态方法通常用static关键字修饰。以下是静态方法的特点和用法:

  • 静态方法属于类,而不属于类的任何实例。
  • 静态方法可以直接通过类名调用,无需创建对象。
  • 静态方法不能访问非静态变量和非静态方法,因为它们不依赖于对象的状态。

示例:

public class MathUtils {// 静态方法:计算两个整数的和public static int add(int a, int b) {return a + b;}
}

示例中,MathUtils类具有一个静态方法add(),用于计算两个整数的和。这个方法可以通过类名直接调用,如MathUtils.add(5, 3)

4.3 静态变量和静态方法的用途

静态变量和静态方法通常用于以下情况:

  1. 共享数据:静态变量可用于存储类级别的共享数据,例如计数器、配置信息等。

  2. 工具方法:静态方法通常用于实现与类相关的工具方法,无需创建对象即可使用。

  3. 工厂方法:静态方法可用于创建类的实例,例如单例模式中的静态工厂方法。

  4. 常量:静态变量可以用于定义常量,例如Math.PI表示圆周率。

  5. 静态类:有时候,可以创建静态类,其中所有方法和变量都是静态的,用于实现工具类或全局配置类。

5. 类的主方法

在这里插入图片描述
在Java中,类的主方法是一个特殊的方法,它是Java程序的入口点(entry point)。每个Java应用程序必须包含一个主方法,它具有以下特点:

  1. 主方法的声明必须如下所示:

    public static void main(String[] args)
    
  2. 主方法的名称必须是main

  3. 主方法的参数列表必须包括一个String数组参数,通常命名为args,用于接收命令行参数。

  4. 主方法的返回类型是void,表示它不返回任何值。

主方法的主要作用是作为程序的入口点,当程序启动时,Java虚拟机(JVM)会调用主方法来执行程序的逻辑。在主方法内部,您可以编写程序的主要逻辑,处理输入、执行计算、调用其他方法等。

以下是一个典型的Java程序包含的主方法:

public class MyProgram {public static void main(String[] args) {// 主方法的逻辑代码System.out.println("Hello, World!");}
}

示例中,MyProgram类包含了一个名为main的主方法,它简单地打印出"Hello, World!"。

主方法是Java程序的入口点,它允许您执行程序并与用户或其他系统进行交互。在实际应用中,主方法通常会包含更复杂的逻辑,从而实现特定的功能或任务。当您运行Java程序时,JVM会查找并执行主方法内的代码。

6. 对象

在这里插入图片描述
在Java中,对象是面向对象编程的核心概念之一。对象表示现实世界中的实体或概念,并具有属性(成员变量)和方法(成员方法)来描述其特征和行为。让我们深入了解对象的概念和用法。

6.1 对象的基本概念

  • 对象是类的实例:类是对象的模板,而对象是根据模板创建的实际实例。对象是类的具体实体。

  • 对象具有状态和行为:对象的状态由成员变量(属性)表示,对象的行为由成员方法表示。状态描述了对象的特征,行为描述了对象可以执行的操作。

  • 对象是引用类型:在Java中,变量可以保存对象的引用而不是对象本身。引用是指向对象内存地址的指针。

在Java中,对象的创建通常遵循以下步骤:

  1. 定义类:首先,您需要定义一个类,该类描述了对象的属性和方法。

  2. 实例化对象:使用new关键字创建类的实例(对象),并分配内存空间。例如:

    ClassName objectName = new ClassName();
    
  3. 访问对象:通过对象引用,可以访问对象的属性和方法。例如:

    objectName.propertyName = value; // 设置属性值
    objectName.methodName();        // 调用方法
    

6.3 创建和使用对象

public class Student {// 成员变量private String name;private int age;// 构造方法public Student(String name, int age) {this.name = name;this.age = age;}// 成员方法public void displayInfo() {System.out.println("姓名: " + name);System.out.println("年龄: " + age);}
}public class Main {public static void main(String[] args) {// 创建Student对象Student student1 = new Student("Alice", 20);Student student2 = new Student("Bob", 22);// 访问对象的成员方法student1.displayInfo();student2.displayInfo();}
}

在示例中,定义了一个Student类,该类有两个成员变量nameage,以及一个成员方法displayInfo()用于显示学生信息。然后,在Main类的main方法中,我们创建了两个Student对象,并使用对象的引用调用了displayInfo()方法来显示学生信息。

6.4 对象的引用和生命周期

对象的引用是指向对象内存的指针。对象的引用可以被分配给变量,传递给方法,存储在数据结构中等等。对象的生命周期从创建(实例化)开始,到不再被引用时结束。一旦对象不再被引用,它将变为不可达,最终由垃圾收集器回收内存。

相关文章:

Java从入门到精通-类和对象(二)

0. 类和对象 3. 类的构造方法 构造方法是一种特殊的方法,用于创建和初始化对象。构造方法的名称必须与类名相同,它没有返回值,并且在创建对象时自动调用。构造方法的主要作用是确保对象在创建时具有合适的初始状态。 以下是构造方法的基本概…...

Python解析MDX词典数据并保存到Excel

原始数据和处理结果: https://gitcode.net/as604049322/blog_data/-/tree/master/mdx 下载help.mdx词典后,我们无法直接查看,我们可以使用readmdict库来完成对mdx文件的读取。 安装库: pip install readmdict对于Windows平台还…...

线性代数的本质(四)

文章目录 行列式二阶行列式 n n n 阶行列式行列式的性质克拉默法则行列式的几何理解 行列式 二阶行列式 行列式引自对线性方程组的求解。考虑两个方程的二元线性方程组 { a 11 x 1 a 12 x 2 b 1 a 21 x 1 a 22 x 2 b 2 \begin{cases} a_{11}x_1a_{12}x_2b_1 \\ a_{21}x_…...

FreeMarker详细介绍

FreeMarker详细介绍 FreeMarker FreeMarker概述 FreeMarker概念 FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 是一个Java类库…...

房地产小程序 | 小程序赋能,房地产业务数字化升级

随着科技的不断发展,房地产行业正逐渐向数字化转型。在这个过程中,房地产小程序成为了一种重要的工具,可以帮助房地产企业提供更好的购房体验、增加销售额,并实现管理的便捷化。 优点 便捷购房体验:房地产小程序为用户…...

Databend 开源周报第 110 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 使用 BendSQL 管…...

开源大模型ChatGLM2-6B 1. 租一台GPU服务器测试下

0. 环境 租用了1台GPU服务器,系统 ubuntu20,GeForce RTX 3090 24G。过程略。本人测试了ai-galaxy的,今天发现网友也有推荐autodl的。 (GPU服务器已经关闭,因此这些信息已经失效) SSH地址:* 端…...

SQL10 用where过滤空值练习

描述 题目:现在运营想要对用户的年龄分布开展分析,在分析时想要剔除没有获取到年龄的用户,请你取出所有年龄值不为空的用户的设备ID,性别,年龄,学校的信息。 示例:user_profile iddevice_idge…...

JVM--Hotspot Architecture 详解

一、Java Virtual Machine (JVM)概述 Java Virtual Machine 虚拟机 (JVM) 是一种抽象的计算机。JVM本身也是一个程序,但是对于编写在其中执行的程序来说,它看起来像一台机器。对于特定的操作系统&#xff…...

ThreadLocal功能实现

模拟ThreadLocal功能实现 当前线程任意方法内操作连接对象 一个栈对应一个线程 , 一个方法调用另一个方法都是在一个线程内 , 只有执行了线程的start方法才会创建一个线程 定义一个Map集合 , key是当前线程(Thread.currentThread) , value是要绑定的数据(Connection对象) 以…...

Linux编辑器-vim使用

文章目录 前言一、vim编辑器1、vim的基本概念2、vim的基本操作2.1 命令模式切换至插入模式2.2 插入模式切换至命令模式2.3 命令模式切换至底行模式 3、vim命令模式命令集3.1 移动光标3.2 删除文字3.3 复制与粘贴3.4 替换3.5 撤销上一次操作3.6 更改3.7 跳至指定的行 4、vim末行…...

自助式数据分析平台:JVS智能BI功能介绍(二)数据集管理

数据集是JVS-智能BI中承载数据、使用数据、管理数据的基础,同样也是构建数据分析的基础。可以通俗地将其理解为数据库中的普通的表,他来源于智能的ETL数据加工工具,可以将数据集进行分析图表、统计报表、数字大屏、数据服务等制作。 在整体的…...

《5G技术引领教育信息化新革命》

5G技术引领教育信息化新革命 随着5G技术的快速发展,教育领域也迎来了全新的信息化时代。5G技术为教育行业提供了更高速、更稳定、更智能的网络连接,使得教育信息化不再局限于传统的课堂教学,而是延伸到了线上、线下的全时空教育。本文将详细介…...

cmake学习过程记录

目录 基础命令学习配置opencvcmake (Windows版本) 基础命令学习 //设置最低版本号 cmake_minimum_required(VERSION 3.5)//设置项目名称 project (hello_headers)//递归遍历文件夹src中的cpp文件放到变量SOURCES中 file(GLOB_RECURSE SOURCES src/*.cpp)//设置目标exe名称…...

Vue3、Vite使用 html2canvas 把Html生成canvas转成图片并保存,以及填坑记录

这两天接到新需求就是生成海报分享,生成的格式虽然是一样的但是自己一点点画显然是不符合我摸鱼人的性格,就找到了html2canvas插件,开始动工。 安装 npm install html2canvas --save文档 options 的参数都在里面按照自己需求使用 https://a…...

centos yum源配置(CentOS7 原生 yum 源修改为阿里 yum 源)

文章目录 centos yum源配置centos搭建内网yum源内网centos的yum软件源配置CentOS7 原生 yum 源修改为阿里 yum 源 centos yum源配置 centos搭建内网yum源 您好,在CentOS系统上搭建本地内网YUM仓库的方法如下: 安装httpd和createrepo工具 yum install httpd createrepo -y创…...

linux————ansible

一、认识自动化运维 自动化运维: 将日常IT运维中大量的重复性工作,小到简单的日常检查、配置变更和软件安装,大到整个变更流程的组织调度,由过去的手工执行转为自动化操作,从而减少乃至消除运维中的延迟,实现“零延时”…...

初识Java 8-1 接口和抽象类

目录 抽象类和抽象方法 接口定义 默认方法 多重继承 接口中的静态方法 作为接口的Instrument 本笔记参考自: 《On Java 中文版》 接口和抽象类提供了一种更加结构化的方式分离接口和实现。 抽象类和抽象方法 抽象类,其介于普通类和接口之间。在构…...

微信小程序音频后台播放功能

微信小程序在手机息屏后依旧能播放音频,需要使用 wx.getBackgroundAudioManager() 方法创建后台音乐播放器,并将音乐播放任务交给这个后台播放器。 具体实现步骤如下: 小程序页面中,使用 wx.getBackgroundAudioManager() 方法创…...

NotePad——xml格式化插件xml tools在线安装+离线安装

在使用NotePad时,在某些情形下,需要格式化Xml格式内容,可以使用Xml Tools插件。 一、在线安装 1. 打开Notepad 软件 2. 选择插件,选择“插件管理” 3. 搜索 XML Tools,找到该插件后,勾选该文件&#xff…...

图书管理系统 数据结构先导课暨C语言大作业复习 | JorbanS

问题描述 读取给定的图书文件book.txt中的信息(book.txt中部分图书信息如下图所示),完成一个图书信息管理系统,该系统的各个功能模块要求利用菜单选项进行选择。 系统功能要求 图书浏览 读取book.txt中的文件信息并依次输出所…...

python 爬虫的开发环境配置

1、新建一个python项目 2、在控制台中分别安装下面三个包 pip install requests pip install beautifulsoup4 pip install selenium/ 如果安装时报以下错误: raise ReadTimeoutError(self._pool, None, "Read timed out.") pip._vendor.urllib3.exceptio…...

技术架构图是什么?和业务架构图的区别是什么?

技术架构图是什么? ​技术架构图是一种图形化工具,用于呈现软件、系统或应用程序的技术层面设计和结构。它展示了系统的各种技术组件、模块、服务以及它们之间的关系和交互方式。技术架构图关注系统内部的技术实现细节,以及各个技术组件之…...

数据增强

一、数据增强 当你训练一个机器学习模型时,你实际做工作的是调参,以便将特定的输入(一副图像)映像到输出(标签)。我们优化的目标是使模型的损失最小化, 以正确的方式调节优化参数即可实现这一目…...

【Unity】2D 对话模块的实现

对话模块主要参考 【Unity教程】剧情对话系统 实现。 在这次模块的构建将基于 unity ui 组件 和 C#代码实现一个从excel 文件中按照相应规则读取数据并展示的逻辑。这套代码不仅能实现正常的对话,也实现了对话中可以通过选择不同选项达到不同效果的分支对话功能。 …...

laravel安装初步使用学习 composer安装

一、什么是laravel框架 Laravel框架可以开发各种不同类型的项目,内容管理系统(Content Management System,CMS)是一种比较典型的项目,常见的网站类型(如门户、新闻、博客、文章等)都可以利用CM…...

【VS插件】VS code上的Remote - SSH

【VS插件】VS code上的Remote - SSH 目录 【VS插件】VS code上的Remote - SSH获得Linux服务器或者Linux系统的IP地址下载插件远程登录注意如果Linux虚拟机系统无法连接成功可能是没有开启ssh服务优势 作者:爱写代码的刚子 时间:2023.9.12 前言&#xff1…...

TensorFlow 02(张量)

一、张量 张量Tensor 张量是一个多维数组。与NumPy ndarray对象类似,tf.Tensor对象也具有数据类型和形状。如下图所示: 此外,tf.Tensors可以保留在GPU中。TensorFlow提供了丰富的操作库 (tf.add,tf.matmul,tf.linalg.inv等),它们…...

513. 找树左下角的值

代码链接: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 思路: 万金油层次遍历,保存每一层的第一个元素返回就行了 我的代码: /*** Definition for a binary tree node.* struct TreeNode {* …...

量化:基于支持向量机的择时策略

文章目录 参考机器学习简介策略简介SVM简介整体流程收集数据准备数据建立模型训练模型测试模型调节参数 参考 Python机器学习算法与量化交易 利用机器学习模型,构建量化择时策略 机器学习简介 机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。…...

中国网站建设公司排行/百度数据中心

下面是一个常用的关于 React 的面试问题列表: React 的工作原理 React 会创建一个虚拟 DOM(virtual DOM)。当一个组件中的状态改变时,React 首先会通过 "diffing" 算法来标记虚拟 DOM 中的改变,第二步是调节(reconciliation)&…...

哪里有学习做网站的/网络营销方式都有哪些

2016-12-12 11:57:12使用ajax的开发项目过程中,经常需要将json格式的字符串返回到前端,前端解析成js对象(JSON )。如果直接以json的格式返回则方便很多,有时候通过后台直接写到页面中则会以字符串的方式存在,那么就用到了将字符串…...

广州专门做网站的公司/推广计划书范文

求职 地图 网页 应用 更多 关键词:C/C面试技巧及试题? C/C 试题有难有易,不能因为容易,我们就轻视,更不能因为难,我们就放弃。我们面对高薪就业的态度永远不变,那就是坚持、坚持、再坚持。出现问…...

做网站空间放哪些文件夹/猪八戒网接单平台

本例采用简单工厂模式方法实现对象的序列化&#xff0c;现已实现的三种方法为&#xff1a;Xml,Soap和Binary三种方式&#xff0c;具体实现方法如下&#xff1a; 序列化基类代码如下&#xff1a; 1 public class XSerializeTool2 {3 /// <summary>4 /…...

襄阳网站seo厂家/神秘网站

1安装vmtools for linux: 启动VM中的linux&#xff0c; 选择vmware workstation程序菜单中VM > install VMware tools... 执行&#xff1a; mkdir /mnt/cdrom mount -o ro /dev/cdrom /mnt/cdrom &#xff08;vmtools的安装文件放在vmware虚拟的cdrom中&#xff0c;首先要mo…...

网站建设公司业务/网络营销实训总结报告

Java如何入门&#xff1f; 1、建立好开发环境 首先建立好开发环境非常重要&#xff0c;工欲善其事&#xff0c;必先利其器。做任何开发&#xff0c;首先就是要把这个环境准备好&#xff0c;之后就可以去做各种尝试&#xff0c;尝试过程中就能逐渐建立信心。初学者往往在环境配…...