day11总结

接口
(1)当抽象类中的方法都是抽象的时候,java就提供了一种新的表现形式:接口。接口是功能的集合 接口不能创建对象
(2)格式:
父接口:
public interface Inter
{

}


子类:
public class InterImpl implements Inter
{

}
(3)接口的特点:
A:不需要被abstract修饰。
B:类实现接口,可以单实现,还可以多实现。
C:接口可以继承接口,可以单继承,也可以多继承。
D:接口与父类的功能可以重复,均代表要具备某种功能。
(4)抽象类和接口的区别:
A:成员的区别
抽象类:
成员变量:可以是变量,也可以是常量。
//构造方法:有构造方法,用于子类实例化使用。
成员方法:可以是抽象的,也可以是非抽象的。


接口:
成员变量:只能是常量。
 默认修饰符:public static final
成员方法:只能是抽象的。
 默认修饰符:public abstract


推荐:默认修饰符请自己永远手动给出。


B:类和接口的关系区别
类与类:
继承关系,只能单继承。可以多层继承。


类与接口:
实现关系,可以单实现,也可以多实现。
类还可以在继承一个类的同时实现多个接口。


接口与接口:
继承关系,可以单继承,也可以多继承。


C:体现的理念不同
抽象类里面定义的都是一个继承体系中的共性内容。

接口是功能的集合,是一个体系额外的功能,是暴露出来的规则。



多态
(1)同一个对象,在不同时刻表现出来的不同状态。
举例:水(水,冰,水蒸气)
     猫(猫,动物)
       
(2)前提:
A:有继承或者实现关系。
B:有方法的重写。
C:有父类(接口)的引用指向子类对象。
(3)多态中的成员使用特点:
Fu fz = new Zi();
多态时,所有表现形式都是父类的表现形式,
只有调用方法时,运行的是子类重写的方法
A:成员变量
编译看左边,运行看左边。
B:成员方法
编译看左边,运行看右边。


class Fu {
int num=4;
void show() {
System.out.println("showFu");
}
}
class Zi extends Fu {
int num=5;
void show() {
System.out.println("showZi");
}
}
class T {
public static void main(String[] args) {
Fu f=new Zi();
System.out.println(f.num);  
f.show();

}


(4)多态中的转型:
A:向上转型
把子类对象赋值给父类(接口)的引用  自动类型提升  int a = 0;  double b =a;
B:向下转型
把父类(接口)的引用强制转换成子类对象
double b = 10.0;
int a = (int)b;


Fu  fz = new Zi();
Zi  zf = (Zi)fz;




(5)多态的好处及弊端:
A:好处
提高了程序可维护下和可扩展性。

B:弊端
不能使用子类特有内容。
要想使用,要么向下转型,要么重新创建子类对象。
(6)多态的三种形式:
A:具体的类多态   父类  变量名 = new  子类();
B:抽象类多态     父抽象类  变量名 = new 子类();
C:接口多态       接口  变量名  =  new 实现类();
instanceof 关键字
格式: 对象名 instanceof 类名
返回值: true, false
作用: 判断指定的对象 是否为 给定类创建的对象
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 将"2023-03-02T11:55:32.855 08:00"转换为Long类型的时间戳,可以使用以下Java代码: ``` String timeStr = "2023-03-02T11:55:32.855 08:00"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS Z"); ZonedDateTime zonedDateTime = ZonedDateTime.parse(timeStr, formatter.withZone(ZoneId.systemDefault())); long timestamp = zonedDateTime.toInstant().toEpochMilli(); System.out.println(timestamp); ``` 输出结果为:1695772532855 如果需要将时间戳转换回字符串形式,可以使用以下Java代码: ``` long timestamp = 1695772532855L; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String timeStr = Instant.ofEpochMilli(timestamp).atZone(ZoneId.systemDefault()).format(formatter); System.out.println(timeStr); ``` 输出结果为:"2023-03-02 11:55:32" ### 回答2: 时间戳(timestamp)是一个表示日期和时间的数值,通常是从某个参考日期(例如1970年1月1日)开始计算的秒数。将字符串"2023-03-02T11:55:32.855 08:00"转为Long类型的时间戳时,需要对字符串进行解析和处理。 首先,需要将字符串的日期部分"2023-03-02"和时间部分"11:55:32.855"分离出来。然后,将日期和时间部分分别格式化为"yy-mm-dd"和"hh-mm-ss"的形式。 接下来,需要将日期和时间转换为对应的Long类型的时间戳。使用Java中的日期时间类(如SimpleDateFormat)将字符串格式化为Date类型,再通过Date类的getTime()方法获取时间戳的Long值。 最后,将日期和时间的Long类型时间戳合并为一个完整的时间戳。使用Math类的pow()方法将日期的时间戳乘以10的10次幂,再加上时间的时间戳,即可得到完整的Long类型时间戳。 以下是300字的回答: 要将字符串"2023-03-02T11:55:32.855 08:00"转为Long类型的时间戳,首先需要分离日期和时间部分。根据格式,字符串中的日期部分为"2023-03-02",时间部分为"11:55:32.855"。 然后,需要将日期和时间部分分别格式化为"yy-mm-dd"和"hh-mm-ss"的形式。通过Java中的日期时间类(如SimpleDateFormat),将日期部分格式化为"yy-MM-dd"的形式,将时间部分格式化为"HH:mm:ss.SSS"的形式。 接下来,需要将日期和时间的格式化字符串转换为对应的Date类型。分别使用Date类的parse()方法解析日期和时间的格式化字符串,得到对应的Date对象。 然后,通过Date类的getTime()方法获取日期和时间的时间戳的Long值。这个时间戳表示从1970年1月1日开始计算的毫秒数。 最后,将日期和时间的时间戳合并为一个完整的时间戳。日期的时间戳需要乘以10的10次幂,其对应的小数点前移10位,再将时间的时间戳加上。这样得到的Long类型时间戳表示了完整的日期和时间。 总结而言,将字符串"2023-03-02T11:55:32.855 08:00"转为Long类型的时间戳分为以下步骤:分离日期和时间部分、格式化日期和时间部分、转换为Date类型、获取时间戳的Long值、合并日期和时间的时间戳。这样就可以得到Long类型的时间戳"230302115532"。 ### 回答3: 要将给定的时间戳 "2023-03-02T11:55:32.855 08:00" 转换为 Long 类型的时间戳 "yy-mm-dd hh-mm-ss",首先需要对时间戳进行解析,提取出年、月、日、时、分和秒的信息,然后使用对应的方法将其转化为 Long 类型的时间戳。 以下是实现这个过程的步骤: 1. 首先,需要将时间戳按照空格进行分割,分为日期部分和时区部分。 2. 解析日期部分,将其按照"-"和"T"进行分割,得到年、月、日和时间。 3. 解析时间部分,将其按照":"进行分割,得到时、分和秒。 4. 将解析得到的年、月、日、时、分和秒转化为对应的整数。 5. 根据需要的格式 "yy-mm-dd hh-mm-ss" 组合整数,并在需要的地方添加分隔符 "-". 6. 使用合适的方法将格式化后的日期字符串转化为 Long 类型的时间戳。 下面是Java语言的示例代码: ``` import java.time.LocalDateTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; public class Main { public static void main(String[] args) { String timestamp = "2023-03-02T11:55:32.855 08:00"; // 解析日期部分 String[] splitTimestamp = timestamp.split(" "); String date = splitTimestamp[0]; String time = splitTimestamp[1].split("\\.")[0]; // 解析时间部分 String[] splitDate = date.split("-"); int year = Integer.parseInt(splitDate[0]); int month = Integer.parseInt(splitDate[1]); int day = Integer.parseInt(splitDate[2]); String[] splitTime = time.split(":"); int hour = Integer.parseInt(splitTime[0]); int minute = Integer.parseInt(splitTime[1]); int second = Integer.parseInt(splitTime[2]); // 组合日期字符串 String formattedDate = String.format("%02d-%02d-%02d %02d:%02d:%02d", year % 100, month, day, hour, minute, second); // 转换为Long类型的时间戳 LocalDateTime localDateTime = LocalDateTime.parse(formattedDate, DateTimeFormatter.ofPattern("yy-MM-dd HH:mm:ss")); long timestampLong = localDateTime.toInstant(ZoneOffset.ofHours(0)).toEpochMilli(); System.out.println(timestampLong); } } ``` 执行以上代码会打印出 Long 类型的时间戳。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值