一、对象作为函数的参数传递时发生的情况
1、基本数据传递情况
2、对象的引用变量作为参数传递的情
public class PassParam
{
int x;
public static void main(String[] args)
{
int x=5;
change(x);
System.out.println(x);
PassParam obj = new PassParam();
obj.x = 5;
change(obj);
System.out.println(obj.x);
}
public static void change(int x)
{
x=3;
}
public static void change(PassParam obj)
{
obj = new PassParam();
obj.x=3;
}
public static void change(int[] x)
{
x[0]=6;
}
}
用图示的方法来表示:
二、static静态变量
1、static静态数据在内存中只有一份拷贝
2、非静态静态的方法可以直接访问静态变量,我们可以使用private static 放在构造方法中来统计一共创建了几个实例对象。
例如:class Chinese
{
private static int count = 0;
public Chinese()
{
count++;
System.out.println("count="+count);
}
}
说明:每创建一个Chinese对象就会调用一次public Chinese()这个构造方法,假如 private static int count = 0;不加上static的话,运行,不能得到正确的结果,因为每调用一次构造方法,就会产生一个新的count,也就是说它在内存中有多份拷贝。
注意:
(1)静态方法不能以任何方式引用this或super关键字。
(2)静态方法只能调用调用同类中的静态成员,不能直接访问类中非静态成员。
3、静态代码块
格式:
static{} 用来初始化变量
4、单态设计模式:就是采取一定的方法保证在整个软件系统中,对某个类只能有一个对象实例。并且只提供一个取得对象实例的方法。
一般格式:
class Chinese
{
static Chinese objRef = new Chinese();
static
{
count = 2;
System.out.println("static block");
}
String name;
int age;
public static Chinese getInstance()
{
return objRef;
}
private Chinese()
{
count++;
System.out.println("count="+count);
}
在外面调用这个方法时,只能这样子调用:Chinese obj1 = Chinese.getInstance();
三、public static void main(String[] args)各部分的解释
1、main方法不用创建实例对象因为有static的存在2、main方法被外面调用,所以它没有返回值
3、String[] args是一个数组,你在键盘上传入什么就能打印什么。
System.out.println(args[0]);
System.out.println(args[1]);
在运行时,就要传入参数,否则会出错。
四、java的内部类(也叫嵌套类)
1、在内部类可以访问外部类的变量,在外部类中访问内部类时,应先实例化对象后、才能使用。
2、当内部类的成员方法访问某一变量时,如果方法内部类都没有定义,那么内部类对this的引用会被传递到外部类对象的引用。
3、如果static修饰一个内部类,那么这个类就相当于外部类,非static的内部类的成员不能声明为static的。加上static内部类是不能再使用外层封装类的非static的成员变量的。其实,static的内部内很少使用。
4、关于内部类的一个特殊的例子
5、假如内部类是用public定义的,那么在其它类中也可以使用
6、内部类可以在几个程序块的范围内定义 比如在方法中,甚至可以在for循环语句中。
7、用final定义的局部变量相当于是一个常量,生命超出方法的运行周期(注意:在方法中定义的变量应初始化后才使用)
五、java的文档注释
使用?/* */符号在类定义和方法定义前进行注释
例如
import java.io.*;
import java.security.PublicKey;
/**
* Title Engineer类</br>
* Description:通过Engineer类来说明java文档中的文档注释</br>
* Copyright:(c) 2003 www.baidu.com
* Company:chenzemin</br>
* @author chenzemin1
* @version 1.70
*/
public class Engineer
{
public String Engineer_name;
/**
* 这是Engineer对象的构造函数
* @param name Engineer的名字
*/
public Engineer(String name)
{
/**
* 这是repairing方法的说明
* @param sum 需要修理的机器的总数
* @param alltime 需要修理的总时间
* @param Repairing的数量
*/
}
//public int repairing(int sum,int alltime)
{
}
}
使用命令 javadoc -d 生成类的名字 -author -version 源文件 的格式运行后会产生一些.html格式的文件,打开index.html可以看到如下效果: