类、对象和方法是什么?
类的定义和创建
类是对具体物体的抽象,由 访问修饰符+关键字class+类名+{} 组成,其中
- 类名由字母开头,每个首字母大写,随后跟数字和字符,不可使用关键字
- 每个.java文件的文件名必须和公共类类名相同
- 类中存在成员变量(域)和成员方法,成员变量会自动初始化为默认值
public class Person {
private String name;
}
方法的定义和创建
方法是对类的操作过程,分为
- 普通方法: 访问修饰符(除static)+返回值数据类型+方法名(this,数据类型 参数名)+{}
- 构造方法: 基本访问修饰符+类名(this,数据类型 参数名)+{}
- 静态方法:访问修饰符(除static)+static+返回值数据类型+方法名(数据类型 参数名)+{}
- 如返回值数据类型不为void,在方法内部需通过return返回处理结果
- 方法名第一个首字母小写,其余大写,随后跟数字和字符,不可使用关键字
- this指向的是当前对象的引用(隐藏),用于区分成员变量和局部变量重名问题 ,静态方法不带this指针,静态方法只能操作静态变量
- 每个类都会默认带有一个公用无参构造方法,方法名同类名
- 为保证封装性,类中变量都为私有,暴露公有方法供外部调用
class Person {
private String name;
private static int uid;
Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static int getUid() {
return uid;
}
public static void setUid(int uid) {
Person.uid = uid;
}
}
对象的定义和创建
对象是类的具体化,由类构造对象的过程称为创建类的实例。
- 通过new关键字创建实例:new 构造方法(),也称匿名对象,仅可使用一次
- 把对象存放在变量可以多次使用,类名 变量名=new 构造方法()
Person tom=new Person();
方法的调用
- 对于构造方法:new 构造方法名
- 对于静态方法:类名.静态方法名
- 不是静态方法:变量名.方法名
可变参数
可让方法接收不定数量的参数类型,如下在传入的参数中选择最大值返回
public int selectMax(int... value) {
int largest = Integer.MIN_VALUE;
for (int v : value) {
if (v > largest) {
largest = v;
}
}
return largest;
}
方法参数调用类型
- 按值调用:方法接收的是调用者提供的值
- 按引用调用:方法接收的是调用者提供的变量地址
Java中总是采用按值调用,即方法得到的是参数值的拷贝,不能对其进行修改
传递基本数据类型
对于基本数据类型,拷贝的是值,值不能修改
private void change(int i) {
i = i * 3;
}
i=30,但a还是10,故打印出来的值为10
int a = 10;
change(1);
System.out.println(a);
传递引用数据类型
对于引用数据类型,拷贝的是地址,地址不能修改
class Person {
private String name;
Person(String name) {
this.name = name;
}
}
private void change(Person person) {
person = new Person("john");
}
如下,person指向name="john"的Person,但tom依旧指向name="tom"的Person,不能修改tom的指向
Person tom = new Person("tom");
change(tom);
System.out.println(tom.name);
但地址指向的数据可以修改
class Person {
private String name;
Person(String name) {
this.name = name;
}
}
private void change(Person person) {
person.name="john";
}
如下,tom依旧指向name="tom"的Person,但其name改为了“john”
Person tom = new Person("tom");
change(tom);
System.out.println(tom.name);
方法重载
重载是同名方法拥有顺序不同、类型不同的参数,编译器根据调用者传递的参数匹配出相应的方法,通过this可以实现在构造方法中调用构造方法,实现类构造的统一入口
class Person {
Person(){
this("name");
}
Person(String name){
}
}