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

news2024/12/23 16:42:57

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 对象的引用和生命周期

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

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

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

相关文章

掌握这些,让你轻松玩转钡铼PLC网关与西门子S7-1200的MQTT通信

一、软硬件描述 西门子PLC S7-1215钡铼BL102网关mosquitto MQTT服务器(腾讯云上搭建)可以上网的路由器一套 二、需要使用的软件。 西门子Portal v15.1 (西门子PLC编程软件)钡铼BL102调试软件及说明书。 说明书下载链接: http:/…

Map集合案例-统计投票人数

需求: 某个班级80名学生,现在需要组成秋游活动,班长提供了四个景点依次是(A、B、C、D),每个学生只能选择一个景点,请统计出最终哪个景点想去的人数最多。 利用Map集合进行统计 //A06_HashMapDemo2.java package dail…

【报错】bash: curl: command not found

(1)报错😱😱😱 bash: curl: command not found (2)分析🐰🐰🐰 安装对应的工具包 curl即可。 (3)解决方法💉&#x1f4…

分库分表知识点

分库分表专题 1.概述 1.1 分库分表是什么 小明是一家初创电商平台的开发人员,他负责卖家模块的功能开发,其中涉及了店铺、商品的相关业务,设计如下数据库: 通过以下SQL能够获取到商品相关的店铺信息、地理区域信息 SELECT p.*…

SQL常用脚本整理(上)

点击关注公众号,SQL干货及时获取 后台回复:1024,获取海量学习资源 SQL刷题专栏 SQL145题系列 大家注意: 因为微信改了推送机制,会有小伙伴刷不到当天的文章, 一些比较实用的知识和信息,错过了就…

若依框架i18n国际化

需求背景 项目需求要做国际化,结果网上找了好几篇文章,没有一个可以一次性搞定,现在这里总结一下。首先,我们分为两部分处理,一个是前端页面的静态文字,这个由前端vue.json自行处理。第二部分就是后端的错…

Windows 11 安装Boost 库

Boost 库下载和安装 Boost 官网地址:https://www.boost.org/ ,首先进入官网下载对应版本的 Boost 库文件。点击下图所示绿框中的 Download 进入下载页面。 进入下载页面,下载所需要的版本,我现在下载的版本为1.83.0,下载的是win…

IGBT和碳化硅SiC模块,全球市场总体规模,前二十大厂商排名及市场份额

IGBT模块与碳化硅SiC模块全球市场总体规模 2023年全球IGBT模块市场规模大约为67亿美元,预计2029年将达到145亿美元,未来几年年复合增长率CAGR为13.6%。 2023年全球碳化硅SiC模块市场规模大约为16.9亿美元,预计2029年将达到92亿美元&#xff…

MySQL内连接和外连接及七种SQL JOINS的实现

1. 内连接 2.外连接左外连接:右外连接:满外连接: 3. SQL99语法实现多表查询 3.1 SQL99实现内连接 3.2 SQL99语法实现外连接 3.2.1 左外连接3.2.2 右外连接 3.2.3 满外连接 4.总结:七种SQL JOINS的实现 4.1 内连接 4.2 左…

【开发者工具中$0的作用】

在开发者工具中每当我们选中元素的时候 最右侧都会出现一个 $0 不知道大家有没有注意到 以下图为例 我选中最新排序的input框 输入$0 它就默认选中这个元素 我们可以在这里进行一些赋值等操作

OpenHarmony社区运营报告(2023年8月)

本月快讯 2023年8月3日,OpenAtom OpenHarmony(以下简称“OpenHarmony”)发布了Beta2版本。OpenHarmony 4.0 Beta2在系统能力、应用框架、分布式通信、媒体功能、安全性等方面进行了全面升级。其中,ArkUI增强了界面组件能力&#x…

Linux基础命令(示例代码 + 解释)

查看目录下文件 ls [-a -l -h] [路径] -a(全部) -l(细节) -h(大小) ls ls / ls -a ls -l ls -h ls -alh ls -l -h -a ls -lah /切换目录 cd [路径] change di…

kafka增加磁盘或者分区,topic重分区

场景:kafka配置文件log.dirs增加了几个目录,但是新目录没有分区数据写入,所以打算进行重分区一下。 1.生成迁移计划 进入kafka/bin目录 新建 topic-reassign.json,把要重分区的topic按下面格式写。 { "topics": [{ …

NotionAI使用指南

一、NotionAI是什么 NotionAI是一款基于人工智能技术的知识管理工具,具有以下功能: 智能提醒: NotionAI可以根据用户的使用习惯和工作流程,智能提醒用户需要完成的任务和事项,帮助用户更好地规划和安排工作时间。智能分类: Noti…

洗鞋软件开发,洗鞋店小程序功能介绍;

洗鞋小程序开发搭建; 作为一个技术出身的设计人,今天我想跟大家一起来聊一聊目前市面上的洗鞋小程序,截止目前,我们闪站侠洗护软件已经累计服务用户2000 可以总结一下,目前市面上只要是宣称自己做互联网洗鞋的&#x…

MyBatis的使用

一.在创建Spring项目时引入MyBatis Framework和MySQL Driver; 二.下载插件:MyBatisX插件。 三.配置文件: 四.根据MyBatis写法完成数据库的操作 常规写法,包括两个文件: 1.接口:方法的声明(给其他层调用&…

CAN/CANFD转WIFI设备解决近距离无线通讯问题

在现场应用中,各种情况都会出现,一些运动设备进行维护、下载、测试工作时,需要近距离无线收发CAN/CANFD报文。 港口应用中,控制室与吊机一没有办法通过有线连接,这时候就可以用无线来实现数据抓取。 例如某AGV小车厂…

java.lang.ClassCastException: android.os.BinderProxy cannot be cast to ...

项目开发遇到下面这个报错了! 直接说原因,就是因为进程间不能直接传递对象,应该传递该Binder对象的映射(代理对象),所以类型转换就出错了。如果在同一个进程中,直接传递对象没有关系&#xff0c…

手撕代码是程序员的基本功吗?

前言: 现在众多企业都要求在面试中用“手撕代码”来考验应聘者的代码能力,你觉得手敲代码是否可以体现真实的基础实力? 本期话题: 1、你觉得手撕代码是程序员的基本功吗? 2、为什么会用“手撕代码”来考验程序员能力&a…

vue3中v-html的使用时,出现<后面的字符串展示不出来

话不多说&#xff0c;直接上代码&#xff1a; 把<替换一下用&lt &#xff0c;这样就完美的解决问题了