Java方法02-调用,传参,this,new

1、方法的定义                                                    

1 格式:  修饰符 返回类型 方法名(参数列表)异常抛出类型{...}

1. 修饰符

1   public、static、abstract、final等等都是修饰符,一个方法可以有多个修饰符。例如程序入口 main方法,就使用了public static这个俩个修饰符

2   注:如果一个方法或者属性有多个修饰符,这多个修饰符是没有先后顺序的

2. 返回类型

1   方法执行完如果有要返回的数据,那么就要声明返回数据的类型,如果没有返回的数据,那么返回类型就必须写void.

2   只有构造方法(构造器)不写任何返回类型也不写void

【示例】

 

思考:声明返回类型的方法中一定要出现return语句,那么没有返回类型(void)的方法中,能不能出现 return语句?

注:break和return的区别

 

3. 方法名

 

4. 参数列表

1   根据需求定义,方法可以是无参的,也可以有一个参数,也可以有多个参数

5. 异常抛出类型

1   如果方法中的代码在执行过程中,可能会出现一些异常情况,那么就可以在方法上把这些异常声明并抛出, 也可以同时声明抛出多个异常,使用逗号隔开即可。

【示例】

 

 

2、方法调用                                                       

在类中定义了方法,这个方法中的代码并不会执行,当这个方法被调用的时候,方法中的代码才会被一行一行顺序执行。

1. 非静态方法

1   没有使用static修饰符修饰的方法,就是非静态方法.

2   调用这种方法的时候,是"一定"要使用对象的。因为非静态方法是属于对象的。(非静态属性也是一样的)

【例子】

 

2. 静态方法

1   使用static修饰符修饰的方法,就是静态方法.

2   调用这种方法的时候,"可以"使用对象调用,也"可以"使用类来调用,但是推荐使用类进行调用,因为静态方法是属于类的。(静态属性也是一样的)

【例子】

 

3. 类中方法之间的调用假设同一个类中有俩个方法,a方法和b方法,a和b都是非静态方法,相互之间可以直接调用。

 

a和b都是静态方法,相互之间可以直接调用.

 

a静态方法,b是非静态方法,a方法中不能直接调用b方法,但是b方法中可以直接调用a方法. 静态方法不能调用非静态方法!

 

另外:在同一个类中,静态方法内不能直接访问到类中的非静态属性.

总结:类中方法中的调用,两个方法都是静态或者非静态都可以互相调用,当一个方法是静态,一个方法是非静态的时候,非静态方法可以调用静态方法,反之不能。

3、调用方法时的传参                                         

1. 形参和实参

【例子】

 

参数列表中的a是方法test的形参(形式上的参数) 调用方法时的x是方法test的实参(实际上的参数)

注意:形参的名字和实参的名字都只是一个变量的名字,是可以随便写的,我们并不关心这个名字,而是关心变量的类型以及变量接收的值。

2. 值传递和引用传递调用方法进行传参时,分为值传递和引用传递两种。如果参数的类型是基本数据类型,那么就是值传递。

如果参数的类型是引用数据类型,那么就是引用传递。值传递是实参把自己变量本身存的简单数值赋值给形参.

引用传递是实参把自己变量本身存的对象内存地址值赋值给形参.

所以值传递和引用传递本质上是一回事,只不过传递的东西的意义不同而已.

【示例:值传递】

 

【示例:引用传递】

 

4、this关键字                                                   

在类中,可以使用this关键字表示一些特殊的作用。

1、   this在类中的作用

【区别成员变量和局部变量】

 

【调用类中的其他方法】

 

注:默认情况下,setName("tom")和this.setName("tom")的效果是一样的.

【调用类中的其他构造器】

 

注:this的这种用法,只能在构造器中使用.普通的方法是不能用的.并且这局调用的代码只能出现在构造器中的第一句.

【示例】

 

2、   this关键字在类中的意义

this在类中表示当前类将来创建出的对象.

【例子】

 

运行后看结果可知,this和s打印的结果是一样的,那么其实也就是变量s是从对象的外部执行对象,而this是在对象的内部执行对象本身.

 这样也就能理解为什么this.name代表的是成员变量,this.setName("tom")代表的是调用成员方法,因为这俩句代码从本质上讲,和在对象外部使用变量s来调用是一样的,s.name和s.setName("tom")。

【this和s打印出来的内存地址是一样的,使用==比较的结果为true。】

 

【 类中的this是和s1相等还是和s2相等呢?】

 

注:这句话是要这么来描述的,s1对象中的this和s1相等,s2对象中的this和s2相等,因为类是模板,模板中写

的this并不是只有一个,每个对象中都有一个属于自己的this,就是每个对象中都一个属于自己的name属性一样.

创建与初始化对象                                   

使用new关键字创建对象

使用new关键字创建的时候,除了分配内存空间之外,还会给 创建好的对象 进行默认的初始化 以 及对类中构造器的调用。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值