一.主方法:
提供对程序流向的控制,通过主方法来执行程序。
1).语法:
public static void main(String[] args)
共有的 静态的 无返回值 方法名 (命令行参数)
2).注意:
1.主方法是静态的,所以如果直接在主方法中调用其他方法,则该方法也是静态的。不是静态的方法,必须要创建对象的实例。
2.没有返回值
3.形参为数组,arg[0]-arg[n],可以使用args.length获取形参个数
二.对象:一类事物中抽象出的某一个特例,通过特例处理这类事物的问题
每实例化一个对象,就会调用一个构造方法,就是创建对象的过程。
每个对象是类的实体,具备类属性,可以调用类方法。
1.对象的创建:使用new
例如:创建一个Test类对象
Test test=new Test();
Test test=new Test("a");
特殊例子:Strint str="abc";
创建字符串同时也创建了匿名的字符串对象,交给str使用
2.对象的引用
Book book = new Book();
Book:代表类,按照这个类创建对象
book:其实是一个引用,是操作标识符。可以调用对象的成员变量和成员方法
new Book(); 才是真正的对象实体
讲对象实体交给了前面的引用。
引用只是存放一个对象的内存地址,并非存放一个对象。严格说是不同的,不过可以忽略。
简单的说:book是Book类的一个对象,事实上是book包含Book对象的一个引用。
public class Book {
String name="西游记";
public String getname(){ //创建成员方法
return name;
}
public static void main(String[] args) {
Book b= new Book();
System.out.println(b.getname());
System.out.println(new Book().getname());
}
}
//用b.getname可以运行成员方法,b是一个引用,真正的对象是new Book(),b指向了new Book()的内存地址,可以不用b这个引用,直接用new Book()方法
3.对象的使用
对象.类成员,这个时候的类成员一定不是private修饰的
public class TranferProperty {
int i=47;//成员变量
public void call(){//成员方法
System.out.println("调用call方法");
//方法里面使用成员变量
for(i=0;i<3;i++){
System.out.print(i+" ");
}
System.out.println();//输出换行
}
public static void main(String[] args) {
//创建类的对象
TranferProperty t1=new TranferProperty();
TranferProperty t2=new TranferProperty();
t2.i=60;//给成员变量赋值
System.out.println("第一次实例对象调用i的结果"+t1.i);
//调用t1的call方法
t1.call();
System.out.println("第二次实例对象调用i的结果"+t2.i);
//调用t2的call方法
t2.call();
}
}
输出:
第一次实例对象调用i的结果47
调用call方法
0 1 2
第二次实例对象调用i的结果60 //即使改了t2成员变量的值的是60,进入方法后i的值又被赋值
调用call方法
0 1 2
4.对象的销毁: 只需了解。
对象的生命周期结束时,非配给该对象的内存地址将会被收回。
对象被置成Null的时候,将消亡
java自身的垃圾回收器只能回收New操作创建的对象,
如果某个对象不是通过new操作符在内存中获取的区域,这种对象不能被垃圾回收器识别。
使用finalize()方法:是所有类的副类,是object类提供的方法,在垃圾回收时首先调用该方法,并且在下次垃圾回收动作放生时,真正回收被对象占用的内存。
缺点:不受人为控制,具体执行时间不定。
使用System.gc()方法: