- Map是集合容器,优胜客APP官方下载负责人Q1204007777存放的元素有键与值两部分组成,通过键可以找到所对应的值,键和值必须是引用数据类型,键是唯一的,不能重复,没有顺序。
- HashMap是Map的实现类.
- Map的添加,删除,查询
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//创建Map对象
Map<String, String> map = new HashMa p<String,String>();
//给map中添加元素
map.put( "1" , "Monday" );
map.put( "7" , "Sunday" );
System.out.println(map);
//当给Map中添加元素,会返回key对应的原来的 value值,若key没有对应的值,返回null System.out.println(map.put("1", "Mo n")); // Monday
System.out.println(map); // {星期日=Su nday, 星期一=Mon} 根据指定的key获取对应的value
String en = map.get( "1" );
System.out.println(en); // Sunday 根据key删除元素,会返回key对应的value值
String value = map.remove( "1" );
System.out.println(value); // Sunday
System.out.println(map); // {1=Mon}
|
复制代码
1
2
3
4
5
6
7
8
|
Map<String, String> map = new HashMa p<String,String>(); //给map中添加元素
map.put( "邓超" , "孙俪" );
map.put( "李晨" , "范冰冰" );
map.put( "刘德华" , "柳岩" ); //获取Map中的所有key
Set<String> keySet = map.keySe t();
for (String key : keySet){
System.out.println(map.get(ke y))
}
|
Calender
复制代码
1
2
3
4
5
6
7
8
9
|
/*
public abstract class Calendar extends Object implements Serializable, Cloneable, Comparable<Calendar> 抽象类
*/ //创建对象
Calendar calendar = Calendar.getInstance();
//get(int filed)
//获取年月日 时分秒信息
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH)+ 1 ; //从0开始算起,最大11;0代表1月,11代表12月 int date = calendar.get(Calendar.DATE); int hour = calendar.get(Calendar.HOUR);
|
复制代码
1
2
3
4
|
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
System.out.println(year+ "年" +month+ "月" +date+ "日 " +hour+ ":" +minute+ ":" +second); //2020年7月1日 11:14:46
//指定字段增加值 Calendar c = Calendar.getInstance(); //修改当前时间为3天后 c.add(Calendar.DATE, 3); //修改当前时间为5小时后 c.add(Calendar.HOUR, 5);
|
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
|
//转换日期类型
Date time = calendar.getTime();
System.out.println(time); // Wed Jul 01 11:16:10 CST 2020
//设置时间为2020年5月7日
calendar.set(Calendar.YEAR, 2020 );
calendar.set(Calendar.MONTH, 5 );
calendar.set(Calendar.DATE, 7 );
int year2 = calendar.get(Calendar.YEAR);
int month2= calendar.get(Calendar.MONTH);
int date2 = calendar.get(Calendar.DATE);
System.out.println(year2+ "年" +month2+ "月" +date2+ "日" ); //2020年5月7日
|
//使用日历计算平年闰年更为方便
Calendar c = Calendar.getInstance();
c.set(2000, 2, 1);
c.add(Calendar.DATE, -1);
int a = c.get(Calendar.DATE);
System.out.println(a);
Date
构造函数 :public Date()
分配一个 Date
对象并对其进行初始化,以便它表示分配的时间,测量到最近的毫秒。System.currentTimeMillis()
;
复制代码
1
2
3
4
|
Date date1 = new Date();
System.out.println(date1); //当前日期
Date date2 = new Date(12354356000000L);
System.out.println(date2); //指定日期
|
//日期和毫秒的转换
复制代码
Date date = new Date();
复制代码
long time = date.getTime();
复制代码
System.out.println(time);//1499169262875
复制代码
DateFormat
格式化日期类,通常用于日期和String的转换
复制代码
1
2
3
4
|
Date date2 = new Date(); //DateFormat抽象类,SimpleDateFormat是DateF ormat实现类
DateFormat df = new SimpleDateFormat( "yyy y-MM-dd E HH:mm:ss a" );
String str = df.format(date2);
System.out.println(str); //2017-07-04 星期 二 20:04:43 下午
|
日期字符串之间的抓换
复制代码
1
2
3
4
5
6
|
Date date = new Date(12354356000000L);
DateFormat df = new SimpleDateFormat(“yyy y年MM月dd日”);
String str = df.format(date);
String str = ” 2020 年 12 月 11 日”;
DateFormat df = new SimpleDateFormat(“yyy y年MM月dd日”);
Date date = df.parse(str);
|
System
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public static void main(String[] args) {
// 获取当前时间的毫秒值
System.currentTimeMillis();
// 结束当前程序
System.exit( 0 );
// 数组的拷贝
System.currentTimeMillis(); //取当前系统时间与1970年01月01日00:00点 之间的毫秒差值
System.exit( 0 ); //结束程序,通常传入0记为正常状 态,其他为异常状态
int [] src = new int []{ 1 , 2 , 3 , 4 , 5 };
int [] dest = new int []{ 6 , 7 , 8 , 9 , 10 }; //源数组,源数组的起始位置,目标数组,目标数组的起 始位置,目标数组的长度
System.arraycopy( src, 0 , dest, 0 , 3 ); //src数组元素[1,2,3,4,5] //dest数组元素[1,2,3,9,10]
}
|
Math
- abs方法,结果都为正数
-
复制代码
1
2
|
double d1 = Math.abs(- 5 ); // d1的值为5
double d2 = Math.abs( 5 ); // d2的值为5
|
- ceil方法,结果为比参数值大的最小整数的double值
-
复制代码
1
2
3
|
double d1 = Math.ceil( 3.3 ); //d1的值为 4.0
double d2 = Math.ceil(- 3.3 ); //d2的值为 -3.0
double d3 = Math.ceil( 5.1 ); // d3的值为 6.0
|
- floor方法,结果为比参数值小的最大整数的double值
-
复制代码
1
2
3
|
double d1 = Math.floor( 3.3 ); //d1的值为3.0
double d2 = Math.floor(- 3.3 ); //d2的值 为-4.0
double d3 = Math.floor( 5.1 ); //d3的值为 5.0
|
- max方法,返回两个参数值中较大的值
-
复制代码
1
2
|
double d1 = Math.max( 3.3 , 5.5 ); //d1的值为 5.5
double d2 = Math.max(- 3.3 , - 5.5 ); //d2的 值为-3.3
|
- min方法,返回两个参数值中较小的值
-
复制代码
1
2
|
double d1 = Math.min( 3.3 , 5.5 ); //d1的值为 3.3
double d2 = Math.max(- 3.3 , - 5.5 ); //d2的 值为-5.5
|
- pow方法,返回第一个参数的第二个参数次幂的值
-
复制代码
1
2
|
double d1 = Math.pow( 2.0 , 3.0 ); //d1的值为 8.0
double d2 = Math.pow( 3.0 , 3.0 ); //d2的值为 27.0
|
- round方法,返回参数值四舍五入的结果
-
复制代码
1
2
|
double d1 = Math.round( 5.5 ); //d1的值为6.0
double d2 = Math.round( 5.4 ); //d2的值为5.0
|
- random方法,产生一个大于等于0.0且小于1.0的double小数
-
复制代码
1
2
3
4
|
double d1 = Math.random();
//得到的 是[0,1)的小数
//锁定范围获取 a-b整数
int a = ( int )(Math.random()*(b-a+ 1 ))+a
|
包装类
包装类的作用实现基本数据类型和字符串之间的转换字符串,基本数据类型,
包装类型转换字符串转换基本数据类型需要调用包装类 包装类.parse基本数据类型("字符串");
int a = Integer.parseInt("12");
基本数据类型转换字符串 String str = ""+基本数据类型;
或者 String str =String.valueOf(34);
基本数据类型转换包装类型: Integer obj =Interger.valueOf(3);
包装类型转换基本数据类型: int a =obj.intValue();
jdk1.5以后系统提供自动装箱:int和integer可以自动转换
大数据运算
BigInteger
大数据整数的加,减,乘,除
复制代码
1
2
3
4
5
|
//大数据封装为BigInteger对象
BigInteger big1 = new BigInteger( "12345 678909876543210" );
BigInteger big2 = new BigInteger( "98765 432101234567890" ); //add实现加法运算
BigInteger bigAdd = big1.add(big2); System.out.println(bigAdd); //subtract实现减法运算
BigInteger bigSub = big1.subtract(big 2 ); System.out.println(bigSub); //multiply实现乘法运算 BigInteger bigMul = big1.multiply(big 2);System.out.println(bigMul); //divide实现除法运算 BigInteger bigDiv = big2.divide(big1); System.out.println(bigDiv);
|
BigDecimal
有些时候操作小数的,会出现精度问题如
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
|
System.out.println( 0.09 + 0.01 ); //0.0999999 9999999999 <br>System.out.println(1.201*100);//120.10000 000000001
//大数据封装为BigDecimal对象
BigDecimal big1 = new BigDecimal( "0.09" );
BigDecimal big2 = new BigDecimal( "0.01" ); //add实现加法运算
BigDecimal bigAdd = big1.add(big2); System.out.println(bigAdd );
BigDecimal big3 = new BigDecimal( "1.0" );
BigDecimal big4 = new BigDecimal( "0.32" ); //subtract实现减法运算
BigDecimal bigSub = big3.subtract(big4);
System.out.println(bigSub);
BigDecimal big5 = new BigDecimal( "1.10 5" );
BigDecimal big6 = new BigDecimal( "100" ); //multiply实现乘法运算
BigDecimal bigMul = big5.multiply(big6); System.out.println(bigMul); //divide实现除法
BigDecimal bigDiv = big5.divide(big6, 2 ,Bi gDecimal.ROUND_UP);
|
Arrays
复制代码
1
2
3
4
5
6
7
8
9
|
使用二分查找搜索指定 int 类型数组
int [] arr = { 1 , 3 , 4 , 5 , 6 };
int index = Arrays.binarySearch(arr, 4 ); //index的值为2
int index2= Arrasy.binarySearch(arr, 2 ); //index2的值为-1
数组升序排序
int [] arr = { 1 , 5 , 9 , 3 , 7 };
Arrays.sort( arr );
将数组的内容以字符串形式呈现
int [] arr = { 1 , 5 , 9 , 3 , 7 }; String str = Arrays.toString(arr); // str 的值为[1, 3, 5, 7, 9]
|
异常
如果产生异常的地方没有对他处理,那么会向上抛出,抛向调用者,如果调用者没有对异常作出处理,会给jvm处理,jvm会找到自己内部能不能识别到该异常信息对应的类,如果找到了,会构建一个异常的对象,会把异常产生的原因,异常产生的位置,异常产生的内容封装进该对象中在控制台显现出来,并且终止程序。
throwable类中
public String getMessage()返回此throwable的详细消息字符串。在Throwable类的下的子类Error异常情况是无法解决的,属于硬伤,作为程序员能够解决的是Exception这种类型的异常情况。
Exception:
编译期异常:通过使用集成开发工具在编写程序的时候,就出现的异常问题,如果不处理,程序无法继进行,需要程序员立刻对异常做出处理,否则无法编写。
运行期异常:在编译之后,程序在运行过程中产生的异常问题,JM把异常信息抛出,一般是由于逻辑错误导致的异常情况,通过优化你的代码可以解决掉的
编译期异常:除了RunTimeException异常之外,其余的都是编译期异常。
运行期异常:
算术异常:Ari thmeticException
空指针异常:Null PointerException
越界异常:IndexOutOfBoundsException
类转换异常:ClassCastException
