👉引言💎
铭记于心 | ||
---|---|---|
🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉 |
内部类与API,异常
内部类
- 内部类的访问特点
内部类可以直接访问外部类的成员,包括私有
外部类要访问内部类的成员,必须创建对象 - 成员内部类的定义位置
在类中方法,跟成员变量是一个位置
- 外界创建成员内部类格式
格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象;
举例:Outer.Inner oi = new Outer().new Inner();
- 成员内部类的推荐使用方案
将一个类,设计为内部类的目的,大多数都是不想让外界去访问,所以内部类的定义应该私有化,私有化之后,再提供一个可以让外界调用的方法,方法内部创建内部类对象并调用。
c++内部类与java内部类最大的区别就是:c++的内部类对象没有外部类对象的指针,不能访问外部类对象的非静态成员;java的非静态内部类对象有外部类对象的指针,能访问外部类对象的非静态成员。
java 中右多个内部类,还有匿名内部类。
局部类(较少使用)
- 局部内部类定义位置
局部内部类是在方法中定义的类
- 局部内部类方式
局部内部类,外界是无法直接使用,需要在方法内部创建对象并使用
该类可以直接访问外部类的成员,也可以访问方法内的局部变量
匿名内部类
- 匿名内部类的前提
存在一个类或者接口,这里的类可以是具体类也可以是抽象类
- 匿名内部类的格式
格式:new 类名 ( ) { 重写方法 } new 接口名 ( ) { 重写方法 }
new Inter()
{
@Override
public void method(){}
}
- 匿名内部类的本质
本质:是一个继承了该类或者实现了该接口的子类匿名对象
即可通过该匿名对象调用父类成员方法,还可以通过多态的方式接收该对象
匿名内部类可以通过多态的形式接受
Inter i = new Inter(){ @Override public void method(){ } }
匿名内部类直接调用方法
interface Inter
{ void method(); }
class Test
{
public static void main(String[] args){
new Inter(){
@Override
public void method()
{ System.out.println("我是匿名内部类"); }
}.method(); // 直接调用方法 }
}
匿名内部类在开发中的使用
当发现某个方法需要,接口或抽象类的子类对象,我们就可以传递一个匿名内部类过去,来简化传统的代码
System类
public static void exit(int status)
终止当前java虚拟机,非零表示异常终止
public static long currentTimeMillis() 返回当前时间(以毫秒为单位)
基本类型包装类
整形到字符串:也可用String.valueof
String str = Integer.toString(i);
字符串到整形:也可以用parseInt方法
int i = Integer.valueOf(str).intValue();
double型请查看Double方法
toLowerCase,toUpperCase转换大小写
日期类
Date()
分配一个 Date对象并对其进行初始化,以便它表示分配的时间,以最接近的毫秒为单位。
boolean after(Date when) 测试此日期是否在指定日期之后。
boolean before(Date when) 测试此日期是否在指定日期之前。
Object clone() 返回此对象的副本。
int compareTo(Date anotherDate) 比较两个日期进行订购。
boolean equals(Object obj) 比较两个日期来平等。
static Date from(Instant instant) 从 Instant对象获取 Date一个实例。
案例
SimpleDateFormat sdf = new SimpleDateFormat();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年M月d日");
Date date = new Date();
String format = sdf1.format(date);
System.out.println(format);
2022年1月14日
日期工具类的实现
public class data {
private data() { };
public static String ToString(Date d, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(d);
}
public static Date todata(String S, String format) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.parse(S);
}
}
Calendar类
static Calendar getInstance() 使用默认时区和区域设置获取日历。
static Calendar getInstance(Locale aLocale) 使用默认时区和指定的区域设置获取日历。
static Calendar getInstance(TimeZone zone) 使用指定的时区和默认语言环境获取日历。
static Calendar getInstance(TimeZone zone, Locale aLocale) 获取具有指定时区和区域设置的日历
abstract void add(int field, int amount) 根据日历的规则,将指定的时间量添加或减去给定的日历字段。
boolean after(Object when) 返回 Calendar是否表示在指定的 Object表示的时间之后的时间。
boolean before(Object when) 返回此 Calendar是否表示由指定的 Object表示的时间之前的时间。
二月天案例
public class hello {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
System.out.println("请输入要查询的年份:");
Scanner Sc = new Scanner(System.in);
int number=Sc.nextInt();
calendar.set(number,2,1);
calendar.add(Calendar.DAY_OF_MONTH,-1);
System.out.println(number+"年的二月份共有"+calendar.get(Calendar.DAY_OF_MONTH)+"天");
}
}
请输入要查询的年份:
2018
2018年的二月份共有28天
🌹写在最后💖:
相信大家对今天的集训内容的理解与以往已经有很大不同了吧,或许也感受到了算法的魅力,当然这是一定的,路漫漫其修远兮,吾将上下而求索!伙伴们,明天见!🌹🌹🌹