class 类名 { 类体;
}
如:class Person { }
注意: 通常情况下,当类名由多个单词组成时,要求每个单词首字母都要大写。
class 类名 {
数据类型 成员变量名 = 初始值;
}
如:class Person {
String name;
}
注意:当成员变量由多个单词组成时,通常要求从第二个单词起每个单词的首 字母大写 。
new 类名();
如:new Person();
注意:a.当一个类定义完毕后,可以使用new关键字来创建该类的对象,这个 过程叫做类的实例化。
b.创建对象的本质就是在内存空间的堆区申请一块存储区域, 用于存放 该对象独有特征信息。
基本概念 :a.使用引用数据类型定义的变量叫做引用型变量,简称为"引用"。 b.引用变量主要用于记录对象在堆区中的内存地址信息,便于下次访问。
语法格式 :
类名 引用变量名;
引用变量名.成员变量名;
如:Person p = new Person();
对象创建后,其成员变量可以按照默认的方式初始化,具体规则如下:
/*
编程实现Person类的定义
*/
public class Person {
// 数据类型 成员变量名 = 初始值; - 其中=初始值 通常都省略不写
String name; // 用于描述姓名的成员变量
int age; // 用于描述年龄的成员变量
// 自定义成员方法实现所有成员变量的打印
// 返回值类型 方法名称(形参列表) { 方法体; }
void show() {
// 成员变量和成员方法都属于类内部的成员,因此可以直接访问成员变量不需要再加引用.的前缀
System.out.println("我是" + name + ",今年" + age + "岁了!");
}
// 自定义成员方法实现将姓名修改为参数指定数值的行为
// String s = "guanyu";
void setName(String s) {
name = s;
}
// 自定义成员方法实现将年龄修改为参数指定数值的行为
// int i = 35;
void setAge(int i) {
age = i;
}
// 自定义成员方法实现将姓名和年龄修改为参数指定数值的行为 下面的方法不推荐使用
// String s = "liubei";
// int i = 40;
void setNameAge(String s, int i) {
name = s;
age = i;
}
// 自定义成员方法实现可变长参数的使用 看作一维数组使用即可 0 ~ n个
void showArgument(int num, String... args) {
System.out.println("num = " + num);
for(int i = 0; i < args.length; i++) {
System.out.println("第" + (i+1) + "个参数为:" + args[i]);
}
}
// 自定义成员方法实现姓名数值的获取并返回的行为
String getName() {
return name; // 返回数据并结束当前方法
// ... 执行不到的
}
// 自定义成员方法实现年龄数值的获取并返回的行为
int getAge() {
return age;
}
public static void main(String[] args) {
// 1.声明Person类型的引用指向Person类型的对象
// 数据类型(类名) 引用变量名 = new 类名();
Person p = new Person();
// 2.打印对象中的成员变量值
// 引用变量名.成员变量名
//System.out.println("我是" + p.name + ",今年" + p.age + "岁了!"); // null 0
// 引用变量名.成员方法名(实参列表);
// 调用方法的本质就是根据方法名跳转过去执行方法体后再跳转回这个位置
p.show();
System.out.println("-----------------------------------------------------");
// 3.修改成员变量的数值
p.name = "zhangfei";
p.age = 30;
// 4.再次打印修改后的数值
//System.out.println("我是" + p.name + ",今年" + p.age + "岁了!"); // zhangfei 30
p.show();
System.out.println("-----------------------------------------------------");
// 5.通过成员方法的调用实现成员变量的修改
p.setName("guanyu");
p.setAge(35);
p.show(); // guanyu 35
System.out.println("-----------------------------------------------------");
// 6.通过成员方法同时修改姓名和年龄
//p.setNameAge("liubei", 40);
int ia = 40;
p.setNameAge("liu"+"bei", ia);
p.show(); // liubei 40
System.out.println("-----------------------------------------------------");
// 7.通过成员方法实现可变长参数的打印
p.showArgument(0);
System.out.println("-----------------------------------------------------");
p.showArgument(1, "参数1");
System.out.println("-----------------------------------------------------");
p.showArgument(2, "参数1", "参数2");
System.out.println("-----------------------------------------------------");
// 8.通过成员方法的调用实现成员变量数值的获取并打印
String str1 = p.getName();
System.out.println("获取到的姓名是:" + str1); // liubei
int ib = p.getAge();
System.out.println("获取到的年龄是:" + ib); // 40
}
}
class 类名 {
返回值类型 成员方法名(形参列表) {
成员方法体; }
}
如:
class Person {
void show() {
System.out.println("没事秀一下!"); }
}
建议:当成员方法名由多个单词组成时,要求从第二个单词起每个单词的首字母大写
-
返回值主要指从方法体内返回到方法体外的数据内容。
-
返回值类型主要指返回值的数据类型,可以是基本数据类型,也可以是
引用数据类型。
-
当返回的数据内容是66时,则返回值类型写 int 即可
-
在方法体中使用return关键字可以返回具体的数据内容并结束当前方法。
-
当返回的数据内容是66时,则方法体中写 return 66; 即可
-
当该方法不需要返回任何数据内容时,则返回值类型写void即可。
• 形式参数主要用于将方法体外的数据内容带入到方法体内部。
• 形式参数列表主要指多个形式参数组成的列表,语法格式如下:
数据类型 形参变量名1, 数据类型 形参变量名2, ...
• 当带入的数据内容是"hello"时,则形参列表写 String s 即可
• 当带入的数据内容是66和"hello"时,则形参列表写 int i, String s 即可
• 若该方法不需要带入任何数据内容时,则形参列表位置啥也不写即可
• 成员方法体主要用于编写描述该方法功能的语句块。
• 成员方法可以实现代码的重用,简化代码。
• 引用变量名.成员方法名(实参列表); 如 p.show();
• 实际参数列表主要用于对形式参数列表进行初始化操作,因此参数的个
数、类型以及顺序都要完全一致。
• 实际参数可以传递直接量、变量、表达式、方法的调用等。
• 返回值类型 方法名(参数的类型... 参数名)
• 方法参数部分指定类型的参数个数是可以改变的,也就是0~n个 。
• 一个方法的形参列表中最多只能声明一个可变长形参,并且需要放到参 数列表的末尾
-
基本数据类型的变量作为方法的参数传递时,形参变量数值的改变通常 不会影响到实参变量的数值,因为两个变量有各自独立的内存空间;
-
引用数据类型的变量作为方法的参数传递时,形参变量指向内容的改变 会影响到实参变量指向内容的数值,因为两个变量指向同一块内存空间
-
当引用数据类型的变量作为方法的参数传递时,若形参变量改变指向后 再改变指定的内容,则通常不会影响到实参变量指向内容的改变,因为 两个变量指向不同的内存空间。