类的定义
[
修饰符
] class
类名
{
类体
=
属性
+
方法
}
public class Student {
int no;
String name;
int age;
boolean sex;
}
对象的创建与使用
public class StudentTest {
public static void main(String[] args) {
int i = 10;
Student s1 = new Student();
s1.no = 100;
s1.name = "zhangsan";
s1.sex = true;
s1.age = 20;
System.out.println("学号 = " + s1.no);
System.out.println("姓名 = " + s1.name);
System.out.println("性别 = " + s1.sex);
System.out.println("年龄 = " + s1.age);
}
}
局部变量存储在栈上,实例变量存储在堆上,实例变量在new的时候初始化,
java
程序员没有权利直接操作堆内存,只能通过“引用”去访问堆内存中的对象。
构造方法
语法格式:
[
修饰符列表
]
构造方法名
(
形式参数列表
) {
构造方法体
;
}
构造方法名和类名一致。
构造方法用来创建对象,以及完成属性初始化操作。
构造方法返回值类型不需要写,写上就报错,包括
void
也不能写。
构造方法的返回值类型实际上是当前类的类型。
一个类中可以定义多个构造方法,这些构造方法构成方法重载。
public class Date {
int year; //年
int month; //月
int day; //日
//构造方法(有参数构造方法)
public Date(int year) {
System.out.println("带有参数 year 的构造方法");
}
}
public class DateTest {
public static void main(String[] args) {
System.out.println("main begin");
new Date();//会报错
System.out.println("main over");
}
}
当一个类没有显示的定义任何构造方法的时候,系统默认提供无参数构造方法,当显示的定义构造方法之后,系统则不再提供无参数构造方法。无参数构造方法又叫做缺省构造器,或者默认构造方法。
一般在开发中为了方便编程,建议程序员手动的将无参数构造方法写上。
在编写构造方法的时候需要注意变量名的问题:
空指针异常
public class BalloonTest {
public static void main(String[] args) {
Balloon ball = new Balloon("红色" , "氢气");
System.out.println("气球颜色是:" + ball.color);
System.out.println("气球中的气体是:" + ball.gas);
ball = null;
//空指针异常
System.out.println("气球颜色是:" + ball.color);
}
}
方法调用时参数的传递问题
public class AssignmentTest {
public static void main(String[] args) {
//基本数据类型
int a = 10;
int b = a; //a 赋值给 b,a 把什么给了 b?
//引用数据类型
Bird bird1 = new Bird("polly");
//bird1 赋值给 bird2,bird1 把什么给了 bird2?
Bird bird2 = bird1;
}
}
a
赋值给
b
,本质上不是把
a给了
b
,而是把
a
变量中保存的“值
10
”复制了一份给了
b
bird1
赋值给
bird2
本质上不是把
bird1
给了
bird2
,而是把
bird1
变量中保存的“值
0x8888
”复制了一份给了
bird2