1-1
第一步:编写类
语法格式:[修饰符] class 类名{}
第二步:编写属性
(1)语法格式:[修饰符] 数据类型 属性名称 [=值]
[]中的内容可有可无,属性名称也叫标识符,编写属性也叫成员变量
或实例(对象)变量
(2)当变量(属性)没有赋值时,不同的数据类型默认值也不同
整数类型默认值:0
浮点类型:0.0
字符类型:\u0000
布尔类型:false
所有引用类型的默认值都为:null
第三步:编写方法
语法格式:
[修饰符] 返回类型 方法名称([参数列表]){方法}
方法必须编写在类中
第四步:编写测试类
也就是包含main方法的类(主类)
(1)根据子类在父类中创建对象,语法格式:类名 引用名称 = new 类名 ();
1-2 成员变量和局部变量的区别
(1)成员变量指的是这个类的变量,局部变量是类中方法体内中定义的变量
(2)在同一个类中,成员变量和局员变量可以同名,但局部变量优先
(3)成员变量有默认值,也叫实例变量,局部变量没有默认值,所有局部变量在使用前必须
先声明
1-3 this.xx
(1)当局部变量和成员变量同名时,访问成员变量必须添加this.(成员变量)
(2)this用法
例如: 1、
public class Test{
int i;
public void setI(int i){
this.i = i;
}
}
setI()方法的参数名为i,Test类的属性也为i,所以在setI()方法中必须用this指定具体是哪一个i。
this.i 就代表了当前类(Test)的属性i。这样才可以通过setI()方法为属性初始化。
2、
public class Cat {
String name;
int paw;
public Cat(String name,int paw){
this.name = name;
this.paw = paw;
}
public Cat() {
this("小喵",4);
}
public static void main(String[] args) {
Cat cat = new Cat();
System.out.println(cat.name+cat.paw);
}
(3)this调用其它构造方法
1、只能在构造方法中通过this来调用其他构造方法,普通方法中不能使用。
2、不能通过this递归调用构造方法,即不能在一个构造方法中通过this直接或间接调用 该构造方法本身。
3、通过this调用其他构造方法必须放在构造方法的第一行中执行。
由于super调用父类的构造函数也必须放在构造方法的第一行中执行,
因此,通过this和super调用构造方法不能同时出现一个构造方法中。
也不能在一个构造方法中多次调用不同的构造方法。
(4)public void x(int a){//a是形参,在方法内属于局部变量
this.a=a;//将右边局部变量赋值给左边成员变量a
(5)this.xx即可以访问当前类中的属性和方法,也可以访问父类中的实例变量以及方法
(6)this访问本类无参构造方法:this();且只能编写在构造方法中第一条语句
1-4 构造方法
构造方法:构造方法名称必须和类名一致,构造方法内必须没有返回类型
语法格式:public 方法名称(参数列表){//参数列表中参数可有可无
}
构造方法执行:当创建对象时,则自动会匹配相应的构造方法
(1)隐式构造方法:在创建对象时,系统自动提供一个默认无参构造方法
(2)显示构造方法:在手动编写构造方法时,系统会覆盖原有的隐式构造方法
构造方法重载:在同一个类中,定义多个同名且无返回类型方法时,参数列表不同(个数不同,
类型不同、顺序不同)//
错误实例:参数列表 1、String name 2、String brand
个数相同,类型相同,顺序相同。编译报错
1-5 空指针
空指针异常:编译不报错,运行报错,java.NullPointerException,
原因:引用名称值为Null时,无对象自然不能访问对象中的属性
解决办法:在访问某个对象中的属性或方法之前必须保证该引用名称中
存放的时对象的地址(引用)
1-6 static
(1)static 属性名称// 静态属性,也叫作类的变量
statuc 方法名称//静态方法,也叫作类的方法
(2)在JVM虚拟机内,属性被static修饰过,这就表示属性在共享区域,不再开辟第二块空间,并且所有对象都可以访问(包括引用名称的值为null时,也可以访问),其生命周期与类同在。
(3)静态方法只能访问静态属性、静态方法
//不论是静态方法、静态方法,只要被static 修饰过,在JVM虚拟机内里,
类与static 同步执行,永远优先于对象、实例变量的存在。
(4)静态代码块:完成对静态属性的赋值;静态代码块在类第一次被载入时则执行
static{ 属性赋值 或 输出语句 }
//在main方法中输出语句输出相同的代码俩次,静态代码块只会执行一次