Java学习笔记(七) —— 基础知识篇
内部类
1.成员内部类
修饰符 class 外部类名称{
修饰符 class 内部类名称{
//...
}
}
注意:内用外,随意访问;外用内,需要内部对象。
内部类访问方式:
-
间接方式:在外部类的方法当中,使用内部类,然后调用外部类的方法;
-
直接方式:对象直接调用
外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();
如果出现重名现象,只需 【外部类名称.this.成员变量;】
2.局部内部类
如果一个类定义在一个方法内部,那么这就是一个局部内部类。只能当前所属方法使用。
修饰符 class 外部类名称{
修饰符 返回值类型 外部类方法名称(参数){
class 局部内部类名称{
//...
}
}
}
定义一个类的时候,权限修饰符规则:
- 外部类:public/(default)
- 成员内部类:都可以
- 局部内部类:什么都不写
局部内部类中,如果希望访问所在方法的局部变量,那么这个局部变量必须是【有效final】的,因为局部变量在栈中,而类对象在堆中,生命周期不一样。【???不太懂】
3.匿名内部类
如果接口的实现类或者是父类的子类,只需用唯一的一次,那么就可以省略该类的定义,使用匿名内部类。
接口名称 对象名 = new 接口名称(){
//覆盖重写所有抽象方法
}
注意事项:
- 匿名内部类在创建的时候只能使用唯一的一次。
- 是子类或实现类匿名而不是对象匿名。
任何类型都可以作为成员变量的类型。
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的值。
自动装箱和自动拆箱:基本类型的数据和包装类数据之间可以自动相互转换。
基本类型与字符串之间的转换
基本类型-》字符串
-
基本类型数据的值+""
-
使用包装类中的静态方法
static String toString(int i);
-
使用String类中的静态方法
static String valueOf(int i);
字符串-》基本类型
使用包装类的静态方法parseXx("字符串");但是Character没有这个方法。

浙公网安备 33010602011771号