Java(2-1)
来源:互联网 发布:java正则表达式匹配{} 编辑:程序博客网 时间:2024/06/06 01:35
1.对象与对象变量:
① 要想适用对象,就首先必须构造对象,并指定其初始状态。
② 下面的表达式构造了一个新对象。这个对象被初始化为当前的日期和时间。
new Date()
通常,希望构造的对象可以多次使用,因此,需要将对象存放到一个变量中,如下:
String s = new Date().toString();
其中 s 为对象变量,一定要认识到:一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。在java中,任何对象变量的值都是对存储在另一个地方的一个对象的引用。在上方,表达式 new Date()构造了一个Date类型的对象,并且它的值是对新创建对象的引用,并且他的值是新创建对象的引用,这个引用存储在s中。
注意:局部变量不会自动的初始化为null,而必须通过调用new或将它们设置为null进行初始化。
很多人错误的认为java对象的引用和c++的引用类似。然而,在c++中没有空引用,并且引用不能被赋值。可以将java的对象变量看错c++的对象指针。代码如下
Date s; //java Date* s //c++
当然一个Date*指针只能通过调用new进行初始化。这一点java和c++语法几乎一样。
java中的null引用对应c++中的NULL指针。
当一个对象包含另一个对象变量时,这个变量依然包含着指向另一个堆对象的指针。
③java类库中的LocalDate类:
java的Date()类有一个状态,即特定的时间点。这个时间点就是所谓的纪元,它是1970-1-1 00:00和格林时间点一样,是一种具有实践意义的科学标准时间。
现在java打算将保存时间和时间点命名分开。所以java的库包含了两个类:一个是用来表示时间点的Date类;另一个是用来表示大家熟悉的日历的LocalDate类。相关代码操作如下:
LocalDate newYearsEve = LocalDate.of(1992,12,31);
一旦有了一个LocalDate对象,可以用放法getYear,getMonthValue和getDayOfMonth得到年,月,日。
int year = newYearsEve.getYear();//1999int month = newYearsEve.getMonthValue();//12int day = newYearEve.getDayOfMonth();//31
plusDays方法会得到一个新的LocalDate,如果把应用这个方法的对象成为当前对象,这给新日期对象则是距当前对象制定天数的一个新日期:
LocalDate aNew = newYearEve.plusDays(1000);year = aNew.getYear(); //2002month = aNew.getMonthValue();//09day = aNew.getDayOfMonth();//26
需要说明的是plusDays不会改变原来的对象,而是生成一个新的LocalDate对象,然后把这个新对象赋给aNew,这是一个访问器方法,而不是一个更改器方法。
下面介绍一段程序来结束LocalDate,这段程序要求一个日期是星期几。和某月份的天数:
LocalDate date = LocalDate.now();//下面得到日月int month = date.getMonthValue();int today = date.getDayOfMont();//然后将date设置为这个月的第一天,并得到这一天为星期几:date = date.minusDays(today - 1);//这个方法是日期减少天数DayOfWeek weekday = date.getDayOfWeek();int value = weekday.getvalue();// 1=Monday...7=sunday//下面一个循环来打印日历,第一行应该有一些缩进System.out.println("Mon Tue Wed Thu Fri Sat Sun");for(int i = 1;i < value;i++) System.out.println(" ");//现在我们来打印日历主体。进入一个循环,其中date遍历一个月中的每一天。//每次迭代时,打印日期值。如果date是当前日期,这个日期,这个日期则用一个*标记。//接下来,把date推进到下一天。如果到达新的一周的第一天,则进行换行:while(date.getMonthValue() == month){ System.out.println("%3d",dat.getDayOfMonth()); if(date.getDayOfMonth == today) System.out.print("*"); else SYSTEM.Out.print(" "); date = date.plusDays(1); if(date.getDayOfWeek().getValue() == 1)Sysotem.out.println();}
- Java(2-1)
- 贪吃蛇(java版本)留作回忆【共三份文件:1、 TestSnake.java 2、Snake. java 3、Food.java】
- java 微型贪吃蛇(2) Egg.java Snake.java
- java微型贪吃蛇(1)Yard.java Dir.java
- Java自留地2-Java数据结构1
- java日记(2)java作用域
- java提高班 -- java多线程 (2)同步
- 【Java】java生成xls(poi)(2)
- java学习--java内存管理(2)
- 【JAVA基础(1)】java环境变量设置
- java学习--java内存管理(1)
- java rmi (1)Java RMI入门
- java读书笔记-java提交篇(1)
- Java基础(1)-----Java语言概述
- Java(2):数组(1)
- 【第2节】Java数组(1)
- Java习题2讲解(1)
- 求1+2+...+n(Java实现)
- Redis学习08——kes的通用操作
- 数学之美笔记2
- 作业
- Java并发编程:深入剖析ThreadLocal
- #hiho1513 : 小Hi的烦恼 (bitset解决五维数点问题)
- Java(2-1)
- 17.9.28日报
- jQuery小案例轮播图的实现
- OSM初识(二)JOSM
- tftp下载内核与根文件系统到开发板
- Linux——关机太慢
- 软件工程—让软件包自带commit id
- spark 批量写入redis (pipeline + 分批提交)
- 数学之美笔记3