使用预定义类

news2024/11/28 20:54:07

目录

🍅 一、对象与对象变量

🍎 二、Java类库中的LocalDate类

🥭 三、更改器方法与访问器方法


🧑‍💻CSDN主页:夏志121的主页

📋专栏地址:Java核心技术专栏

        在Java中,没有类就无法做任何事情。然而,并不是所有的类都表现出面向对象的典型特征。以Math.Random为例,我们不必具体了解如何实现的,只需要方法名和参数。这正是封装的关键所在。Math类只封装了功能,所以不需要隐藏数据。由于没有数据,因此不必考虑创建对象和初始化它们的实例字段,因为根本没有实例字段。

🍅 一、对象与对象变量

        要使用对象首先必须构造对象,并指定其初始化状态,然后对对象应用方法。

        在Java中,要使用构造器(constructor,或称构造函数)构造新实例。构造器是一种特殊的方法,其作用是构造并初始化对象。

        构造器总是与类名同名。因此,Date类的构造器就名为Date。要想构造一个Date对象,需要在构造器前面加上new操作符。如下例子:

new Date()

这个表达式会构造一个新对象。这个对象初始化为当前的日期和时间。

如果需要,可以将这个对象传递给一个方法

System.out.println(new Date());

或者对刚构造的对象应用一个方法。Date类中有一个toString方法。这个方法将生成日期的一个字符串描述,可以如下对Date对象应用toString方法:

String s = new Date().toString();

上面两个例子,构造对象仅使用了一次。通常,你可能希望保留所构造的对象从而能继续使用,为此,需要将对象存放值一个变量中:

Date rightNow = new Date();

对象和对象变量存在一个重要的区别,例如:

Date startTime;
s = startTime.toString(); //not yet

        上例定义了一个对象变量startTime,它可以引用Date类型的变量。但是,startTime不是一个对象,而且实际上它甚至还没有引用任何对象,所以不能在这个变量上用任何Date方法,将会产生编译错误。

必须初始化startTime变量,让它引用一个新构造的对象:

startTime = new Date();

也可以设置这个变量,让它引用一个已有的对象:

startTime = rightNow;

重要的一点:对象变量并不实际包含一个对象,它只是引用一个对象

在Java中,任何对象变量的值都是一个引用,指向存储在另外一个地方的某个对象。

🍎 二、Java类库中的LocalDate类

        标准Java类库分别包含了两个类:一个是用来表示时间点的Date类;另一个是用大家熟悉的日历表示法表示日期的LocalDate类。将时间度量与日历分开是一种很好的面向对象设计。

        不要使用构造器来构造LocalDate对象。应用使用静态工厂方法(factory method),它会代表你调用的构造器,下面式表达式:

LocalDate.now()

        上例会构造一个新对象,表示构造这个对象时的日期

可以提供年、月、日来构造对应一个特定日期的对象,并保存在一个对象变量中:

LocalDate newYearEve = LocalDate.of(2020,2,2)

        也可以使用plusDays方法,把应用这个方法的对象称为当前对象,那么这个新日期对象则是距当前对象指定天数的一个新日期:

LocalDate aThousandDaysLater = newYearsEve.plusDays(1000);
int year = aThousandDays.getYear();
int month = aThousanDays.getMonthValue();
int day = aThousanDays.getDayOfMonth();

LocalDate类封装了一些实例字段来维护所设置的日期。

🥭 三、更改器方法与访问器方法

        Java库较早版本曾经有另一个处理日历的类,名为GregorianCalender。如下这个类表示的是一个日期增加1000天:

GregorianCalendar someDay = new GregorianCalendar(1999,11,31);
someDay.add(Calender.DAY_OF_MONTH,1000);

        与LocalDate.plusDays方法不同,GregorianCalendar.add方法是一个更改器方法(mutator method)。调用这个方法后,someDay对象的状态会改变。

        相反,只访问对象而不修改对象的方法有时称为访问器方法(accessor method)。例如,LocalDate.getYear和GregorianCalender.get就是访问器方法。

使用LocalDate类显示当前月的日历:

import java.time.DayOfWeek;
import java.time.LocalDate;

public class CalendarTest {
    public static void main(String[] args) {
        LocalDate date = LocalDate.now();
        int month = date.getMonthValue();
        int today = date.getDayOfMonth();

        date = date.minusDays(today - 1);
        DayOfWeek weekday = date.getDayOfWeek();
        int value = weekday.getValue();

        System.out.println("Mon Tue Wed Thu Fri Sat Sun");
        for(int i = 1; i < value; i++){
            System.out.print("    ");
        }
        while (date.getMonthValue() == month){
            System.out.printf("%3d",date.getDayOfMonth());
            if(date.getDayOfMonth() == today){
                System.out.print("*");
            }else {
                System.out.print(" ");
            }
            date = date.plusDays(1);
            if(date.getDayOfWeek().getValue() == 1){
                System.out.println();
            }
        }
        if(date.getDayOfWeek().getValue()!=1){
            System.out.println();
        }
    }
}

执行结果:

🍊 java.time.LocalDate API:

● static LocalDate now()

        构造一个表示当前日期的对象

● static LocalDate of(int year, int month, int day)

        构造一个表示给定日期的对象

● int getYear()

● int getMonthValue()

● int getDayOfMonth()

        得到当前日期的年、月和日

● DayOfWeek getDayOfWeek()

        得到当前日期是星期几,作为DayOfWeek类的一个实例返回。在DayOfWeek实例上调用getValue来得到1-7之间的一个数,表示这是返回的星期几,1表示星期一,7表示星期日

● LocalDate plusDays(int n)

● LocalDate minusDays(int n)

        生成当前日期之后或之前n天的日期

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

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

相关文章

形态学图像处理和图像分割MATLAB实验

文章目录 一、实验目的二、实验内容1. 开运算和闭运算实验。2. 用形态学处理提取边界。4. 全局阈值处理。 一、实验目的 理解腐蚀和膨胀的原理&#xff0c;掌握开运算、闭运算及形态学的边界提取。掌握孤立点检测、线检测和边缘检测的方法。掌握全局阈值处理的方法。 二、实验…

2023 上半年软件设计师知识点复习总纲

前言&#xff1a;全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;以下简称IT职业资格考试&#xff09;是由中华人民共和国人事部主管&#xff0c;国家计算机网络与信息安全管理中心主办的一项国家级、权威性的计算机职业技能水平认证考试。主要…

【人力资源管理】第4集 免费开源ERP: Odoo 16 Appraisal员工绩效评估 构建一体化企业人力资源管理

文章目录 前言一、概览二、主要功能1.设置定期的员工评估2.构建正确的评估3.设计您自己的调查4.自动评估过程 总结 前言 在员工工作中创建评估。同时审查员工表现。 一、概览 员工评价 评估内容 目标制定 评价指标 评价分析 二、主要功能 1.设置定期的员工评估 强化贵公司的…

Learning C++ No.21 【AVL树实战】

引言&#xff1a; 北京时间&#xff1a;2023/5/13/10:13&#xff0c;饥肠辘辘&#xff0c;为了将红黑树的博客赶出来&#xff0c;导致现在还没有吃早饭&#xff0c;所以现在先容我去吃一下早饭&#xff0c;ok&#xff0c;转眼一看&#xff0c;12:25&#xff0c;哈哈哈&#xf…

Linux上传文件至GitHub

Linux上传文件至GitHub 1、安装 git 并 生成密钥1.1 安装 git 并 绑定用户信息1.2 生成密钥 并 复制于 Github 2、生成远程仓库3、文件上传 本篇文章将讲述在Linux上如何通过 git 上传文件到 Github 账户中的目标远程库 &#xff01;主要内容如下。 1、安装 git 并 生成密钥 …

2023年测试工程师核心竞争力?功能到自动化测试开发收割28k的offer...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Python自动化测试&…

如何使用Wireshark软件分析TCP协议

在学习网络相关知识的时候&#xff0c;需要对网络协议进行分析。网络协议分析软件用的最多的就是 Wireshark 这个软件&#xff0c;今天就简单总结一下如何使用这个软件进行TCP三次握手和四次挥手的查看。   要查看三次握手和四次挥手的数据&#xff0c;那么就必须找一个软件有…

Pr 拍立得风格图片展示

哈喽&#xff0c;各位小伙伴&#xff01;今天我们来学习一下如何制作拍立得风格的照片展示效果&#xff1f; 新建三个序列 在开始之前&#xff0c;我们需要新建三个序列 序列1&#xff1a;总合成-尺寸1902*1080序列2&#xff1a;照片合成-尺寸1920*1080序列3&#xff1a;照片…

1-Zookeeper简介

1-Zookeeper简介 ①官网 官网 https://zookeeper.apache.org/中文网站 https://zookeeper.net.cn/ ②简介 ZooKeeper 是分布式应用程序的分布式开源协调服务。它公开了一组简单的原语&#xff0c;分布式应用程序可以基于这些原语实现更高级别的同步、配置维护、组和命名服务…

MATLAB入门教程 | 001基础知识

一、认识MATLAB 1. MATLAB概述 &#xff08;1&#xff09;在欧美各高等学校, Matlab成为线性代数、自动控制理论、数字信号处理、时间序列分析、动态系统仿真、图像处理等诸多课程的基本教学工具&#xff0c;成为本科生、硕士生和博士生的必须掌握的基本技能。 &#xff08;2&…

2023.05.14 学习周报

文章目录 摘要文献阅读1.题目2.现存问题和解决方法3.RUM4.本文贡献5.模型框架5.1 Memory enhanced user embedding5.2 Prediction function5.3 Item-level RUM5.4 feature-level RUM 6.实验6.1 数据集6.2 测量准则6.3 基线6.4 实验结果 7.结论与展望 灰色预测有限元法1. 第一类…

【图像基础知识】常见图像格式

文章目录 1 简介2 RGB3 BGR4 YUV4.1 YUV常见格式4.2 YUV420详解4.3 NV12 5 Gray6 图像格式之间的转换7 参考链接 原文来自于地平线开发者社区&#xff0c;未来会持续发布深度学习、板端部署的相关优质文章与视频&#xff0c;如果文章对您有帮助&#xff0c;麻烦给点个赞&#x…

基于趋动云部署秋葉aaaki的Stable Diffusion整合包v4--linux版

B站大V秋葉aaaki的Stable Diffusion整合V4版发布了&#xff0c;集成度比较高&#xff0c;在windows下解压缩直接就可以使用&#xff0c;整合的非常好。但是笔人没有RTX4090这样级别的显卡&#xff0c;又希望有个高速运行的效果。 所以索性到云GPU主机上来用秋叶aaaki的Stable …

1.环境搭建

1.Windows 系统GolangVisual Studio CodeMicrosoft Windows (x86-64)go1.20.1.windows-amd64.msihttps://code.visualstudio.com/DownloadMicrosoft Windows (x86-i386)go1.20.1.windows-386.msihttps://code.visualstudio.com/DownloadMicrosoft Windows (ARM64)go1.20.1.win…

《疯狂Java讲义》读书笔记4

初始化块 是构造器的补充&#xff0c;在构造器之前执行。 是一段固定的代码&#xff0c;不接受任何参数。 构造器其实是一个假象&#xff0c;编译Java类后&#xff0c;初始化块会消失&#xff0c;当中的代码被还原到构造器中&#xff0c;且位于构造器前面。 静态初始化块 用…

springboot+vue家政服务管理平台(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的家政服务管理平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风…

R语言相关系数的可视化

R相关系数的可视化 文章目录 R相关系数的可视化[toc]1、序列自相关2、序列偏自相关3、简单相关4、相关图可视化5、不同方法6、其他一些修饰 1、序列自相关 自相关是指同一时间序列在不同时间 t t t上取值的相关程度&#xff0c;假设时间序列 { X t } t 1 T \{X_t\}_{t1}^{T} …

电子电气架构——车载以太网防火墙

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本文主要分享关于车用基础软件的内核和中间件核心技术—虚拟化的典型应用案例。 车辆内部的以太网网络是一个相对封闭的环境,没有因特网那么复杂。由于车辆…

[LeetCode周赛复盘] 第 345 场周赛20230514

[LeetCode周赛复盘] 第 345 场周赛20230514 一、本周周赛总结6430. 找出转圈游戏输家1. 题目描述2. 思路分析3. 代码实现 6431. 相邻值的按位异或1. 题目描述2. 思路分析3. 代码实现 6433. 矩阵中移动的最大次数1. 题目描述2. 思路分析3. 代码实现 6432. 统计完全连通分量的数…

多核与多处理器的区别

一、定义 多核&#xff1a;单块CPU上面能处理数据的芯片组的数量&#xff0c;比如&#xff0c;双核就是包括2个相对独立的CPU核心单元组&#xff0c;四核就包含4个相对独立的CPU核心单元组。 多处理器&#xff1a;主板上实际插入的cpu数量&#xff0c;一般有两个或者多个处理…