1、日期和时间:
-
如何取得年月日、小时分钟秒?
创建 java.util.Calendar 实例,调用其get()方法传入不同的参数即可获得参数所对应的值。 Java 8 中可以使用 java.time.LocalDateTime 来获取,代码如下所示。
package day220807; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Calendar; public class DateTimeTest { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); System.out.println("年:"+calendar.get(Calendar.YEAR)); // 2022 System.out.println("月:"+(calendar.get(Calendar.MONTH)+1)); // 8 System.out.println("日:"+calendar.get(Calendar.DAY_OF_MONTH)); // 7 System.out.println("时:"+calendar.get(Calendar.HOUR_OF_DAY)); // 18 System.out.println("分:"+calendar.get(Calendar.MINUTE)); // 40 System.out.println("秒:"+calendar.get(Calendar.SECOND)); //23 // java 8 LocalDateTime dateTime = LocalDateTime.now(); System.out.println(dateTime.getYear()); System.out.println(dateTime.getMonthValue()); System.out.println(dateTime.getDayOfMonth()); System.out.println(dateTime.getHour()); System.out.println(dateTime.getMinute()); System.out.println(dateTime.getSecond()); } }
-
如何取得从 1970年 1月 1日 0时 0分 0秒到现在的毫秒数?
System.out.println(Calendar.getInstance().getTimeInMillis()); System.out.println(System.currentTimeMillis()); System.out.println(Clock.systemDefaultZone().millis());
-
如何取得某月的最后一天?
@Test void test1(){ /*获取某月的最后一天*/ Calendar time = Calendar.getInstance(); System.out.println(time.getActualMaximum(Calendar.DAY_OF_MONTH)); }
-
如何格式化日期?
利用 java.text.DateFormat 的子类(如 SimpleDateFormat类)中的 format(Date) 方法可将日期格式化。 Java 8 中可以用 java.time.format.DateTimeFormatter 来格式化时间日期,代码如下所示。
@Test void test2(){ /*格式化日期*/ SimpleDateFormat oldFormatter = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); System.out.println(oldFormatter.format(date)); // java8 DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate date1 = LocalDate.now(); System.out.println(date1.format(newFormatter)); }
补充:
Java 的时间日期 API一直以来都是被诟病的东西,为了解决这一问题,Java8 中引入了新的时间日期API,其中包括 LocalDate、LocateTime、LocalDateTime、Clock、Instant 等类,这些类的设计都使用了不变模式,因此是线程安全的设计。
2、打印昨天的当前时刻
@Test
public void test3(){
/*打印昨天的当前时刻*/
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE,-1);
System.out.println(simpleDateFormat.format(calendar.getTime()));
/*java8 实现方式*/
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime today = LocalDateTime.now();
LocalDateTime yesterday = today.minusDays(1);
System.out.println(yesterday.format(formatter));
}
3、比较一下 Java 和 JavaScript
返回目录
JavaScript 与 Java 是两个公司开发的不同的两个产品。 Java 是原 SunMicrosystems 公司推出的面向对象的程序设计语言,特别适合于互联网应用程序开发;而 JavaScript 是 Netscape 公司的产品,为了扩展Netscape 浏览器的功能而开发的一种可以嵌入 Web 页面中运行的基于对象和事件驱动的解释性语言。 JavaScript 的前身是 LiveScript; 而 java 的前身是 Oak语言。
异同比较:
- 基于对象和面向对象:Java 是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象;JavaScript 是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。它是一种基于对象(Object-Based) 和事件驱动(Event-Driven)的编程语言,因而它本身提供了非常丰富的内部对象供设计人员使用。
- 解释和编译:java 的源代码在执行之前,必须经过编译。JavaScript 是一种解释性编程语言,其源代码不需要经过编译,由于浏览器解释执行。(目前的浏览器几乎都使用了 JIT(即时编译)技术来提升 JavaScript 的运行效率。
- 强类型变量和类型弱变量:Java 采用强类型变量检查,即所有变量在编译之前必须作声明;JavaScript 中变量是弱类型的,甚至在使用变量前可以不做声明,JavaScript 的解释器在运行时检查推断其数据类型。
- 代码格式不一样。
补充:
上面列出的四点是网上流传的所谓的标准答案。其实 java 和 JavaScript 最重要的区别是一个是静态语言,一个是动态语言。目前的编程语言的发展趋势是函数式语言和动态语言。在 Java中类(class)是一等公民,而 JavaScript 中 函数(function)是一等公民,因此JavaScript 支持函数式编程,可以使用Lambda函数和闭包(closure),当然 Java8 也开始支持函数式编程,提供了对 Lambda 表达式以及函数式接口的支持。
4、什么时候用断言(assert)?
返回目录
断言在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。一般来说,断言用于保证程序最基本,关键的正确性。断言检查通常在开发和测试时开启。为了保证程序的执行效率,在软件发布后断言检查通常是关闭的。断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true;如果表达式的值为 false,那么系统会报告一个 AssertionError。 断言的使用如下面的代码所示。
@Test
public void test5(){
int a = -1;
assert (a>0);
}
断言可以有两种形式:
assert Experssion1;
assert Expression1:Expression2
Expression1 应该总是产生一个布尔值。
Expression2 可以是得出一个值的任意表达式;这个值用于生成显示更多调试信息的字符串消息。
要在运行时启用断言,可以在启动 JVM时使用 -enableassertions 或 -ea 标记。要在运行时选择禁用断言,可以在启动 JVM 时使用 -da 或 -disableassertions 标记。要在系统类中启用或禁用断言,可使用 -esa 或 -dsa 标记。还可以在包的基础上启用或禁用断言。
注意:断言不应该以任何方式改变程序的状态。简单的说,如果希望在不满足某些条件时阻止代码的执行,就可以考虑用断言来阻止它。
5、Error 和 Exception 有什么区别?
返回目录
Error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况。
Exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就说,它表示如果程序运行正常,从不会发生的情况。