Java笔记(包装类、字符串、集合、时间)

1 包装类

简单的以 Integer 类为例,其余的包装类的常用方法都差不多就是这些,需要的时候可以再到官网API文档中查询。

1.1 Integer

官网API

实例 常用方法:

  • doubleValue():转换为 double 类型
  • shortValue():转换为 short 类型
  • intValue():转换为 int 类型
  • longValue():转换为 long 类型
  • toString():转为 String 类型

静态 常用方法:

  • int Integer.parseInt(String str):字符串转换为 int 类型
  • int Integer.toString(int i)int 类型转换为字符串
  • Integer Integer.valueOf(int i)int 类型转换为 Integer
  • Integer Integer.valueOf(String str)String 类型转换为 Integer

2 字符串

2.1 String

官网API

常用的构造函数:

  • String(char[] value)
  • String(char[] value, int offset, int count)
  • String(StringBuilder builder)

实例 常用方法:

  • format(String format, Object... args):格式化字符串,这里有 String.format()用法
  • contains(CharSequence s):是否包含某些字符
  • indexOf(String str):返回索引
  • lastIndexOf(String str)
  • indexOf(String str, int fromIndex):返回索引
  • lastIndexOf(String str, int fromIndex)
  • isEmpty():是否为空
  • length():返回长度
  • matches(String regex):正则表达式匹配
  • replace(CharSequence target, CharSequence replacement):匹配的,全部替代掉
  • replaceAll(String regex, String replacement):正则表达式匹配的,全部替代掉
  • replaceFirst(String regex, String replacement):只替代第一个匹配的
  • String[] split(String regex):根据正则表达式分割成字符串数组
  • substring(int beginIndex):根据字符串索引返回字符串
  • substring(int beginIndex, int endIndex)
  • toCharArray()
  • trim():清除左右的空格符

静态 常用方法:

  • String String.join(CharSequence delimiter, Iterable<? extends CharSequence> elements):使用某个字符串将一系列字符连接起来
  • String String.valueOf(boolean b):布尔值转换为字符串,同理还有其余的基本数据类型

2.1 StringBuilder

官网API

实例 常用方法:

  • append(CharSequence s):在结尾处添加字符,含有一些重载该方法,自行查看api
  • StringBuilder delete(int start, int end):删除某些字符
  • indexOf(String str):返回索引
  • indexOf(String str, int fromIndex)
  • insert(int dstOffset, CharSequence s):插入字符串
  • length():返回长度
  • replace(int start, int end, String str):替代字符串
  • String substring(int start):返回索引范围中的字符串 String 类型
  • String substring(int start, int end):返回索引范围中的 String 类型

3 集合

一个 Java 对象可以在内部持有其它若干个Java对象,并对外提供访问接口,我们称这个 Java 对象为集合,Java 的数组可以看做一个集合,然而数组初始化后大小不可变,同时它按索引顺序存取,不灵活。

JDK自带的 java.util 包提供了常用的集合类:

  • 实现 Collection 接口的:
    • 实现 List 接口的,一种有序列表,主要有 ArrayList
    • 实现 Set 接口的,一种保证没有重复对象的集合,主要有 HashSet
  • 实现 Map 接口的,一种通过 Key 查找 Value 的映射表集合,主要有 HashMap

3.1 ArrayList

官网API

常用构造函数:

  • ArrayList(Collection<? extends E> c)

实例 常用方法:

  • add(E e):结尾添加元素
  • add(int index, E element):特定位置添加元素
  • addAll(Collection<? extends E> c):结尾添加集合
  • addAll(int index, Collection<? extends E> c):特定位置添加集合
  • clear():清空
  • clone():复制
  • contains(Object o):是否包含某元素
  • forEach(Consumer<? super E> action):循环
  • get(int index):根据索引获取数值
  • indexOf(Object o):根据数值获取索引
  • isEmpty():判断是否为空
  • iterator():获取 iterator 迭代器
  • remove(int index):删除某个元素
  • removeRange(int fromIndex, int toIndex):删除某些元素
  • set(int index, E element):重置某些元素
  • size():获取长度
  • sort(Comparator<? super E> c):排序
  • subList(int fromIndex, int toIndex):获取子集合
  • toArray(T[] a):转化为数组

3.2 HashMap

官网API

常用构造函数:

  • HashMap(Map<? extends K,? extends V> m)

实例 常用方法:

  • clear():清空
  • clone():复制
  • containsKey(Object key):是否包含某个 key
  • containsValue(Object value):是否包含某个 value
  • Set<Map.Entry<K,V>> entrySet():获取 entry 对象的 set 集合
  • forEach(BiConsumer<? super K,? super V> action):循环
  • get(Object key):根据 key 值获取数据
  • getOrDefault(Object key, V defaultValue):根据 key 值获取数据,若没有 key 值返回默认值
  • isEmpty():是否为空
  • put(K key, V value):添加对象
  • remove(Object key):移除对象
  • replace(K key, V value):重置对象
  • size():返回大小

4 时间

JDK 有两套操作事件的 API,分别定义在下面两个包里:

  • java.util:主要包括 Date 类和 Calendar
  • java.time(JDK>=1.8)

4.1 Date

Date 实例获取时间戳是使用 getTime 方法
Date 实例转换为字符串,初始化 SimpleDateFormat 实例,声明输出字符串格式:

Date date = new Date();
System.out.println("获取当前时间戳:" + date.getTime());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 年-月-日 时-分-秒
System.out.println("格式化输出日期:" + simpleDateFormat.format(date));

字符串转换为 Date 实例:

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(simpleDateFormat.parse("2018-11-11").getDate());

4.2 Calendar

Calendar 是一个抽象类,他通过静态方法 getInstance 获取子类实例,如:

Calendar rightNow = Calendar.getInstance();

Calendar 类的常用方法都是直接修改源 Calendar 对象,而非返回一个新的 Calendar 对象:

  • void setTime(Date date)Date 转换为 Calendar
  • void set(int field, int value):自定义日期,其中 fieldCalendar 字段,amout 是时间量,下同
  • void set(int year, int month, int date):自定义日期
  • void clear():清除此前变量定义过的日期信息
  • abstract void add(int field, int amount):添加或减去指定的时间量
  • int getActualMaximum(int field):获取 Calendar 实例给定日历字段的最大值,如该年的总天数,该月份的总天数等
  • Date getTime():返回 Date 对象
  • long getTimeInMillis():返回时间戳
  • boolean after(Calendar day1):返回日期是否在 day1 之后
  • boolean before(Calendar day1):返回日期是否在 day1 之前

eg:

// 初始化 Calendar,默认当前日期
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
int weekday = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 英语国家的星期从星期天开始,即数字1表示星期天
System.out.println(year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second + " " + weekday);

// Date 转化 Calendar
calendar.clear(); // 清除此前变量定义过的日期信息
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
calendar.setTime(simpleDateFormat.parse("2018-11-11"));
System.out.println(calendar.get(Calendar.MONTH) + 1);
		
// 自定义日期 Calendar
calendar.clear(); // 清除此前变量定义过的日期信息
calendar.set(Calendar.YEAR, 2018);
calendar.set(Calendar.MONTH, 7); // 这里输入 0 表示 1月
calendar.set(Calendar.DATE, 21);
System.out.println(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH)+1) + "-" + calendar.get(Calendar.DAY_OF_MONTH));
	
// Calendar 转化为 Date
Date date = calendar.getTime();
System.out.println(simpleDateFormat.format(date)); // 2018-08-21
System.out.println(date.getTime()); // 时间戳
System.out.println(calendar.getTimeInMillis()); // 时间戳
		
// 获取年份,月份的天数信息
System.out.println("2018的天数:" + calendar.getActualMaximum(Calendar.DAY_OF_YEAR));
System.out.println("2018-8月的天数:" + calendar.getActualMaximum(Calendar.DATE));

// add 方法为某日期增加时间段
System.out.println("2018-8-21 增加十天后");
calendar.add(Calendar.DAY_OF_MONTH, 20);
System.out.println(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH)+1) + "-" + calendar.get(Calendar.DAY_OF_MONTH));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值