java基础(四)String,日期时间

一,String详解

在你申明一个String的变量时,java会检查常量池中是否有这个常量存在。如String a="ABC";第一次申明时,会在常量池中添加“ABC”这个常量,然后再把引用地址赋予a变量。当你new一个变量时String是在堆中新开了一片内存,这里引用路径不同了。

不论是String c=“A”+“BC”还是String d=“A”+"b"+"c"都是常量拼接而成,在检查是否存在时,会先拼接起来在到常量池中检测是否存在,存的话在返回引用地址,不存在便加入池中。b.intern()方法这个方法有些特殊,先提取变量中的值,然后对比常量池是否存在,存在就返回引用地址。String g=f+"bc";这里因为编程在编译时无法知道f的值是什么,所以重新在常量池中加入了一个值。

代码:

		String a="ABC";
		String b=new String("ABC");
		String c="A"+"BC";
		String d="A"+"B"+"C";
		String e=b.intern();
		String f="A";
		String g=f+"bc";
		//false
		System.out.println(a==b);
		//true
		System.out.println(a==c);
		//true
		System.out.println(a==d);
		//true
		System.out.println(c==d);
		//true
		System.out.println(e==a);
		//false
		System.out.println(g==a);

测试:

String,StringBuilder,StringBuffer。String +编译时会调用StringBuild。例如

String a=b+“c”;在编译时会调用a=(new StringBuilder (String.valueof(b)).append("c").toString())。所以当你在循环中使用拼接时会创建许多的StringBuilder对象,尽量避免在循环中使用String a=b+“c”;这样或者sb.append(b+"c")的形式。

二,Java中获取日期或者时间

(1)如何获取当前时间

代码:

Calendar calendar=Calendar.getInstance();
     //年
     calendar.get(calendar.YEAR);
     System.out.print(calendar.get(calendar.YEAR)+"年");
     //月
     calendar.get(calendar.MONTH);
     System.out.print(calendar.get(calendar.MONTH)+1+"月");
     //日
     calendar.get(calendar.DAY_OF_MONTH);
     System.out.print(calendar.get(calendar.DAY_OF_MONTH)+"日");
     //时
     calendar.get(calendar.HOUR_OF_DAY);
     System.out.print(calendar.get(calendar.HOUR_OF_DAY)+"时");
     //分
     calendar.get(calendar.MINUTE);
     System.out.print(calendar.get(calendar.MINUTE)+"分");
    //秒
     calendar.get(calendar.SECOND);
     System.out.println(calendar.get(calendar.SECOND)+"秒");
    //java1.8
    LocalDateTime dt = LocalDateTime.now();
    System.out.println(dt.getYear()); 
    System.out.println(dt.getMonthValue()); // 1 - 12 
    System.out.println(dt.getDayOfMonth()); 
    System.out.println(dt.getHour()); 
    System.out.println(dt.getMinute()); 
    System.out.println(dt.getSecond());

测试:

(2)如何获取时间轴0点到当前时间的差

代码:

		//第一种
		System.out.println(System.currentTimeMillis());
		//第二种
		System.out.println(Calendar.getInstance().getTimeInMillis());
		//第三种
		System.out.println(Clock.systemDefaultZone().millis());

测试:

(2)获取当前月的第一天和最后一天

代码:

//获取当前月第一天: 
Calendar c = Calendar.getInstance(); 
c.add(Calendar.MONTH, 0); 
c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天 
String first = format.format(c.getTime()); System.out.println("===============first:"+first); 
//获取当前月最后一天 9. Calendar ca = Calendar.getInstance(); 
ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH)); 
String last = format.format(ca.getTime()); 
System.out.println("===============last:"+last);  

//Java 8 
LocalDate today = LocalDate.now(); 
//本月的第一天 
LocalDate firstday = LocalDate.of(today.getYear(),today.getMonth(),1); 
//本月的最后一天 
LocalDate lastDay =today.with(TemporalAdjusters.lastDayOfMonth()); 
System.out.println("本月的第一天"+firstday); 21.System.out.println("本月的最后一天"+lastDay);

测试:

(3)格式化日期

代码:

import java.text.SimpleDateFormat; 
import java.time.LocalDate; 
import java.time.format.DateTimeFormatter; 
import java.util.Date; 
class DateFormatTest { 
  public static void main(String[] args) { 
     SimpleDateFormat oldFormatter = new SimpleDateFormat("yyyy/MM/dd");
     Date date1 = new Date(); 
     System.out.println(oldFormatter.format(date1)); 
     // Java 8 
     DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd"); 
    LocalDate date2 = LocalDate.now(); 
    System.out.println(date2.format(newFormatter)); 
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值