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

简介: Java 学习(09)--方法重载/构造函数1 、方法方法是一组为了实现特定功能的代码块的集合。方法在语法上的功能主要有以下两个:①:结构化代码将代码按照功能进行组织, 使代码的结构比较清晰, 容易阅读和修改, 也就是程序的可维护性强。

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

1 、方法

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

①:结构化代码

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

②:减少代码重复

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

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

①:逻辑严谨

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

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

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

我的总结:

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

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

格式: 

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

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

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

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

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

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

return :结束方法

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

两个明确:

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

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

方法的注意事项 

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

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

示例:

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

输出:30

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

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

2.private 关键字 

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

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

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

输出:null

输出:林青霞

3.this关键字 

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

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

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

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

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

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

示例:

输出:null 0

输出:zs 18

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:带参构造方法

示例:

输出:林青霞 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());
   } 
} 

运行:

4.代码块 

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

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

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

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

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

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

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

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

    

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

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

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

报错(age)

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

报错(age)

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

输出:杨过

目录
相关文章
|
5天前
|
Java
Java基础—笔记—static篇
`static`关键字用于声明静态变量和方法,在类加载时初始化,只有一份共享内存。静态变量可通过类名或对象访问,但推荐使用类名。静态方法无`this`,不能访问实例成员,常用于工具类。静态代码块在类加载时执行一次,用于初始化静态成员。
9 0
|
7天前
|
消息中间件 前端开发 Java
java学习路径
【4月更文挑战第9天】java学习路径
15 1
|
7天前
|
Java
Java 变量命名规则
4月更文挑战第6天
|
7天前
|
设计模式 前端开发 安全
Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
【4月更文挑战第9天】Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
10 1
|
3天前
|
Java 存储
键值之道:深入学习Java中强大的HashMap(二)
键值之道:深入学习Java中强大的HashMap
8 0
键值之道:深入学习Java中强大的HashMap(二)
|
6天前
|
JavaScript Java 测试技术
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
25 0
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
|
24天前
|
前端开发 Java 数据库连接
五年Java学习心路历程
五年Java学习心路历程
32 0
|
25天前
|
存储 Java C语言
【Java】以数组为例简单理解引用类型变量
【Java】以数组为例简单理解引用类型变量
11 1
|
25天前
|
自然语言处理 Java
这是什么操作?java中的变量竟然可以先使用后声明?
这是什么操作?java中的变量竟然可以先使用后声明?
13 0
|
8月前
|
存储 Java 数据库
Java-对象的操作(构造、初始化、封装)、static成员以及代码块(中)
Java-对象的操作(构造、初始化、封装)、static成员以及代码块(中)
39 1