当前位置: 代码迷 >> J2SE >> J2SE基础:2.对象的创设与使用
  详细解决方案

J2SE基础:2.对象的创设与使用

热度:33   发布时间:2016-04-23 20:34:59.0
J2SE基础:2.对象的创建与使用
1:参数传递的值传递与引用传递


A:值传递:基本数据类型传递都是值传递

B:引用传递(地址传递):对象数据类型都是引用传递。




2:类变量与成员变量(实例变量,对象变量)


类变量:通过类名调用,类变量被所有的实例共享。

final static int MAX = 20;//Java中定义常量



对象变量:通过对象调用(对象必须new出来)。






3:类方法与成员方法(实例方法,对象方法)

类方法:通过类名调用,在类方法中不能使用this关键字。

       因为this代表当前对象。

成员方法:通过对象调用(对象必须new出来)。




4:
  构造方法
  销毁方法(finalize)

销毁方法是在对象被销毁的时候进行调用的。


当一个对象在堆区没有一个明确的引用指向它的时候,Java虚
拟机认为该对象是无用的。



  垃圾回收器是用于回收堆区分配的对象。 垃圾回收器只会回收3次的
  的内存。垃圾回收器是虚拟机自动调用的。(堆区内存不够的情况下调用)

  但是可以通过System.gc()来强制运行垃圾回收器。


5:static静态块与对象块


寻找main方法--->加载类--->加载类的静态块代码(只初始化一次)

--->加载类的静态方法和静态变量(只初始化一次)---->对象块方法

--->对象的构造方法--->调用对象的方法--->执行对象的销毁方法。


//成绩类class Score{	int english;	int math;	int chinese;	Score(){		}	Score(int english,int math,int chinese){		this.english = english;		this.math = math;		this.chinese = chinese;	}}class Student{	int stuid;	String stuname;	String stusex;	//将成绩类做为学生类的一个属性。	Score score;	public Student(Score score){		this.score = score;	}	public int getTotalScore(){		return this.score.english +this.score.math +this.score.chinese;	}	public void changeScore(Score score){		score.chinese = 0;		score.math = 0;	}}public class Test_02{	public static void main(String args[]){		Score score_one = new Score(70,60,65);		//score_one.english = 70;		//score_one.math = 60;		//score_one.chinese = 65;		Score score_two = new Score();		score_two.english = 11;		score_two.math = 12;		score_two.chinese = 13;		Score score_three = new Score(45,46,47);		//score_three.english = 45;		//score_three.math = 46;		//score_three.chinese = 47;		Student stu_one = new Student(score_three);		Student stu_two = new Student(score_two);		Student stu_three = new Student(score_one);				/*		System.out.println(stu_one.getTotalScore());		System.out.println(stu_two.getTotalScore());		score_three.english = 70;		stu_one.score.math = 23;		System.out.println(stu_one.getTotalScore());		System.out.println(stu_two.getTotalScore());		*/		System.out.println(stu_one.getTotalScore());//138		stu_one.changeScore(score_two);		System.out.println(stu_one.getTotalScore());//138		stu_one.changeScore(score_three);		System.out.println(stu_one.getTotalScore());//45		System.out.println(stu_two.getTotalScore());	}}

public class Test_03{	int id;	final static int MAX = 20;	public static void main(String args[]){		//Test_03 test = new Test_03();		//System.out.println(test.MAX);		System.out.println(Test_03.MAX);	}}

class Person{	int personid;	String personname;	public Person(){		System.out.println("对象的构造方法");		this.personid = 1;		this.personname = "中国人";	}	public void method(){		System.out.println("执行方法");	}	public void finalize(){		System.out.println("对象被销毁了");		this.personid = 0;		this.personname = null;	}}public class Test_04{	public static void main(String args[]){		Two();		System.gc();	}	public static void Two(){		//创建对象		Person person = new Person();		//用对象		person.method();	}}

public class Test_05{	//加载类时,最早执行的一块初始化内容。	static{		System.out.println("静态块");	}	//加载类时,静态方法与静态变量都已经放到内存的静态区域中了。	public static void staticMethod(){		System.out.println("static方法");	}	//对象块的内容,在对象初始化之前执行的内容	{		System.out.println("对象块方法");	}	//对象的构造方法	public Test_05(){		System.out.println("构造方法");	}	public void objectMethod(){		System.out.println("对象方法");	}	public static void main(String args[]){		Test_05.staticMethod();		Test_05 test = null;		test = new Test_05();		test.objectMethod();		Test_05 test2 = null;		test2 = new Test_05();		test2.objectMethod();	}}class  Two{	static{		System.out.println("Two的静态块");	}	}