Java--静态字段与静态方法

1、静态字段

如果将一个字段定义为static,每个类只有一个这样的字段。而对于非静态的实例字段,每个对象都有自己的一个副本。

例如:

class Employee 
{private static int nextId = 1;private int id;...
}

其中,每一个Employee对象都有一个自己的id字段,但这个类的所有实例将共享一个nextId字段。换句话说,如果有1000个Employee类对象,则有1000个实例字段id,分别对应每一个对象。但是,只有一个静态字段nextId。即使没有Employee 对象,静态字段nextId 也存在。它属于类,而不属于任何单个的对象。

注释:

在一些面向对象程序设计语言中,静态字段被称为类字段。术语“静态”只是沿用了C++的叫法,并无实际意义。

2、静态常量

Math类中的一个静态常量

public class Math
{...public static final PI = 3.1415926535897932846;...
}

在程序中用Math.PI来访问这个变量。

如果省略关键字static, PI 就变成了Math 类的一一个实例字段。也就是说,需要通过Math类的一个对象来访问PI,并且每一一个Math对象都有它自己的一个PI副本。

System类中你的一个静态常量

public class System
{...public static final PrntStream out = ...;...
}

静态常量只能访问,不能直接修改。

如:

System.out = new PrintStream(...); // ERROR--out is final

3、静态方法

静态方法是不在对象上执行的方法。例如,Math类中pow方法就是一个静态方法。表达式:Math.pow(x,a).

Employee类的静态方法不能访问id实例字段,因为它不能在对象上执行操作。但是,静态方法可以访问静态字段。

示例:

public static int getNextId()
{return nextId; //返回静态字段
}

可以直接用类名调用该方法:

int n = Employee.getNextId();

在下面两种情况下可以使用静态方法:

  • 方法不需要访问对象状态,因为它需要的所有参数都通过显式参数提供(例如:(Math.pow)。
  • 方法只需要访问类的静态字段( 例如: Employee . getNextId)。

4、main方法

​ 需要注意,可以调用静态方法而不需要任何对象。例如,不需要构造Math类的任何对象就可以调用Math,pow。同理,main 方法也是-一个静态方法。

public class Applicationpublic static void main(String[] args)// construct objects here...}
}

​ main方法不对任何对象进行操作。事实上,在启动程序时还没有任何对象。静态的main方法将执行并构造程序所需要的对象。

提示:

每一个类可以有一个main方法。这是常用于对类进行单元测试的一个技巧。例如,可以在Employee类中添加一个main方法:

class Employee
public Employee(String n, double s, int year, int month, int day)
{name = n;salary = s;hireDay = LocalDate. of(year, month, day);
}
public static void main(String[] args) // unit test
{var e = new Employee("Romeo", 50000, 2003, 3, 31);e.raiseSalary(10);System.out . println(e.getName() +""+ e.getSalary());
}

如果想要独立地测试Employee类,只需要执行

java Employee

如果Employee类是一个更大型应用程序的一部分,就可以使用下面这条语句运行程序

java Application

Employee类中的main方法永远不会执行

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

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

相关文章

解读《生成式人工智能服务管理暂行办法》

《生成式人工智能服务管理暂行办法》 第一章 总 则第二章 技术发展与治理第三章 服务规范第四章 监督检查和法律责任第五章 附 则 以ChatGPT为代表的现象级互联网应用的出现,掀起了人工智能领域新一轮技术浪潮。作为新一代信息技术,生成式人工智能通过…

文心一言 VS 讯飞星火 VS chatgpt (85)-- 算法导论8.2 2题

二、用go语言,试证明 COUNTING-SORT 是稳定的。 文心一言: 要证明 COUNTING-SORT 是稳定的,我们需要证明在排序过程中,具有相同值的元素在排序后仍保持其原始的相对顺序。COUNTING-SORT 是一种基于计数的排序算法,其…

【Spring Boot】Spring Boot 配置 Hikari 数据库连接池

文章目录 前言配置 前言 数据库连接池是一个提高程序与数据库的连接的优化,连接池它主要作用是提高性能、节省资源、控制连接数、连接管理等操作; 程序中的线程池与之同理,都是为了优化、提高性能。 配置 spring:datasource:hikari:# 设置是…

周报/月报 Prompt

前言 用 AI 写好一份周报或月报。 文章目录 前言一、目的二、Prompt 设计原则三、模板 一、目的 简单的日程,扩写成一篇高质量的周报; 二、Prompt 设计原则 角色 目标 背景 要求 三、模板 内容生成模板 你是我的周报助手,根据我的工作…

无涯教程-Android - ToggleButton函数

ToggleButton将已选中/未选中状态显示为按钮。它基本上是一个带有指示灯的开/关按钮。 Toggle Button ToggleButton属性 以下是与ToggleButton控件相关的重要属性。您可以查看Android官方文档以获取属性的完整列表以及可以在运行时更改这些属性的相关方法。 Sr.No.Attribute…

js 固定四点绘制梯形

可以通过 Canvas API 来实现固定四点绘制梯形。具体可以按照如下步骤&#xff1a; 创建一个 Canvas 元素。 <canvas id"myCanvas"></canvas>获取 Canvas 上下文。 const canvas document.getElementById(myCanvas); const ctx canvas.getContext(2d…

kafka复习:(23)事务

一、生产者&#xff0c;开启事务。 package com.cisdi.dsp.modules.metaAnalysis.rest.kafka2023;import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerConfig; import org.apache.kafka.clients.producer.ProducerRe…

【GoLang】go入门:go语言执行过程分析 常见数据类型(基本数据类型)

1、go语言执行过程分析 【1】执行流程分析 通过 go build 进行编译 运行上一步生成的可执行文件 通过 go run 命令直接运行 【2】上述两种执行流程的区别 在编译时&#xff0c;编译器会将程序运行时依赖的库文件包含在可执行文件中&#xff0c;所以可执行文件会变大很多通过g…

RPA技术介绍与应用价值

一、什么是RPA技术? RPA(Robotic Process Automation)机器人流程自动化,是一种能够模拟人类来执行重复性任务的新型技术。RPA可实现统筹安排、自动化业务处理,并提升业务工作流处理效率。用户只需通过图形方式显示的计算机操作界面对RPA软件进行动态设定即可。借助RPA (R…

多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比

多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比 目录 多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预…

day-38 代码随想录算法训练营(19)动态规划part01

509.佩波纳契数列 思路&#xff1a; 1.dp存储第i个位置的数值2.递归公式&#xff1a;dp[i]dp[i-1]dp[i-2];3.初始化&#xff1a;dp[0]0,dp[1]14.遍历顺序&#xff1a;2-n 70.爬楼梯 思路&#xff1a; 1.dp存储的是&#xff0c;当前i位置&#xff0c;有dp[i]中方法到达2.dp[…

VScode 国内下载源 以及 nvm版本控制器下载与使用

VScode 国内下载源 进入官网 https://code.visualstudio.com/ 点击下载 复制下载链接到新的浏览器标签 将地址中的/stable前的az764295.vo.msecnd.net换成vscode.cdn.azure.cn&#xff0c;再回车就会直接在下载列表啦。 参考大神博客 2.使用nvm 对 node 和npm进行版本控制…

23062网络编程day7

网络聊天室编写&#xff08;基于UDP&#xff09; 服务器 #include <myhead.h>#define PORT 8888 //端口号&#xff1a;接收方绑定的端口号 #define IP "192.168.114.56" //本机IP#define ERR_MSG(msg) do{\fprintf(stderr, "__%d__:&…

uni-app 报错 navigateTo:fail page “/pages/.../...“ is not found

这个错误的意思是&#xff1a;识别不到该页面 错误可能一&#xff1a;没有在 pages.json【微信小程序是 app.json】中定义该页面的路径 如&#xff1a; pages.json "pages": [{"path": "pages/index/index" }, {"path": "pag…

为什么在有一些分类任务中,resnet50的准确率不如resnet18

在分类任务中&#xff0c;ResNet50和ResNet18是两种不同的卷积神经网络模型&#xff0c;它们的网络结构和参数量不同&#xff0c;因此可能导致它们在准确率上的表现有所差异。 网络深度&#xff1a;ResNet50相比于ResNet18更深&#xff0c;具有更多的层和更多的参数。更深的网络…

electron应用打包成功纪念一下

electron应用打包成功纪念一下&#xff0c;以前曾经行过后来打包各种报错&#xff0c;现在有空就尝试解决一下 首先安装nvm能够方便切换node版本 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash 顺利安装后你用nvm list查看node列表时会…

数据治理-数据管理成熟度评估

是什么&#xff1f; 能力成熟度评估是一种基于能力成熟度模型框架的能力提升方案&#xff0c;描述了数据管理能力初始状态发展到最优化的过程。 历史发展 能力成熟度评估概念源于美国国防部为评估软件承包商而建立的标准。20世纪80年代中期&#xff0c;卡内基梅隆大学软件工程…

c#垃圾回收(Garbage Collection)

在C#中&#xff0c;垃圾回收&#xff08;Garbage Collection&#xff09;是一种自动管理内存的机制。它负责跟踪和释放不再使用的内存&#xff0c;以便程序可以有效地使用内存资源。 C#中的垃圾回收器是由.NET运行时&#xff08;CLR&#xff09;提供和管理的。它使用了一种叫做…

Linux获取纳秒级别时间

在 Linux 系统中可以使用 gettimeofday 函数来获取时间&#xff0c;这个函数能够以毫秒的精度来获取时间 struct timeval tv;gettimeofday(&tv, NULL);time_t cur_time tv.tv_sec;long cur_time_ms tv.tv_usec/1000;printf(“cur_time %d \n”, cur_time);printf(“cur…

【八股】2023秋招八股复习笔记5(计算机网络-CN)

文章目录 八股目录目录1、应用层 & HTTP一些http题HTTPS 加密原理&#xff08;问过&#xff09;HTTP/1.1 新特性HTTP/2.0 与 RPC&#xff08;问过&#xff09;GET 和 POST 比较 2、传输层 & TCPTCP三次握手 & 四次挥手&#xff08;问过&#xff09;为什么每次TCP 连…