JAVA基本类型(day01-13.09.23)

1.Java为强类型语言,必须声明初始化之后使用。

2.整数常量默认为int型,不超范围可直接赋值给long型,超出时,需要在常量后面加L等。

3.小数常量默认为double类型,float可赋值整数常量,赋值小数常量时末尾要加f

4.float为不精确类型:符号:1位;尾数:23位;指数:8位;不可精确表示int型,基本不用。

5.double:符号位:1位,尾数52位;指数:11位;可精确表示int型,不可精确表示long型

6.char:16位无符号整数,为Unicode编码。

7.函数命名,类命名:动名词。

8.强制类型转换优先级较高。

9.JAVAC会对常数进行优化。

10.短路与&&,短路或||:短路与:第一个不成立,则不进行第二项。短路或:第一个成立则不进行第二项。

11.++i与i++:++的优先级要高于=

int a=1;a=a++;System.out.println(a);输出a的值为1。分析:++的优先级要高于=,即首先a=2;表达式的值为1,即a又赋值为1。

12.数组成员自动初始化为“零”值。类初始化为NULL。

13.字符加法按整数算,字符串与任何类型连接(+)会变成字符串。

14.unix上空字符后不显示,window上空字符后可继续显示。

15.利用数组的复制可以变通的实现数组的扩展。int[] arr2=arr;自行完成后是同一个数组,长度不同可实现数组扩展。

16.数组复制System.arraycopy(arry1,0,arry2,0,5);arry1[0]拷贝到arry2[0],共5个。

17.数组动态加n:arr=Arrays.copyOf(arr, arr.Length+n)。

18.char转化为int型需要-'0'。
19.有0~n的代表含义转化为0~n的数组。
20.byte四则运算后为int类型。
可以使用Java的日期时间类和正则表达式来实现这个需求。 首先,我们需要将工作时段字符串按照";"分割成多个工作时段。然后,对于每个工作时段,我们需要将其按照"-"分割成起始时间和结束时间,并将它们转换为Date类型。 接下来,我们可以将传入的指定年月日转换为Calendar类型,并将其设置为当天的起始时间(即当天的00:00:00)。然后,我们可以依次判断该日期是否在每个工作时段内,并计算出该日期在工作时段内的时间。 最后,将每个工作时段内的时间相加,得到该日期在工作时段内工作的总时间。 以下是示例代码: ```java import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.regex.Matcher; import java.util.regex.Pattern; public class WorkTimeCalculator { private static final String TIME_PATTERN = "HH:mm"; private static final String WORK_TIME_PATTERN = TIME_PATTERN + "-" + TIME_PATTERN; private static final String WORK_TIME_SEPARATOR = ";"; public static int calculateWorkTime(String workTimeStr, Date startTime, Date endTime, Date date) throws ParseException { // 将工作时段字符串按照";"分割成多个工作时段 String[] workTimeArray = workTimeStr.split(WORK_TIME_SEPARATOR); int totalWorkTime = 0; // 将指定日期转换为Calendar类型,并设置为当天的起始时间 Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); Date startOfDay = calendar.getTime(); // 遍历每个工作时段,并计算该日期在工作时段内的时间 for (String workTime : workTimeArray) { Pattern pattern = Pattern.compile(WORK_TIME_PATTERN); Matcher matcher = pattern.matcher(workTime); if (matcher.matches()) { String startTimeStr = matcher.group(1); String endTimeStr = matcher.group(2); // 将起始时间和结束时间转换为Date类型 SimpleDateFormat sdf = new SimpleDateFormat(TIME_PATTERN); Date startWorkTime = sdf.parse(startTimeStr); Date endWorkTime = sdf.parse(endTimeStr); // 将起始时间和结束时间设置为当天的日期 Calendar startCalendar = Calendar.getInstance(); startCalendar.setTime(startOfDay); startCalendar.set(Calendar.HOUR_OF_DAY, startWorkTime.getHours()); startCalendar.set(Calendar.MINUTE, startWorkTime.getMinutes()); startCalendar.set(Calendar.SECOND, 0); startCalendar.set(Calendar.MILLISECOND, 0); Date start = startCalendar.getTime(); Calendar endCalendar = Calendar.getInstance(); endCalendar.setTime(startOfDay); endCalendar.set(Calendar.HOUR_OF_DAY, endWorkTime.getHours()); endCalendar.set(Calendar.MINUTE, endWorkTime.getMinutes()); endCalendar.set(Calendar.SECOND, 0); endCalendar.set(Calendar.MILLISECOND, 0); Date end = endCalendar.getTime(); // 判断指定日期是否在该工作时段内,并计算该日期在工作时段内的时间 if (date.after(start) && date.before(end)) { int workTimeInMinutes; if (date.after(startTime) && date.before(endTime)) { // 如果指定日期在工作开始时间和结束时间之间,则计算指定日期在工作时段内的时间 workTimeInMinutes = (int) ((endTime.getTime() - date.getTime()) / (1000 * 60)); } else if (date.before(startTime)) { // 如果指定日期在工作开始时间之前,则计算该工作时段的总时间 workTimeInMinutes = (int) ((end.getTime() - start.getTime()) / (1000 * 60)); } else { // 如果指定日期在工作结束时间之后,则不计算时间 workTimeInMinutes = 0; } totalWorkTime += workTimeInMinutes; } } } return totalWorkTime; } } ``` 使用示例: ```java String workTimeStr = "09:00-12:00;13:00-18:00"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date startTime = sdf.parse("2022-01-01 09:30:00"); Date endTime = sdf.parse("2022-01-01 17:30:00"); Date date = sdf.parse("2022-01-01"); int workTime = WorkTimeCalculator.calculateWorkTime(workTimeStr, startTime, endTime, date); System.out.println("Work time on " + sdf.format(date) + " is " + workTime + " minutes"); ``` 输出结果: ``` Work time on 2022-01-01 is 390 minutes ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值