java 构造函数static_Java 学习(09)--方法重载/构造函数/static 变量

Java 学习(09)--方法重载/构造函数

1 、方法

方法是一组为了实现特定功能的代码块的集合。方法在语法上的功能主要有以下两个:

①:结构化代码

将代码按照功能进行组织, 使代码的结构比较清晰, 容易阅读和修改, 也就是程序的可维护性强。

②:减少代码重复

一个固定的功能, 可能会在程序中多次使用, 在使用时只需要调用写好的方法, 而不用重复书写对应的功能代码。

方法在书写时需要注意以下两点:

①:逻辑严谨

方法实现的一个完整的功能, 所以在书写时要考虑到各种可能的情况, 并对每种情况做出恰当的处理。

②:通用性强(可重复利用)

方法实现的是一种功能, 在实际实现时, 可以根据需要, 使方法具备一定的通用性,除非必要,否则不要写专用的方法。在 Java 语言中,恰当的使用方法,将使程序更加优雅,便于阅读和使用。

我的总结:

方法:一段可重复使用的代码段;

程序中完成独立功能的一段代码的集合

格式:

修饰符返回值类型方法名 (参数类型参数名 1,参数类型参数名 2...) { 方 法 体 语 句                                        ; return 返回值 ;

}

修饰符:目前就用 public static 。后面再详细讲解其他修饰符返回值类型:就是功能结果的数据类型

方法名:就是起了一个名字,方便我们调用该方法。参数类型:就是参数的数据类型

参数名:就是变量参数分类:

实参:实际参与运算的数据

形参:方法上定义的,用于接收实际参数的变量方法体语句:就是完成功能的代码块

return :结束方法

返回值:就是功能的结果,由 return 带给调用者。

两个明确:

返回值类型:结果的数据类型

参数列表:参数的个数及对应的数据类型

方法的注意事项

A:方法不调用不执行    B:方法之间是平级关系,不能嵌套定义          C:方法定义的时候,参数是用,隔开的

D:方法在调用的时候,不用在传递数据类型           E:如果方法有明确的返回值类型,就必须有 return 语句返回。

示例:

d1c3053670d33fdda823028e5ac41a14.png

输出:11  (将a,b写固定了,不推荐)

e4117d4d1dad391e874a243c3db62cfa.png

输出:30

(方法重载 overload:在一个类中方法同名不同参----1.方法名相同 2.参数列表不同:数量、类型、顺序不同)

410f2155ca74482597fb9547a30a1e10.png

不能根据返回值类型判断方法重载

2.private 关键字

(1)私有的意义,可以修饰成员变量和成员方法

(2)特点: 被 private修饰的后的成员只能在本类中被访问

(3)private 的应用: 以后再写一个类的时候:把所有的成员变量给 private 了 提供对应的 getXxx()/setXxx() 方法

261b70a5fc4d28803b7d9e46192f60c9.png

输出:null

313bb829d58938ac157bf5bba048bde3.png

输出:林青霞

3.this关键字

(1)代表当前类的引用对象 (哪个对象调用方法,该方法内部的 this 就代表那个对象)

(2)this 的应用场景: A:解决了局部变量隐藏成员变量的问题

当变量一个是成员变量,一个是局部变量时,变量可以重名,就近原则

this 表示该类的一个对象的引用(那个对象调用这个方法,this 就表示那个方法)

this 作用:1.当局部变量和成员变量同名时,通过 this 关键字 调用成员变量

ad2b89fe795b9782897ff7f08a083877.png

this 作用2:通过 this(),用于构造方法的第一行,用来调用其他构造方法

示例:

3d76d34b7b8a727f7ee517fa6b1bee98.png

66122f4c8da174e3efceb17d3d47939a.png

输出:null 0

2b593a96611f37fea1fa909e6ee822b7.png

输出:zs 18

4325af02f0ce54ad2ef7129369182cd0.png

4.构造方法

(1)作用:1.用来创建对象 2.用于对对象的成员变量进行数据的初始化

(2)格式: A:方法名和类名相同(包括大小写) B:没有返回值类型,连 void 都不能有,也没有返回值

C:不能通过对象 . 方法名的方式进行调用,而是通过 new 关键字进行调用new 对象()

思考题:构造方法中可不可以有 return语句呢 ?

可以。而是我们写成这个样子就 OK 了:return; 其实,在任何的 void 类型的方法的最后你都可以写上: return;

(3)构造方法的注意事项

A:如果我们没写构造方法,系统将提供一个默认的无参构造方法

B:如果我们给出了构造方法,系统将不再提供默认构造方法 如果这个时候,我们要使用无参构造方法,就必须自己给出。

C:构造函数也可以重载

推荐:永远手动提供一个无参数的构造方法。

(4)给成员变量赋值的方式(3个) A:定义成员变量时赋值(不常用) B:通过set方法赋值  C:带参构造方法

示例:

1e4ef69e78db648aeb0bed50a452c755.png

543962e479f46c1cd726e48d25af0b2a.png

313bb829d58938ac157bf5bba048bde3.png

输出:林青霞 40

创建一个对象时 (Student s = new Student()),都做了那些事

1.将 Student.class 加载到内存(只有第一次创建时才加载)

2.在栈内存中为变量 s 开辟空间

3.在栈内存中为学生变量开辟空间

4.给学生的成员变量进行默认初始化 null 0

5.给学生类的成员变量进行显示的初始化

6.通过构造方法给成员变量进行初始化

7.对象构造完毕,将对象地址(引用)赋值给 s 变量

(5)标准案例

class Student {

private String name;

private int age;

public Student(){}

public Student(String name,int age) {

this.name = name; this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

成员变量赋值的方式:

class StudentDemo {

public static void main(String[] args) {

//方式 1

Student s1 = new Student();

s1.setName("小明");

s1.setAge(18);

System.out.println(s1.getName()+"---"+s1.getAge());

//方式 2

Student s2 = new Student("小刚",19);

System.out.println(s2.getName()+"---"+s2.getAge());

}

}

运行:

f0b4ff938a60a2eefb5966eca686b7f4.png

4.代码块

(1)用{} 括起来的代码。

(2)分类: A:局部代码块 用于限定变量的生命周期,及早释放,提高内存利用率。 B:构造代码块 把多个构造方法中相同的代码可以放到这里, 每个构造方法执行前, 首先执行构造代码块。 C:静态代码块 对类的数据进行初始化,仅仅只执行一次。

(3)静态代码块 ,构造代码块 ,构造方法的顺序问题 ? 静态代码块 > 构造代码块 > 构造方法

static : 静态的意思,可以修饰成员变量和成员方法

特点:1.谈过static 变量修饰的变量是静态变量,所有的该类的对象共享静态变量

2.静态变量随着类的加载而加载(.class)优先于对象而存在的

3.静态的变量和静态的方法可以不用创建该类的对象,直接通过类名通过类名 . 变量名或 类名 . 方法名(实参列表)

4.不能在静态的方法中访问非静态的变量,在非静态的方法中可以访问静态的变量

a15a18e36067d5f22691c4e06dc14c52.png

5a75b2a6a78d73e69e996db3092d5270.png

特点2.静态变量随着类的加载而加载(.class)优先于对象而存在的

11d2902d4974b010ab8c5642b2a1e970.png

9093833f7ad6758140b61b9aff11c7dc.png        static 变量修饰的变量不放在栈中,放在静态编码区

8e3d50b2579190e65ea2cbffc88cbc68.png

特点3:静态的变量和静态的方法可以不用创建该类的对象,直接通过类名通过类名 . 变量名或 类名 . 方法名(实参列表)

fbf4391b24ef6699ff5edc6a4597f030.png

78393c4be24048bb65d3c01a8cfb06da.png

14983c17d190b7f66ba42e7eda3a478c.png

报错(age)

特点4.不能在静态的方法中访问非静态的变量,在非静态的方法中可以访问静态的变量

626cc6f356cbdda420cd6f3cec15e31a.png

报错(age)

78298c52635b6793403844356b542d7d.png

输出:50  (需要定义变量)

bf66ea0b02738731453755d6c0bffb3b.png

输出:杨过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值