方法,是类或对象(实例)的行为特征的抽象。从功能上看,它完全类似于传统结构化程序设计里的函数。但是在Java中,方法是不能独立存在的,它必须定义在类里。在逻辑上,它要么属于类,要么属于对象(实例)。
一个方法,如果被static修饰,那么它就是类方法,归属于类,否则它归属于对象(实例)。(它就这2种)
同归属的不同方法之间的相互调用,若是非静态方法,则是对象调用,否则是类调用。对象调用时,可以用this显示调用,也可以省略this。
在类的方法中,会碰到“递归方法”这一词。那么什么是递归方法呢?其实,递归方法就是一个方法体内调用它自身。不过要注意递归的方向,否则就会陷入无限递归。
当同一个类里出现多个同名方法,且形参列表各不相同。那么称之为方法重载。它的要求如同定义所言 -- 同类同方法名、不同的形参列表,对于方法的返回值类型、修饰符等,就跟方法重载扯不上边了。
下面贴出上面所涉及到点的代码:
package com.ClassTests;
/**************************************************
*
* @author: 瘋叻ハ.兩
* @create-time: 2011-5-15 下午04:56:44
* @revision: 1.0
* @purpose: 介绍方法的使用
*
***************************************************/
public class MethodTest1 {
public static String name = "张三";
public static void run() {
System.out.println("这是类的方法");
}
public void say(String message){
say(); // 同归属的不同方法之间相互调用,非静态方法,是对象调用,可以省略this引用对象,等同于this.say();
run(); // 静态方法默认类调用,等同于 MethodTest1.run();
}
// say(String message)的重构方法
// 在对象方法里修改类的属性
public void say(){
System.out.println("类的name属性值为:"+MethodTest1.name);
MethodTest1.name = "李四";
}
// 递归方法
public static int fn(int n){
if( n == 0 ) {
return 1;
}else if(n == 1){
return 4;
}else {
return 2* fn(n-1)+fn(n-2);
}
}
public static void main(String[] args) {
System.out.println("方法递归后的结果是:"+fn(4));
run(); //调用类的方法
new MethodTest1().say();
System.out.println("更改后的name值为:"+new MethodTest1().name); // 此处对上篇的拓展 -- 不同方法内实例修改类的属性同样改变
}
}
方法中还有个重点也是难点:方法参数的传递。 为什么呢?且看下面2种类型的方法参数的传递
1、基本类型的参数传递
public class TestA {
public static void swap(int a, int b){
int temp = a;
a = b;
b = temp;
System.out.println("交换后,a的值是:"+ a + ",b值是:"+b);
}
public static void main (String[ ] args) {
int a = 6;
int b = 9;
swap(a,b);
System.out.println("a的值是:"+ a + ",b值是:"+b);
}
}
2、引用类型的参数传递
public class TestB {
int a;
int b;
public static void swap(TestB t){
int temp = t.a;
t.a = t.b;
t.b = temp;
System.out.println("交换后,a的值是:"+ t.a + ",b值是:"+t.b);
}
public static void main (String[ ] args) {
TestB t = new TestB();
t.a = 6;
t.b = 9;
swap(t);
System.out.println("a的值是:"+ t.a + ",b值是:"+t.b);
}
}
不妨copy运行,试问自己是否懂得它们2个是怎么发生转换的...
在Java中方法的参数传递方式只有一种:值传递 --- 就是将实际参数值的的副本(复制品)传入方法内,而实参本身不会受到任何影响。
详细的解析部分请请看图片TestA、TestB。
- 大小: 30.4 KB
- 大小: 53.5 KB
分享到:
相关推荐
本篇文章将深入探讨“Java起航——类的初始化历程”,并结合JVM(Java虚拟机)的工作原理,帮助你更好地理解这个过程。 首先,我们需要了解Java类的生命周期,它包括加载、验证、准备、解析和初始化五个阶段。当一...
### Java起航之旅 #### 一、Java发展简史与命名由来 Java语言的起源可以追溯至1990年代初期,最初是由Sun Microsystems公司的James Gosling带领团队开发的一种名为“Oak”的语言。这个名字源自于James Gosling...
T1_起航JAVA旅程 java 经典教程 经典教材
【Android起航 Beginning Android】章节主要讲解了在Android开发中如何使用XML进行布局设计,这是构建用户界面的常见方法。XML-Based Layouts是Android中创建界面的主要方式,它允许开发者在XML文件中定义UI组件及其...
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。它的设计目标是简洁、通用、高效、安全,并且可以在各种硬件和...希望这些资料能帮助你在Java的世界里顺利起航。
"卡斯特起航报关系统"是一个基于SSH(Struts2、Spring、Hibernate)框架构建的物流管理系统。SSH是Java Web开发中常见的三大开源框架,它们分别负责MVC模式中的表现层、业务层和持久层,协同工作以提高开发效率和...
在“Web起航源代码”这个压缩包中,我们看到的是与Web开发相关的源代码集合。Web开发是一个广泛的领域,涵盖了前端(用户可见的部分)和后端(服务器端处理)的技术。下面,我们将深入探讨这些知识点,以帮助你理解...
### JAVA性能优化关键知识点 #### 一、字符串处理与优化 **1.1 字符串拼接** - **原理解析**: 在Java中,`String` 类型是不可变的,这意味着每次对 `String` 对象进行修改都会创建一个新的 `String` 对象。当涉及...
- 接口是Java中定义抽象方法和常量的集合,它是完全抽象的类。 - 使用`interface`关键字定义接口,通过`implements`关键字实现接口。 7. **异常处理**: - 异常是程序运行时出现的问题,Java提供了异常处理机制...
sudo apt-get install sun-java6-bin sun-java6-jre sun-java6-jdk ``` - 更新默认Java版本: ```bash sudo update-java-alternatives –s java-6-sun ``` - **配置JAVA环境变量:** - 修改 `/etc/environment...
- 在Java代码中,可以通过 `findViewById()` 方法找到XML布局中定义的组件,然后进行操作,如改变文本、设置点击事件等。 - `@+id/button` 是在XML中定义ID的方式,`+` 表示创建新的ID,`R.id.button` 在Java代码...
Eclipse Paho是MQTT的一个开源实现,提供了多种编程语言的客户端库,包括Java。"org.eclipse.paho.client.mqttv3-1.2.5.zip"是一个包含Eclipse Paho MQTT Java客户端库的压缩包,版本号为1.2.5。 此压缩包主要包括...
9. **JVM**:理解Java虚拟机的工作原理,包括类加载机制、内存模型(堆、栈、方法区、本地方法栈等)、垃圾回收机制、性能优化策略。 10. **Spring框架**:作为企业级应用的主流框架,Spring的IoC容器、AOP(面向切...
《良葛格 Java 学习笔记》是一份专为初学者设计的 Java 编程教程,旨在帮助初入编程领域的学习者快速掌握 Java 语言的基础知识。这份 PDF 格式的文档详细介绍了 Java 的核心概念、语法和编程技巧,是学习 Java 的...
Java Tess4J 实现OCR 可运行Demo 一 下载相关的jar包 1.下载Tess4J jar,网址:http://sourceforge.net/projects/tess4j/ 2.如果你使用的JVM 64位的,还需要下载 liblept168.dll、libtesseract302.dll的64位文件,...
DisplayTag是Java Web开发中的一款开源表格标签库,它为开发者提供了一种高效且易于使用的表格展示解决方案。DisplayTag-1.1.jar是这个库的主要组件,包含了处理表格展示的各种功能,如排序、分页、格式化数据以及...
反射是Java的动态特性,允许我们在运行时检查和操作类、接口、字段和方法。我们将学习如何使用反射进行类型检查、动态实例化和调用方法。注解是元数据的一种形式,用于向编译器或JVM提供信息,我们将探讨其基本用法...
《Think in Java》是Java编程领域的一本经典著作,由Bruce Eckel撰写,深受程序员喜爱。这个源码工程是基于《Think in Java》第四版(4th Edition)编写的,目的是为了帮助读者在学习过程中更好地理解和实践书中的...
这是一份java学习资料,里面包括java基础、javaee、数据库学习资料,ssh\ssm框架,才用网页离线方式进行学习。
这份资料详细介绍了Java 2D的各种概念、类库和方法,涵盖了基本绘图、文本处理、图像操作、打印服务等内容,并通过实例代码展示如何在实际项目中使用这些功能。通过深入学习和实践,开发者可以掌握Java 2D API的精髓...