类
1-成员变量
1、在定义成员变量时可以对其初始化,如果不对其初始化,java使用默认的值对其初始化。而局部变量则不会默认初始化!
2、成员变量的作用范围为整个类体
2-如何在内存中区分类和对象
类是静态的概念,位于代码区;对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量),而方法只有一份,执行的时候才占用内存。
同一类的每个对象有不同的成员变量存储空间。
同一类的每个对象共享该类的方法。
1、在定义成员变量时可以对其初始化,如果不对其初始化,java使用默认的值对其初始化。而局部变量则不会默认初始化!
2、成员变量的作用范围为整个类体
2-如何在内存中区分类和对象
类是静态的概念,位于代码区;对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量),而方法只有一份,执行的时候才占用内存。
同一类的每个对象有不同的成员变量存储空间。
同一类的每个对象共享该类的方法。
内存里分四块区域:code segment ,data segment,stack,heap
使用new+构造方法来创建一个对象
构造函数与类同名且没有返回值
方法里的变量和参数都是局部变量,包括构造函数。方法执行完,局部变量就没了!
自己定义了构造函数后,默认的构造函数就不存在了。
使用new+构造方法来创建一个对象
构造函数与类同名且没有返回值
方法里的变量和参数都是局部变量,包括构造函数。方法执行完,局部变量就没了!
自己定义了构造函数后,默认的构造函数就不存在了。
必须使用new关键字创建对象!
同一个类的每个对象有不同的成员变量存储空间
同一类的每个对象共享该类的方法
非静态方法是针对每个对象进行调用
方法的返回值存在一个临时的内存区域里(栈空间)
字符串存放在data segment里
同一个类的每个对象有不同的成员变量存储空间
同一类的每个对象共享该类的方法
非静态方法是针对每个对象进行调用
方法的返回值存在一个临时的内存区域里(栈空间)
字符串存放在data segment里
约定俗称的命名规则
类名首字母大写
变量名和方法名的首字母小写
运用驼峰标识
变量名和方法名的首字母小写
运用驼峰标识
方法重载
方法的重载是指一个类中可以定义相同的名字,但参数不同的多个方法。调用时,会根据不同的参数列表选择对应的方法。
参数不一样是指:参数个数或类型不同
构造方法也能重载!
参数不一样是指:参数个数或类型不同
构造方法也能重载!
this关键字
在类的方法定义中使用的this关键字代表使用该方法的对象的引用
当必须指出当前使用方法中的对象是谁时要使用this
有时使用this可以处理方法中成员变量和参数重名的情况
this可以看做一个变量,它的值是当前对象的引用
当必须指出当前使用方法中的对象是谁时要使用this
有时使用this可以处理方法中成员变量和参数重名的情况
this可以看做一个变量,它的值是当前对象的引用
static关键字
static成员变量存放在data segment里
在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份。
用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可以访问非static的成员
静态方法不再是针对某个对象调用,所以不能访问非静态成员。
可以通过对象引用或类名(不需要实例化)访问静态成员。
在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份。
用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可以访问非static的成员
静态方法不再是针对某个对象调用,所以不能访问非静态成员。
可以通过对象引用或类名(不需要实例化)访问静态成员。
public class Cat{
private static int sid=0;
private String name;
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){
Cat.sid=100;
Cat mimi=new Cat("mimi");
Cat pipi=new Cat("pipi");
mimi.info();
pipi.info();
}
}