关于JAVA核心技术(卷一)读后的思考(对象与类,日历的构造)

关于这本书,前三张都是基本内容,我觉得个人掌握的还可以,所以从第四章开始整理每日所学。

第四章主要说的是对象和类。第一部分是面向对象程序设计的概述。其中面向对象程序设计简写OOP,接下来写的是类,即构造对象的模板,由类构造对象的过程称创建类的实例(instance)这里可以想到instanceof,这也在后面学习中会有提到

封装是将数据和行为组合到一个包中,并对对象的使用者隐藏了数据的实现方式。数据成为实例域,操纵数据的过程称为方法。封装赋予了对象“黑盒“的特征,这是提高重用性和可靠性的关键。

接下来说一下类之间的关系,分为1、依赖,2、聚合,3、继承

依赖:就是一个类需要访问另一个类;聚合:A的对象包含着B的对象;继承:表示特殊和一般的关系。

new Date():应理解为Date()是一个构造器,在前面加一个new操作符即构造了一个新对象,这个对象被初始化为当前的日期和时间。1、可以将这个对象传递个一个方法,即可以将这个作为参数,进行传递。2、也可将一个方法应用于刚刚创建的对象方法应用于刚刚创建的对象。例如:String s=new Date().toString();若希望多次使用,可创建对象。Date birthday=New Date();

一、Date deadline=new Date();  ——用新构造的对象初始化这个变量。

二、deadline = birthday;——用这个变量引用一个已存在的对象。

LocalDate类LocalDate.now()构造一个新对象,表示构造这个对象时的日期。

可以提供年、月、日来构造对应一个特定日期的对象:

LocalDate.of(1999,12,31)

可以将其保存造一个变量对象中:LocalDate newYearsEve = LocalDate.of(1999,12,31);

问题:构造一个日历,并将当前用*标记

代码:

package com.java.CalendarTest;

import java.time.*;//使用LocalDate时,必须引入这个包

public class CalendarTest {

public static void main(String[] args) {
        // TODO Auto-generated method stub
        LocalDate date = LocalDate.now();//创建当前时间的对象
        int month = date.getMonthValue();//当前月份
        int today = date.getDayOfMonth();//本月多少日
        
        date = date.minusDays(today-1);//生成当前日期之后之前的n-1天
        DayOfWeek weekday = date.getDayOfWeek();
        int value = weekday.getValue();
        
        System.out.println();
        
        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();

}

}

static LocalTime now()
构造一个表示当前日期的对象

static LocalTime of (int year,int month,int day)

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

int getYear()

int getMonthValue()

int getDayOfMonth()

得到当前日期的年月日

DayOfWeek getDayOfWeek

得到当前日期是星期几。

LocalDate plusDays(int n)

生成当前日期之后的日期

LocalDate minusDays(int n)

生成当前日期之后的日期

分析:

date = date.minusDays(today-1);

这一句是唯一难点句
        date = date.minusDays(today-1);

在此之前,date表示的当前的时间对象,假设是10号,10-1=9,在10号前的9天即1号就是找到当月的第一天的基本信息。

原文地址:https://www.cnblogs.com/zzuzhouxiang/p/10328112.html

时间: 2024-10-13 18:03:46

关于JAVA核心技术(卷一)读后的思考(对象与类,日历的构造)的相关文章

关于JAVA核心技术(卷一)读后的思考(用户自定义类,静态域和静态方法的思考以及方法参数)

用户自定义类: 这部分并没有太过于困难的部分,借由代码进行复习: Employee类的定义: package com.java.EmployeeTest; import java.time.*; public class Employee {    private String name;    private double salary;    private LocalDate hireDay;//以上分别是Employee类的实例域        public Employee(Strin

java核心技术卷一

java核心技术卷一 java基础类型 整型 数据类型 字节数 取值范围 int 4 +_2^4*8-1 short 2 +_2^2*8-1 long 8 +_2^8*8-1 byte 1 -128-127       浮点类型 数据类型 字节数 取值范围 小数位数 float 4 10^-38~10^38和-10^-38~-10^38 小数位数6-7 double 4 10^-308~10^308和-10^-308~-10^308 15位小数         boolean 类型和char 类

Java核心技术 卷一 笔记六 Date类

在Java核心技术卷就行了一前期  date类出现的频率很高  所以就对date类进行了小小的整合 Date类有两个 date类 表示特定时间的类 这个构造函数分配一个Date对象并初始化它代表指定的毫秒数,因为被称为"纪元",即1970年1月1日00:00:00 GMT标准基准时间. 就像格林尼治时间一样  作为一种基准值而存在 一般常用的是date转为string类型 String s=new Date(0).toString(); System.out.println(s.toS

关于JAVA核心技术(卷一)读后的思考(内部类的讨论)

内部类 内部类是定义在另一个类中的类. 定义内部类的原因有: 1)内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据. 2)内部类可以对同一个包中的其他类隐藏起来. 3)当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷. 使用内部类访问对象状态 分析一下下面一段代码 public class TalkingClock { private int interval; private boolean beep; public TalkingClock(int inter

关于JAVA核心技术(卷一)读后的思考(回调,clone的讨论)

回调 回调是一种常见的程序设计模式.这种模式中,可以指出某个特定事件发生时应该采取的动作. 直接给上代码 package com.java.timer; import java.awt.event.ActionListener; import javax.swing.JOptionPane; import javax.swing.Timer; public class TimerTest { public static void main(String[] args) { // TODO Aut

读《java核心技术卷一》有感

过去一个多月了吧.才囫囵吞枣地把这书过了一遍.话说这书也够长的,一共706页.我从来不是个喜欢记录的人,一直以来看什么书都是看完了就扔一边去,可能有时候有那么一点想记录下来的冲动,但算算时间太紧,很多也是有始无终,毕竟在之前研究研究程序也只是自己的一个爱好而已,但没有想到签了一个程序员的工作.唉,这老天也太捉弄人了吧,让一个学电气工程(强电方向)学生毕业之后去写代码,而且是与硬件完全无关的代码.真是白念几年大学了.行了,就行发这么多牢骚吧. <java核心技术>有两个卷,我只看了卷一,从我的感

《Java核心技术卷一》笔记 多线程同步(底层实现)

一.锁的基本原理 多个线程同时对共享的同一数据存取 ,在这种竞争条件下如果不进行同步很可能会造成数据的讹误. 例如:有一个共享变量int sum=0, 一个线程正调用 sum+=10,另一个线程正好也在调用sum+=20,期望的结果应该是sum=30. 但是+=操作并不是原子的,虚拟机需要用多条指令才能来完成这个操作(load,add, store),每个指令执行完都有可能被剥夺执行权,同时让另一个线程继续运行.(可以使用javap -c -v CLASS命令将class文件反编译为可阅读的虚拟

《Java核心技术卷一》笔记 多线程

有时,我们需要在一个程序中同时并行的处理多个任务,如播放器一边要播放音乐同时还要不断更新画面显示,或者是一边执行耗时任务,UI还能一边继续响应各种事件.还有的时候,一个任务需要很长时间才能完成,如果分成多份一起执行,可以极大的缩短需要的时间.多线程可以很好的解决这类问题. 一个程序(进程)如果可以同时执行多个任务,每个并行的任务都是通过一个线程来完成,这就是一个多线程程序.进程拥有自己的一整套数据(变量),各个线程共享进程的数据,线程间通信比进程间通信更简单,线程开销比进程小. Java中为多线

关于JAVA核心技术(卷一)读后的思考(接口的基本知识的讨论)

接口 接口技术:这种技术主要用来描述类具有什么功能,而并不给出每个功能的具体实现.一个类可以实现一个或多个接口,并在需要接口的地方,随时使用实现了相应接口对象. 接口概念:接口不是类,而是对类的一组需求的描述,这些类要遵从接口描述的统一格式进行定义. 举个简单的例子:假设有一个类A,其中有一个sort方法是对对象数组进行排序,但要求对象所属的类必须实现了 B接口.假设B接口定义如下: public interface B{ int compareTo(Object other); } 即所有实现