查看此博客:http://blog.youkuaiyun.com/zhangerqing/article/details/8294039
以下是提取提取的以上博客内容,我作为笔记方便复习。
把人可以看作一个类,那么你、我、他是对象。年龄、身高就是属性。吃、喝、玩就是方法。
public class Person {
String name;
int age;
void eat(){
}
}
1、类是一类具有相同属性的事物的统称,是一种抽象。
2、对象是类的具体体现,又称实例。
3、类是一种静态的概念,而对象是一种动态的机制。
属性:
类中的属性一般分为类属性(全局变量)、实例属性(全局变量)、局部属性(局部变量)。
类属性:前面已经说过就是那些声明为static的属性,在整个过程中只进行一次初始化,在内存中只开辟一个空间,不论在哪儿调用,值保持一致。一旦被修改,所有引用它的地方都会跟着修改。一般直接通过类名进行调用。
实例属性:实例变量是可以不进行初始化,比如一个整型的实例变量假如没有初始化,则默认值为0;而局部变量假如不赋初值语法上是通过的,但是在使用这个变量是程序就报错了。实例变量在堆和栈中都分配内存空间,在堆当中分配的是对象本身,而栈中则是对这个对象的引用。
局部属性:局部变量是在方法内部声明的变量,生命期仅在方法内,方法结束后变量就消失了;局部变量必须初始化再使用,否则会报错,也就是说,假如你在方法内定义了一个局部变量,并且没有赋值,那么你在使用这个变量的时候一定得赋值,不然就报错了。同时,局部变量可屏蔽全局变量。
静态块和非静态块:二者都有很简单的声明方式,只需一对大括号{}就行,静态块的话,在前面加static关键字
执行顺序为:静态块,静态属性->非静态块,属性->构造器
说明:
1. 块和属性的顺序,取决于代码里它们的位置先后。
2. 静态块是在类的装载时执行的(装入.class文件后),且只执行一次。存放在静态域中
例子:
public class Person {
/*静态块*/
static{
System.out.println("this is static block!");
}
/*非静态块*/
{
System.out.println("this is non-static block!");
}
public Person(int id) {
System.out.println("person(" + id + ")");
}
public static void main(String[] args) {
Person p1 = new Person(1);
Person p2 = new Person(2);
}
}
该程序输出结果为:
this is static block!
this is non-static block!
person(1)
this is non-static block!
person(2)