1、类与对象
(1)类:是同一类事物的统称。
组成:属性对应特点,方法对应行为。
(2)对象:具体存在的事物。(万物皆对象)
设计类时,要抽离出面对的对象的共同的特点(属性)以及行为(方法)。
2、成员变量&成员方法&局部变量
(1)成员变量:
也就是全局变量。
注意点:如果全局变量未进行初始化或者赋值,就会有默认值,int:0 double:0.0 boolean:false String:null
还有一种特殊情况(数组):
public class Person {
public static void main(String[] args) {
int[] money = new int[5];
for(int i=0;i<money.length;i++) {
System.out.println(money[i]);
}
}
}
结果:
0
0
0
0
0
(2)成员方法:
格式:访问修饰符 返回值类型 方法名(参数列表){ }
说明:参数列表的考虑就是,如果执行这个方法,需要依赖第三方数据,就写上对应的参数。
方法的重载:方法名相同,参数列表不相同,即与参数的类型、个数、顺序有关,与参数名无关,与方法的访问修饰符及返回值类型无关。
(3)局部变量:
在成员方法内定义的变量。
注意点:
(1)局部变量在使用前需要初始化或者赋值,否则会有编译错误。
(2)注意局部变量的作用域,避免变量名的重复使用。
(3)局部变量是在方法执行时创建,在方法执行结束时被销毁。
3、构造方法
作用: 调用构造方法来创建对象。
分类: 无参构造方法和有参构造方法(可以初始化对象)
注意点:
(1)如果一个类中既没有写无参构造方法,也没有写有参构造方法,那么创建对象时默认调用无参构造方法。
(2)如果一个类里手动写上了有参构造方法,那么默认就不会调用无参构造方法。
4、对象的创建
格式: 类名 name = new 构造方法();
作用: 方便对对象的属性和方法进行操作(对象名.属性、方法)
调用属性/方法特殊的方式:
调用静态方法or属性的时候,可以不用创建对象。
public class Person {
//静态属性
public static int age;
public static void main(String[] args) {
System.out.println(age);
print();
}
//静态方法
public static void print() {
System.out.println("abc");
}
}
特别地, 当用“==”来比较两个对象的时候,比较的是两个对象的“地址”。每使用一次new,都会创建一个新的对象,占用新的内存空间。
5、this关键字
作用:
(1)区分成员变量和局部变量
public class Person {
String name;
int age;
public Person() {
super();
}
public Person(String name, int age) {
super();//Object类
this.name = name;
this.age = age;
}
}
(2)本类的对象引用,哪个对象调用的,this就表示哪一个对象。
举例:
public class Person {
String name;
int age;
public Person(String name, int age) {
super();//Object类
this.name = name;
this.age = age;
}
public static void main(String[] args) {
String nameMain = "ff";
int ageMain = 18;
Person person = new Person(nameMain,ageMain);
}
}
从内存图的角度理解:
(3)利用this可以在无参构造方法中调用有参构造,也可以在有参构造中调用无参构造。
举例:
public class Person {
String name;
int age;
public Person() {
this("ff",18);//必须放在第一行
System.out.println("这是无参构造");
}
public Person(String name, int age) {
//this();
this.name = name;
this.age = age;
}
}