一 类与对象的定义
类:可以简单理解成是一块模板,是比较抽象的。
对象:就是对于类的实例化,就是具体的,在java中类的实例化通过关键字new来实现。
基本语法规则
//类的创建:
class <类名> {
属性/字段/成员变量
成员方法
}
// 类的实例化:
<类名>+对象名 = new + <类名>();
例如
class Person{ public String name;//成员属性(成员变量) public int age;//成员属性(成员变量) public void eat(){//成员方法 System.out.println("睡觉"); } } public class practiceone{ public static void main(String[] args) { Person person = new Person();//对象的实例化 person.name="java";//给对象赋值 person.age = 1;//给对象赋值 System.out.println(person.name); System.out.println(person.age); person.eat(); Person person1 = new Person(); person1.name="python"; System.out.println(person1.name); } }
从以上代码示例来看,我们可以发现以下特点:
1 一个类是可以创建多个实例化对象(person,person1)
2 通过关键字new来实例化对象
3 通过.这个来访问对象里的属性以及方法
二 类的成员变量
字段/属性/成员变量(普通成员变量)
class Person{ public String name; public int age;//方法之外,类里面的变量称为字段/成员变量/属性 public void eat(){ System.out.println("睡觉"); } } public class practiceone{ public static void main(String[] args) { Person person = new Person();//对象的实例化 System.out.println(person.name); System.out.println(person.age); } }
运行结果
null
0
1 对于类里的name,age都属于成员变量
2 如果没有对对象的成员变量设置一个初始值,那么显示的就会是一个默认的初始值,在这里对于各种数字类型,默认的值是0
对于浮点类型,默认的值为0.0
对于字符型,默认的值为’\u0000’
对于布尔类型,默认值是false
对于其他引用(String,Array以及定制类),这些的默认值为null。
对于类里面的成员变量是可以直接在类里面赋值的,但我们不希望每一个对象的属性都是一样的,以name为例,不能每一个对象就叫做java
静态成员变量
静态成员变量就是在普通成员变量的形式上,多加了一个Static进行修饰,体会下列代码
class Person{ public static int count; public String name; public int age;//方法之外,类里面的变量称为字段/成员变量/属性 public void eat(){ System.out.println("睡觉"); } } public class practiceone{ public static void main(String[] args) { Person person = new Person();//对象的实例化 person.count=10; } }
其实这个代码看上去是没有什么错的,但是在编译器上,对于person.count会报警告,这就是静态成员变量的特点所决定的,静态成员变量是不依赖于对象的,所以在这里就没有必要实例化对象,静态成员变量是属于类的,所以正确的调用方式应当直接利用类名(Person.count)
class Person{ public static int count; public String name; public int age; public void eat(){ System.out.println("睡觉"); } } public class practiceone{ public static void main(String[] args) { Person person = new Person(); person.age++; Person.count++; System.out.print(person.age); System.out.println(Person.count); Person person1 = new Person(); person1.age++; Person.count++; System.out.print(person1.age); System.out.print(Person.count); } }
运行结果
11
12
图解过程
从以上可以得出,其实我们的静态变量是在方法区中,并且每个对象都是共用一个方法区的,所以才会得出第一个创建对象的count为1,第二个创建对象的count为2.
总结:
1 对于普通成员变量的使用是需要进行对象的实例化,而对于静态成员变量是不依赖于对象的,所以不需要进行对象的实例化,它是属于类的,需要利用类名进行使用。
2 对于静态的成员变量是属于方法区的,不是在堆里。
java中类与对象回顾总结-2