类
Object类
JAVA中所有的类从根本上都是继承自object类。它是JAVA中唯一没有父类的类。
object类的方法
取得对象信息 toString()
默认的toString()方法:为了适用于所有的子类,toString()在默认情况下输出对象地址
对象相等判断方法 equals()
equals比较的是两个对象的地址
对象签名hashcode()
equals()和hashcode()都是来推断对象的标识
equals()用来比较两个对象的地址值。
原始的hashcode()方法用来返回其所在对象的物理地址
内部类
内部类就是在一个类中又定义了其他类
内部类可声明为:public private
内部类的作用:
1.内部类提供了更好的封装
2.内部类可以直接访问外部类的私有数据
3.匿名内部类适合于用来创建那些仅需要一次的类
使用static定义的内部类就是外部类
如果使用STATIC来修饰一个内部类,这个内部类就属于外部类本身,而不属于外部类的某个对象
static关键字的作用是把类的成员变成类相关,而不是实例相关,即static修饰的成员属于整个类,而不属于单个对象。
静态内部类可以包含静态成员,也可以包含非静态成员。
根据静态成员不能访问非静态成员的规则,静态内部成员不能访问外部类的实例成员,只能访问外部类的类成员。
静态内部类是外部类的静态成员,因此外部类的静态方法,静态初始化也可以使用静态内部类来定义变量,创建对象
class staticinnerclasstest
{
private int propl=5;
private static int prop2=9;
void display()
{
staticinnerclass in =new staticinnerclass();//外部类可以使用静态内部类的类名作为调用者来访问内部类的类成员
in.display(); //也可以使用静态内部类对象作为调用者来访问静态内部类的实例成员
}
static class staticinnerclass //静态内部类
{
private static int age;
public void display()
{
//System.out.println(propl); //静态内部类不可以访问外部类的非静态变量
System.out.println(prop2); //静态内部类可以访问外部类的静态变量
}
}
}
public class demo {
public static void main(String []args)
{
staticinnerclasstest outer=new staticinnerclasstest();
outer.display();
}
}
在方法中定义内部类
class innerclasstest
{
int score=5;
void inst()
{
class inner
{
void display()
{
System.out.println("成绩:score="+score);
}
}
inner in=new inner();
in.display();
}
}
public class demo {
public static void main(String []args)
{
innerclasstest outer=new innerclasstest();
outer.inst();
}
}
this关键字的使用
static关键字的使用
static类型的变量是所有对象共享的内存空间,也就是说无论产生多少对象,只有一个static类型的属性
可以在构造方法中加入记数操作,来计算类到底产生了多少实例对象
Static主方法(main)
public class demo {
public static void main(String []args)
{
int j=args.length;
if(j!=2)
{
System.out.println("输入参数个数有错误");
System.exit(1);
}
for(int i=0;i<args.length;i++)
{
System.out.println(args[i]);
}
}
}
Static应用----static代码块及静态导入
final变量
1 final关键字提高了性能
2 final变量可以安全的在多线程环境下进行共享,而不需要额外的开销
3 使用final关键字,JVM会对方法,变量及类进行优化
instanceof关键字的使用
用instanceof判断一个类是否实现了某个接口也可以用来判断一个实例对象是否属于一个类。
对象 instanceof 类(或接口)
返回类型是布尔型