Java学习笔记(七) —— 基础知识篇

内部类

1.成员内部类

修饰符 class 外部类名称{
    修饰符 class 内部类名称{
        //...
    }
}

注意:内用外,随意访问;外用内,需要内部对象。

内部类访问方式:

  1. 间接方式:在外部类的方法当中,使用内部类,然后调用外部类的方法;

  2. 直接方式:对象直接调用

    外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();
    

如果出现重名现象,只需 【外部类名称.this.成员变量;】

2.局部内部类

如果一个类定义在一个方法内部,那么这就是一个局部内部类。只能当前所属方法使用。

修饰符 class 外部类名称{
    修饰符 返回值类型 外部类方法名称(参数){
        class 局部内部类名称{
            //...
        }
    }
}

定义一个类的时候,权限修饰符规则:

  1. 外部类:public/(default)
  2. 成员内部类:都可以
  3. 局部内部类:什么都不写

局部内部类中,如果希望访问所在方法的局部变量,那么这个局部变量必须是【有效final】的,因为局部变量在栈中,而类对象在堆中,生命周期不一样。【???不太懂】

3.匿名内部类

如果接口的实现类或者是父类的子类,只需用唯一的一次,那么就可以省略该类的定义,使用匿名内部类。

接口名称 对象名 = new 接口名称(){
    //覆盖重写所有抽象方法
}

注意事项:

  1. 匿名内部类在创建的时候只能使用唯一的一次。
  2. 是子类或实现类匿名而不是对象匿名。

任何类型都可以作为成员变量的类型。

Object类

package:java.lang

类Object是类层次结构的根类,每个类都使用Object作为父类。所有对象(包括数组)都实现这个方法。

1.toString()方法

String toString(),返回对象的字符串表示。

直接打印对象名相当于调用对象的toString方法。

Scanner类和ArrayList都重写了toString方法。

重写前:包名类名@地址值,重写后:属性值

2.equals()方法

基本数据类型比较数值,引用数据类型比较地址。所以大部分时候都需要重写equals()方法。

3.Objects类中的equals()方法

public static  boolean equals(Object a,Object b){
    return (a==b)||(a!=null &&a.equals(b));
}

Date类

package:java.util

表示日期和时间的类,精确到毫秒。

Date类的无参构造方法,Date()获取的就是当前系统的日期和时间

Date的带参构造方法:

​ Date(long date);传递毫秒值,把毫秒转换为Date日期

1.getTime()方法

可以将对象对应的时间转换为毫秒值。

2.System.currentTimeMillis()

获取当前系统时间到1970/1/1 0:00:00经历了多少毫秒。

3.toLocaleString()

以本地的格式去表示时间

DateFormat类

package:java.text

是日期/时间格式化子类的抽象类,可以完成Date和String直接的转换。

无法直接使用,可以用其直接子类SimpleDateFormat,传递相应的模式。

1.format()格式化

String format(Date date)//按照指定的模式,把Date日期,格式化为符合模式的字符串

2.parse()解析

Date parse(String source)//把符合模式的字符串,解析为Date日期

Calendar类

package:java.util

是一个抽象类,提供了很多操作日历字段的方法。

1.getInstance()静态方法

无法直接创建对象使用,所以该方法返回了Calendar类的子类对象,使用默认时区和语言环境获得一个日历。

2.常用方法

public int get(int field);//返回给定日历字段的值。
public void set(int field, int value);//将给定的日历字段设置为给定值。
public abstract void add(int filed,int amout);//根据日历的规则,为给定的日历字段添加或减去指定的时间量
public Date getTime();//返回一个表示此Calendar时间值(毫秒偏移量)的Date对象。
//注意月份是0-11

System类

package:java.lang

提供了大量的静态成员方法。

long begin = getCurrentMillis();

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);//将数组中指定的数据拷贝到另一个数组中

StringBuilder类

package:java.lang

字符串缓冲区,可以提高字符串的操作效率(可以看做长度可以变化的字符串),底层也是一个数组,但是没有final修饰,可以改变长度。

1.构造方法

public StringBuilder();//构造一个空的StringBuilder容器
public StringBuilder(String str);//构造一个StringBUilder容器,并将字符串添加进去。

2.常用方法

public StringBuilder append(...)//添加任意类型数据的字符串形式,并返回当前对象本身
public String toString();//将StringBUilder对象转换为String对象
StringBuilder reverse();//反转内容

包装类

(又一次)

装箱:把基本类型的数据包装到包装类。

构造方法:

Integer(int value);
Integer(String s);//必须是基本类型的字符串,否则抛出异常

静态方法:

static Integer valueOf(int i);//返回一个表示指定的int值的Integer实例
static Integer valueOf(String s);

拆箱:在包装类中取出基本类型的数据。

成员方法:

int intValue();//以int值返回Integer的值。

自动装箱和自动拆箱:基本类型的数据和包装类数据之间可以自动相互转换。

基本类型与字符串之间的转换

基本类型-》字符串

  1. 基本类型数据的值+""

  2. 使用包装类中的静态方法

    static String toString(int i);

  3. 使用String类中的静态方法

    static String valueOf(int i);

字符串-》基本类型

​ 使用包装类的静态方法parseXx("字符串");但是Character没有这个方法。

posted @ 2022-01-05 22:06  itisue  阅读(60)  评论(0)    收藏  举报