进阶笔记(二)

目录

1.StringBulider/StringBuffer

2.Math(工具类)

3.System(工具类)

4.BigDecimal

5.jdk1.8版本之后的时间的api

5.1LocalDate

5.2LocalTime

5.3LocalDateTime

5.4ZoneId与ZonedDateTime

5.5Instant

5.6DateTimeFormat

5.7Period与Duration


继学完面向对象这一部分内容之后,我们开始学习了API,首先什么是API,Api通俗来讲就是jdk提供的方法我们只需要拿来用即可,到目前为止 ,我们学习了,StringBulider/StringBuffer,Math,System,BigDecimal,还有jdk1.8之后的有关于时间的一些Api。

1.StringBulider/StringBuffer

1.作用,主要就是实现字符串的拼接,与传统的拼接字符串的方法相比StringBulider只需要new一次对象,然后使用它里面特有的方法,例如下:

StringBuilder s = new StringBuilder();
s.append("添加元素");

*StringBulider的append方法是一个重载方法,里面可以放任意数据类型。

2.StringBulider与StringBuffer的区别

这个区别主要在于线程安不安全,StringBuffer线程是安全的,而StringBulider不是。

2.Math(工具类)

这个api它是一个工具类,首先我们要知道什么是工具类,浅浅复习一下,工具类就是将一些具有复用性的功能代码,我们把他们抽取到一个类里面然后封装起来,这就是工具类,然后就是工具类的组成,说了N次,我感觉我自己已经特别了解它了,工具类首先就是构造器私有(就是为了不让你new对象罢了),然后就是工具类里面的方法他都是类方法,用不了构造器没关系,我们只需要记得类方法他的特点就OK,固定调用类方法格式:类名.方法名,妈妈再也不用担心我为不能用构造器调方法而烦恼了,然后上一次在面向对象哪里总结的时候,我们还提到了一个关键字叫final,以后在工作中,我们自己写的工具类和类方法就可以用这个关键字修饰,再也不用担心同事会copy我们的类,这就大大限制了他的权限,不能继承类并且不能重写我们的方法,OK进入正题。

这里我们使用Math的时候,就是,类名.方法名,具体方法如下:

Math.abs();//取绝对值
Math.pow();//取次幂
Math.min();//取最小值
Math.max();//取最大值
Math.random();//取0~1.0的随机数
Math.floor();//向下取整
Math.ceil();//向上取整

3.System(工具类)

System对于我们来说已经是比较熟悉了,当然是在输出语句中用的比较多一丢丢,这里我们直接上方法。

System.currentTimeMillis();//获取当前系统的时间,是long类型的。
System.exit(-1);//结束进程

第二个我放个图以便于你们更好的理解

这里我们可以看见使用了System.exit方法之后会直接结束程序并且不会执行下面的程序,括号里的形参值就是退出代码。

4.BigDecimal

与Math类不同的是这个类主要用于处理浮点数的精度缺失问题,像银行啊一些金融机构的系统里这个就会用的多一些,话不多说,直接上方法。

BigDecimal b = new BigDecimal(1.0);
BigDecimal b1 = new BigDecimal(2.0);
b.add(b1);
b.subtract(b1);
b.multiply(b1);
b.divide(b1);

这里要特别注意的是最后一个除法,直接这样写的话如果遇到除不尽的数的话,他就会报一个错,如下

这个时候我们应该给除数加上精度数和舍入模式,如下:

System.out.println(b1.divide(b,3 ,RoundingMode.HALF_UP));

这样就能很好的解决遇到除不尽数的问题

5.jdk1.8版本之后的时间的api

这里面又包含了九种,他们分别是LocalDate,LocalTime,LocalDateTime,ZoneId,ZonedDateTime,Instant,DateTimeFormat,Period,Duration首先看见这一堆人就头大,没关系,我会出手。

5.1LocalDate

这个是存放,年月日的一个对象,方法如下:

LocalDate l = LocalDate.now();//先获取一个时间,我获取的是当前时间
l.plusYears(1);//给年份加上1
l.minusMonths(1);//月份减1
l.getDayOfMonth();//获取当前这一天是这个月的第几天
l.withYear(2008);//更改年份

OK,第一个算大功告成~

5.2LocalTime

见名知意,这个是存放时分秒的对象,方法如下:

LocalTime l = LocalTime.now();
l.getHour();//获取时,下同。
l.getNano();//这个是纳秒
l.getMinute();
l.getSecond();
l.plusHours(1);//给时加1,下同
l.plusMinutes(5);
l.plusSeconds(3); 
l.plusNano(3);

5.3LocalDateTime

这个当然就是存放年月日时分秒的对象了,涵盖了以上两个所有的用法,在即不多说了,因为太懒~~~~

5.4ZoneId与ZonedDateTime

为了便于理解我把这两个放在一起说~~,简而言之就是求得时区对象的时间,那么在算时区时间之前,我们要先知道时区的ID,再去算时区的时间。例如下:

Set<String> a = ZoneId.getAvailableZoneIds();
//这一步求的是我们能够知道的地方时区
System.out.println(a);
ZoneId z1 = ZoneId.systemDefault();
//这个是求我们所在的时区
System.out.println(z1);
ZoneId zoneId = ZoneId.of("Canada/Yukon");
//这里就以加拿大为例求时区的时间
ZonedDateTime z3 = ZonedDateTime.now(zoneId);
System.out.println(z3);

输出结果如下:

打印的第一个结果我没有截图完,我把能求时区的地方名放在下面

[Asia/Aden, America/Cuiaba, Etc/GMT+9, Etc/GMT+8, Africa/Nairobi, America/Marigot, Asia/Aqtau, Pacific/Kwajalein, America/El_Salvador, Asia/Pontianak, Africa/Cairo, Pacific/Pago_Pago, Africa/Mbabane, Asia/Kuching, Pacific/Honolulu, Pacific/Rarotonga, America/Guatemala, Australia/Hobart, Europe/London, America/Belize, America/Panama, Asia/Chungking, America/Managua, America/Indiana/Petersburg, Asia/Yerevan, Europe/Brussels, GMT, Europe/Warsaw, America/Chicago, Asia/Kashgar, Chile/Continental, Pacific/Yap, CET, Etc/GMT-1, Etc/GMT-0, Europe/Jersey, America/Tegucigalpa, Etc/GMT-5, Europe/Istanbul, America/Eirunepe, Etc/GMT-4, America/Miquelon, Etc/GMT-3, Europe/Luxembourg, Etc/GMT-2, Etc/GMT-9, America/Argentina/Catamarca, Etc/GMT-8, Etc/GMT-7, Etc/GMT-6, Europe/Zaporozhye, Canada/Yukon, Canada/Atlantic, Atlantic/St_Helena, Australia/Tasmania, Libya, Europe/Guernsey, America/Grand_Turk, Asia/Samarkand, America/Argentina/Cordoba, Asia/Phnom_Penh, Africa/Kigali, Asia/Almaty, US/Alaska, Asia/Dubai, Europe/Isle_of_Man, America/Araguaina, Cuba, Asia/Novosibirsk, America/Argentina/Salta, Etc/GMT+3, Africa/Tunis, Etc/GMT+2, Etc/GMT+1, Pacific/Fakaofo, Africa/Tripoli, Etc/GMT+0, Israel, Africa/Banjul, Etc/GMT+7, Indian/Comoro, Etc/GMT+6, Etc/GMT+5, Etc/GMT+4, Pacific/Port_Moresby, US/Arizona, Antarctica/Syowa, Indian/Reunion, Pacific/Palau, Europe/Kaliningrad, America/Montevideo, Africa/Windhoek, Asia/Karachi, Africa/Mogadishu, Australia/Perth, Brazil/East, Etc/GMT, Asia/Chita, Pacific/Easter, Antarctica/Davis, Antarctica/McMurdo, Asia/Macao, America/Manaus, Africa/Freetown, Europe/Bucharest, Asia/Tomsk, America/Argentina/Mendoza, Asia/Macau, Europe/Malta, Mexico/BajaSur, Pacific/Tahiti, Africa/Asmera, Europe/Busingen, America/Argentina/Rio_Gallegos, Africa/Malabo, Europe/Skopje, America/Catamarca, America/Godthab, Europe/Sarajevo, Australia/ACT, GB-Eire, Africa/Lagos, America/Cordoba, Europe/Rome, Asia/Dacca, Indian/Mauritius, Pacific/Samoa, America/Regina, America/Fort_Wayne, America/Dawson_Creek, Africa/Algiers, Europe/Mariehamn, America/St_Johns, America/St_Thomas, Europe/Zurich, America/Anguilla, Asia/Dili, America/Denver, Africa/Bamako, Europe/Saratov, GB, Mexico/General, Pacific/Wallis, Europe/Gibraltar, Africa/Conakry, Africa/Lubumbashi, Asia/Istanbul, America/Havana, NZ-CHAT, Asia/Choibalsan, America/Porto_Acre, Asia/Omsk, Europe/Vaduz, US/Michigan, Asia/Dhaka, America/Barbados, Europe/Tiraspol, Atlantic/Cape_Verde, Asia/Yekaterinburg, America/Louisville, Pacific/Johnston, Pacific/Chatham, Europe/Ljubljana, America/Sao_Paulo, Asia/Jayapura, America/Curacao, Asia/Dushanbe, America/Guyana, America/Guayaquil, America/Martinique, Portugal, Europe/Berlin, Europe/Moscow, Europe/Chisinau, America/Puerto_Rico, America/Rankin_Inlet, Pacific/Ponape, Europe/Stockholm, Europe/Budapest, America/Argentina/Jujuy, Australia/Eucla, Asia/Shanghai, Universal, Europe/Zagreb, America/Port_of_Spain, Europe/Helsinki, Asia/Beirut, Asia/Tel_Aviv, Pacific/Bougainville, US/Central, Africa/Sao_Tome, Indian/Chagos, America/Cayenne, Asia/Yakutsk, Pacific/Galapagos, Australia/North, Europe/Paris, Africa/Ndjamena, Pacific/Fiji, America/Rainy_River, Indian/Maldives, Australia/Yancowinna, SystemV/AST4, Asia/Oral, America/Yellowknife, Pacific/Enderbury, America/Juneau, Australia/Victoria, America/Indiana/Vevay, Asia/Tashkent, Asia/Jakarta, Africa/Ceuta, Asia/Barnaul, America/Recife, America/Buenos_Aires, America/Noronha, America/Swift_Current, Australia/Adelaide, America/Metlakatla, Africa/Djibouti, America/Paramaribo, Asia/Qostanay, Europe/Simferopol, Europe/Sofia, Africa/Nouakchott, Europe/Prague, America/Indiana/Vincennes, Antarctica/Mawson, America/Kralendijk, Antarctica/Troll, Europe/Samara, Indian/Christmas, America/Antigua, Pacific/Gambier, America/Indianapolis, America/Inuvik, America/Iqaluit, Pacific/Funafuti, UTC, Antarctica/Macquarie, Canada/Pacific, America/Moncton, Africa/Gaborone, Pacific/Chuuk, Asia/Pyongyang, America/St_Vincent, Asia/Gaza, Etc/Universal, PST8PDT, Atlantic/Faeroe, Asia/Qyzylorda, Canada/Newfoundland, America/Kentucky/Louisville, America/Yakutat, America/Ciudad_Juarez, Asia/Ho_Chi_Minh, Antarctica/Casey, Europe/Copenhagen, Africa/Asmara, Atlantic/Azores, Europe/Vienna, ROK, Pacific/Pitcairn, America/Mazatlan, Australia/Queensland, Pacific/Nauru, Europe/Tirane, Asia/Kolkata, SystemV/MST7, Australia/Canberra, MET, Australia/Broken_Hill, Europe/Riga, America/Dominica, Africa/Abidjan, America/Mendoza, America/Santarem, Kwajalein, America/Asuncion, Asia/Ulan_Bator, NZ, America/Boise, Australia/Currie, EST5EDT, Pacific/Guam, Pacific/Wake, Atlantic/Bermuda, America/Costa_Rica, America/Dawson, Asia/Chongqing, Eire, Europe/Amsterdam, America/Indiana/Knox, America/North_Dakota/Beulah, Africa/Accra, Atlantic/Faroe, Mexico/BajaNorte, America/Maceio, Etc/UCT, Pacific/Apia, GMT0, America/Atka, Pacific/Niue, Australia/Lord_Howe, Europe/Dublin, Pacific/Truk, MST7MDT, America/Monterrey, America/Nassau, America/Jamaica, Asia/Bishkek, America/Atikokan, Atlantic/Stanley, Australia/NSW, US/Hawaii, SystemV/CST6, Indian/Mahe, Asia/Aqtobe, America/Sitka, Asia/Vladivostok, Africa/Libreville, Africa/Maputo, Zulu, America/Kentucky/Monticello, Africa/El_Aaiun, Africa/Ouagadougou, America/Coral_Harbour, Pacific/Marquesas, Brazil/West, America/Aruba, America/North_Dakota/Center, America/Cayman, Asia/Ulaanbaatar, Asia/Baghdad, Europe/San_Marino, America/Indiana/Tell_City, America/Tijuana, Pacific/Saipan, SystemV/YST9, Africa/Douala, America/Chihuahua, America/Ojinaga, Asia/Hovd, America/Anchorage, Chile/EasterIsland, America/Halifax, Antarctica/Rothera, America/Indiana/Indianapolis, US/Mountain, Asia/Damascus, America/Argentina/San_Luis, America/Santiago, Asia/Baku, America/Argentina/Ushuaia, Atlantic/Reykjavik, Africa/Brazzaville, Africa/Porto-Novo, America/La_Paz, Antarctica/DumontDUrville, Asia/Taipei, Antarctica/South_Pole, Asia/Manila, Asia/Bangkok, Africa/Dar_es_Salaam, Poland, Atlantic/Madeira, Antarctica/Palmer, America/Thunder_Bay, Africa/Addis_Ababa, Asia/Yangon, Europe/Uzhgorod, Brazil/DeNoronha, Asia/Ashkhabad, Etc/Zulu, America/Indiana/Marengo, America/Creston, America/Punta_Arenas, America/Mexico_City, Antarctica/Vostok, Asia/Jerusalem, Europe/Andorra, US/Samoa, PRC, Asia/Vientiane, Pacific/Kiritimati, America/Matamoros, America/Blanc-Sablon, Asia/Riyadh, Iceland, Pacific/Pohnpei, Asia/Ujung_Pandang, Atlantic/South_Georgia, Europe/Lisbon, Asia/Harbin, Europe/Oslo, Asia/Novokuznetsk, CST6CDT, Atlantic/Canary, America/Knox_IN, Asia/Kuwait, SystemV/HST10, Pacific/Efate, Africa/Lome, America/Bogota, America/Menominee, America/Adak, Pacific/Norfolk, Europe/Kirov, America/Resolute, Pacific/Kanton, Pacific/Tarawa, Africa/Kampala, Asia/Krasnoyarsk, Greenwich, SystemV/EST5, America/Edmonton, Europe/Podgorica, Australia/South, Canada/Central, Africa/Bujumbura, America/Santo_Domingo, US/Eastern, Europe/Minsk, Pacific/Auckland, Africa/Casablanca, America/Glace_Bay, Canada/Eastern, Asia/Qatar, Europe/Kiev, Singapore, Asia/Magadan, SystemV/PST8, America/Port-au-Prince, Europe/Belfast, America/St_Barthelemy, Asia/Ashgabat, Africa/Luanda, America/Nipigon, Atlantic/Jan_Mayen, Brazil/Acre, Asia/Muscat, Asia/Bahrain, Europe/Vilnius, America/Fortaleza, Etc/GMT0, US/East-Indiana, America/Hermosillo, America/Cancun, Africa/Maseru, Pacific/Kosrae, Africa/Kinshasa, Asia/Kathmandu, Asia/Seoul, Australia/Sydney, America/Lima, Australia/LHI, America/St_Lucia, Europe/Madrid, America/Bahia_Banderas, America/Montserrat, Asia/Brunei, America/Santa_Isabel, Canada/Mountain, America/Cambridge_Bay, Asia/Colombo, Australia/West, Indian/Antananarivo, Australia/Brisbane, Indian/Mayotte, US/Indiana-Starke, Asia/Urumqi, US/Aleutian, Europe/Volgograd, America/Lower_Princes, America/Vancouver, Africa/Blantyre, America/Rio_Branco, America/Danmarkshavn, America/Detroit, America/Thule, Africa/Lusaka, Asia/Hong_Kong, Iran, America/Argentina/La_Rioja, Africa/Dakar, SystemV/CST6CDT, America/Tortola, America/Porto_Velho, Asia/Sakhalin, Etc/GMT+10, America/Scoresbysund, Asia/Kamchatka, Asia/Thimbu, Africa/Harare, Etc/GMT+12, Etc/GMT+11, Navajo, America/Nome, Europe/Tallinn, Turkey, Africa/Khartoum, Africa/Johannesburg, Africa/Bangui, Europe/Belgrade, Jamaica, Africa/Bissau, Asia/Tehran, WET, Europe/Astrakhan, Africa/Juba, America/Campo_Grande, America/Belem, Etc/Greenwich, Asia/Saigon, America/Ensenada, Pacific/Midway, America/Jujuy, Africa/Timbuktu, America/Bahia, America/Goose_Bay, America/Virgin, America/Pangnirtung, Asia/Katmandu, America/Phoenix, Africa/Niamey, America/Whitehorse, Pacific/Noumea, Asia/Tbilisi, Europe/Kyiv, America/Montreal, Asia/Makassar, America/Argentina/San_Juan, Hongkong, UCT, Asia/Nicosia, America/Indiana/Winamac, SystemV/MST7MDT, America/Argentina/ComodRivadavia, America/Boa_Vista, America/Grenada, Asia/Atyrau, Australia/Darwin, Asia/Khandyga, Asia/Kuala_Lumpur, Asia/Famagusta, Asia/Thimphu, Asia/Rangoon, Europe/Bratislava, Asia/Calcutta, America/Argentina/Tucuman, Asia/Kabul, Indian/Cocos, Japan, Pacific/Tongatapu, America/New_York, Etc/GMT-12, Etc/GMT-11, America/Nuuk, Etc/GMT-10, SystemV/YST9YDT, Europe/Ulyanovsk, Etc/GMT-14, Etc/GMT-13, W-SU, America/Merida, EET, America/Rosario, Canada/Saskatchewan, America/St_Kitts, Arctic/Longyearbyen, America/Fort_Nelson, America/Caracas, America/Guadeloupe, Asia/Hebron, Indian/Kerguelen, SystemV/PST8PDT, Africa/Monrovia, Asia/Ust-Nera, Egypt, Asia/Srednekolymsk, America/North_Dakota/New_Salem, Asia/Anadyr, Australia/Melbourne, Asia/Irkutsk, America/Shiprock, America/Winnipeg, Europe/Vatican, Asia/Amman, Etc/UTC, SystemV/AST4ADT, Asia/Tokyo, America/Toronto, Asia/Singapore, Australia/Lindeman, America/Los_Angeles, SystemV/EST5EDT, Pacific/Majuro, America/Argentina/Buenos_Aires, Europe/Nicosia, Pacific/Guadalcanal, Europe/Athens, US/Pacific, Europe/Monaco]
​

主打一个全面!!OK~这里的ZonedDateTime与LocalDateTime的用法一致相信聪明的你们,一点就通。

5.5Instant

这个就是一个时间戳

Instant i = Instant.now();
//获取当前时间
System.out.println(i.getEpochSecond());
//获取从时间原点到此刻时间的总秒数
System.out.println(i.getNano());
//获取纳秒值
System.out.println(i.plusMillis(2));
//毫秒数加2
System.out.println(i.minusNanos(1));
//纳秒数减1
System.out.println(i.minusMillis(3));
//毫秒数加3

结果如下:

为了帮助你们好对比我把当前系统时间用红框框起来了。

5.6DateTimeFormat

这个是时间格式,从上面我截的图就能看出来这种时间展示格式显然不符合我们的时间习惯,所以DateTimeFormat出现了,以下是转化格式

//时间对象转字符串
DateTimeFormatter d = DateTimeFormatter.ofPattern("yyyy年MM月dd日HH时mm分ss秒");
String format = d.format(LocalDateTime.now());
System.out.println(format);
//字符串转时间对象
String s="24-08-05 11-11-11";
DateTimeFormatter d2 = DateTimeFormatter.ofPattern("yy-MM-dd HH-mm-ss");
//切记格式要与输入的字符串要一一对应*
LocalDateTime parse = LocalDateTime.parse(s,d2);
System.out.println(parse);

5.7Period与Duration

period接收LocalDate的对象,它里面有很多的get方法,写法如下:

LocalDate l1 = LocalDate.of(2017,6,8);
LocalDate l2 = LocalDate.of(2024,8,5);
Period p = Period.between(l1, l2);
System.out.println(p.getMonths());
System.out.println(p.getYears());
System.out.println(p.getDays());

Duration接收LocalDateTime对象,它里面有很多的to方法,写法如下:

LocalDateTime l5 = LocalDateTime.of(2021,5,5, 3, 6);
LocalDateTime l6 = LocalDateTime.of(2024,8,8, 5, 6);
Duration b = Duration.between(l5, l6);
System.out.println(b.toHours());
System.out.println(b.toDays());
System.out.println(b.toMillis());

OK~这一期的总结到这里就结束了,bye~~

  • 22
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值