JAVA SE (4)

–> JAVA SE (3)

Java数组

数组用来存储固定大小同类型的元素。
声明-创建-初始化:
声明

//两者均可,但是首选char[] ch;
char[] ch ;
char ch[] ;

创建数组
1、java使用new关键字创建数组。

ch = new Char[100];  

上面一句包含了两步:1、new Char[100],创建了一个数组;2、ch = ,把刚刚创建的数组的引用赋值给ch。
2、

char[] ch = {"hello","TxL","!"};

访问
数组索引从0开始。
在不使用下标的情况下遍历数组(for-each循环或称加强型循环):

//接上面代码
for (char c : ch){
	System.out.println(c);
}

多维数组
数组的数组,如二维数组就是要一个特殊的一位数组,每个元素为一个一维数组。

//1、
int [][] in = new int[3][4];
for (int i = 0; i < 3 ; i++){
	for(int j = 0 ; j < 4 ; j++){
		in[i][j] = i + j;
	}
}

//2、
int[][] a =  {{1,2,3},{4,5,6}};

//3、比较特别,第二维的长度可以动态申请
int[][] b = new int[3][];
for(int i = 0 ; i < b.length ; i++){
	b[i] = new int[i + 1];
	for(int j = 0 ; j < b[i].length ; j++){
		b[i][j] = j;
	}
}


Arrays
java.util.Arrays类可以方便的操作数组,而且提供的方法均是静态的。
常用的方法有:赋值(fill)、排序(sort)、比较(equals)、查找(binarySearch,对排序好的数组进行二分法查找)

方法描述
static int binarySearch(Object[] a,Object key)若找到则返回索引,若找不到的话,返回(-(插入点)-1)
static boolean equals(long[] a, long[] a2)完全相等,返回true;元素数量相同且相应位置元素相等,则true
static void fill(int[] a,int val)将val覆盖a中指定位置
static void sort(Object[] a)将a数组升序排序
static void copyOf(int[] a,newLength)扩充数组

日期时间

java.util包提供了Date类封装当前的日期时间。Date类提供了2个构造函数来实例化Date对象,即无参和带参(参数为从1970年起的毫秒数)的构造函数。

方法描述
boolean after/before(Date date)指定日期之后/之前
Object clone()返回对象的副本
int compareTo(Date date)返回正、负、0
boolean equals(Object date)返回true/false
long getTime()返回毫秒数
String toString()Date对象转为 dow mon dd hh:mm:ss zzz yyyy(如:Mon May 04 09:09:34 CDT 2018)

SimpleDateFormat类格式化日期

自定义日期时间格式

//1、格式类对象创建时输入格式字符串  
//2、格式类对象调用format方法

public Class SdfDemo{
	public static void main(String[] args){
		Date d = new Date();
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");		//HH是24小时制,hh是12小时制
		System.out.println(sdf1.format(d));
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");
		System.out.println(sdf2.format(d));
	}
}

更为轻松的格式化方法:printf(摘自菜鸟教程)
以%t开头

public class DateDemo {
 
  public static void main(String args[]) {
     // 初始化 Date 对象
     Date date = new Date();
 
     //c的使用  
    System.out.printf("全部日期和时间信息:%tc%n",date);          
    //f的使用  
    System.out.printf("年-月-日格式:%tF%n",date);  
    //d的使用  
    System.out.printf("月/日/年格式:%tD%n",date);  
    //r的使用  
    System.out.printf("HH:MM:SS PM格式(12时制):%tr%n",date);  
    //t的使用  
    System.out.printf("HH:MM:SS格式(24时制):%tT%n",date);  
    //R的使用  
    System.out.printf("HH:MM格式(24时制):%tR",date);  
  }
}

输出结果

全部日期和时间信息:星期一 九月 10 10:43:36 CST 2012  
年-月-日格式:2012-09-10  
月/日/年格式:09/10/12  
HH:MM:SS PM格式(12时制):10:43:36 上午  
HH:MM:SS格式(24时制):10:43:36  
HH:MM格式(24时制):10:43 

解析字符串为时间-parse-Date parse(String str),其中str为解析成的日期格式
按照给定的SimpleDateFormat对象格式化存储解析字符串。
字符串---->时间

//将日期转换为对应的格式容易,但是将字符串转换为对应格式的日期Date比之稍微麻烦
public class Test{
	public static void main(String[] args){
		String str1 = "20190327";
		String str2 = "2019-03-27";
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
		Date d1 = sdf1.parse(str1);
		Date d2 = sdf2.parse(str2);
		System.out.println(d1);
		System.out.println(d2);
		//报错
		//Date d3 = sdf1.parse(str2); //格式不匹配
	}
}

sleep
使得当前线程进入停滞状态,阻塞当前线程,不让当前线程获取cpu资源。
Thread.sleep(1000*3); //休眠3秒


Calendar类-抽象类

设置、获取日期数据的特定部分。
getInstance():创建一个代表当前系统日期的对象。

//代表当前日期
Calendar cld1 = Calendar.getInstance();
//代表特定日期
cld1.set(2009,6-1,12);//年月日设为2009,6,12。Calendar的月份是从0开始的,日期和年份是从1开始
//设置某一属性的值
cld1.set(Calendar.YEAR,2008); //其余的数值会被重新计算。。。

//add
cld1.add(Calendar.Date,-10);//十天前的日期

//get
Calendar c1 = Calendar.getInstance();
// 获得年份
int year = c1.get(Calendar.YEAR);
// 获得月份
int month = c1.get(Calendar.MONTH) + 1;
// 获得日期
int date = c1.get(Calendar.DATE);
// 获得小时
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 获得分钟
int minute = c1.get(Calendar.MINUTE);
// 获得秒
int second = c1.get(Calendar.SECOND);
// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
int day = c1.get(Calendar.DAY_OF_WEEK);

–> JAVA SE (5)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值