this 关键字
this是一个引用,你对哪个方法定义,它就是那个方法的引用
一般出现在方法声明里面,指向自身的对象
example
public class Leaf{
int i = 0;//成员变量
Leaf (int i) {//形参 i
this.i = i;//就近声明,i指的是形参i,this.i指的是成员变量
}
Leaf increament(){//这个方法的返回值类型是Leaf
i++;
return this;//this是指向Leaf的一个引用
}
void print() {
System.out.println("i = " + i);
}
public static void main(String[] args[]){
Leaf leaf = new Leaf(100);
leaf.increament().increament().print();
}
}
static
用static声明的成员变量为静态成员变量
静态的成员变量只会在数据共享区中维护一份,
而非静态成员变量的数据会在每个对象中都维护一份的。
public class Cat{
private static int sid = 0;//静态成员变量存放在data segment中,而且只会有一个,
private String name;//如果去掉static,那么sid会变成一般成员变量,即每一个Cat中都会存在一个相应的sid
int id;
Cat(String name){
this.name = name;
id = sid ++;
}
public void info{
System.out.println("My name is " + name + " No." + id);
}
public static void main(String args[]){//这里加上static,就让main方法可以无需对象运行
Cat.sid = 100;//类名+.可以直接访问该静态,而不用先new一个对象
Cat mimi = new Cat("mimi");
mimi.info();
}
}
package 和 import语句
example
被封装在.\animal\size_small下的Dog
package animal.small_size;
public class Dog{
public static void main(String args[]){
System.out.println('1');
}
}
调用Dog的Cat
public class Cat{
public static void main(String args[]) {
animal.small_size.Dog d = new animal.small_size.Dog();
}
}
将类放在包里面,这个类文件的第一段代码必须为
package animal.size_small;
同时.class文件必须在对应包名文件夹下
.\animal\size_small\Dog.class
最后,在其他文件中引用时,类名必须写完整
animal.size_small.Dog d = new animal.size_small.Dog();
//或者在代码中引入
import animal.size.small.Dog;
要保证某个包一定能被找到,可以在classpath里面添加这个包的最上层目录的父目录
C:\Users\Administrator\Pictures
此外,在执行封装在包里面的类文件时,需要在该类文件最上层目录的父目录下运行,而且还要加上完整类名
cmd
cd C:\Users\Administrator\Pictures
java animal.samll_szie.Dog