`
瘋叻ハ.兩
  • 浏览: 82362 次
  • 性别: Icon_minigender_1
  • 来自: 宁德
社区版块
存档分类
最新评论

Java起航 ---- 方法

阅读更多

 

     方法,是类或对象(实例)的行为特征的抽象。从功能上看,它完全类似于传统结构化程序设计里的函数。但是在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中方法的参数传递方式只有一种:值传递 --- 就是将实际参数值的的副本(复制品)传入方法内,而实参本身不会受到任何影响。

      详细的解析部分请请看图片TestATestB

  • 大小: 30.4 KB
  • 大小: 53.5 KB
1
0
分享到:
评论

相关推荐

    Java起航 ---- 类的初始化历程

    本篇文章将深入探讨“Java起航——类的初始化历程”,并结合JVM(Java虚拟机)的工作原理,帮助你更好地理解这个过程。 首先,我们需要了解Java类的生命周期,它包括加载、验证、准备、解析和初始化五个阶段。当一...

    Java起航之旅

    ### Java起航之旅 #### 一、Java发展简史与命名由来 Java语言的起源可以追溯至1990年代初期,最初是由Sun Microsystems公司的James Gosling带领团队开发的一种名为“Oak”的语言。这个名字源自于James Gosling...

    T1_起航JAVA旅程

    T1_起航JAVA旅程 java 经典教程 经典教材

    android起航 Beginning Android

    【Android起航 Beginning Android】章节主要讲解了在Android开发中如何使用XML进行布局设计,这是构建用户界面的常见方法。XML-Based Layouts是Android中创建界面的主要方式,它允许开发者在XML文件中定义UI组件及其...

    JAVA学习课件(概述,基础,类和对象)

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。它的设计目标是简洁、通用、高效、安全,并且可以在各种硬件和...希望这些资料能帮助你在Java的世界里顺利起航。

    卡斯特起航报关系统

    "卡斯特起航报关系统"是一个基于SSH(Struts2、Spring、Hibernate)框架构建的物流管理系统。SSH是Java Web开发中常见的三大开源框架,它们分别负责MVC模式中的表现层、业务层和持久层,协同工作以提高开发效率和...

    web起航源代码

    在“Web起航源代码”这个压缩包中,我们看到的是与Web开发相关的源代码集合。Web开发是一个广泛的领域,涵盖了前端(用户可见的部分)和后端(服务器端处理)的技术。下面,我们将深入探讨这些知识点,以帮助你理解...

    JAVA性能优化.pptx

    ### JAVA性能优化关键知识点 #### 一、字符串处理与优化 **1.1 字符串拼接** - **原理解析**: 在Java中,`String` 类型是不可变的,这意味着每次对 `String` 对象进行修改都会创建一个新的 `String` 对象。当涉及...

    java 基础 ppt(下)

    - 接口是Java中定义抽象方法和常量的集合,它是完全抽象的类。 - 使用`interface`关键字定义接口,通过`implements`关键字实现接口。 7. **异常处理**: - 异常是程序运行时出现的问题,Java提供了异常处理机制...

    hadoop完全分布配置指南

    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...

    [嵌入式系统设计精品文献] Android起航 外文文献及翻译.doc

    - 在Java代码中,可以通过 `findViewById()` 方法找到XML布局中定义的组件,然后进行操作,如改变文本、设置点击事件等。 - `@+id/button` 是在XML中定义ID的方式,`+` 表示创建新的ID,`R.id.button` 在Java代码...

    org.eclipse.paho.client.mqttv3-1.2.5.zip

    Eclipse Paho是MQTT的一个开源实现,提供了多种编程语言的客户端库,包括Java。"org.eclipse.paho.client.mqttv3-1.2.5.zip"是一个包含Eclipse Paho MQTT Java客户端库的压缩包,版本号为1.2.5。 此压缩包主要包括...

    java面试资料.rar

    9. **JVM**:理解Java虚拟机的工作原理,包括类加载机制、内存模型(堆、栈、方法区、本地方法栈等)、垃圾回收机制、性能优化策略。 10. **Spring框架**:作为企业级应用的主流框架,Spring的IoC容器、AOP(面向切...

    良葛格 java 学习笔记

    《良葛格 Java 学习笔记》是一份专为初学者设计的 Java 编程教程,旨在帮助初入编程领域的学习者快速掌握 Java 语言的基础知识。这份 PDF 格式的文档详细介绍了 Java 的核心概念、语法和编程技巧,是学习 Java 的...

    Java Tess4J Demo

    Java Tess4J 实现OCR 可运行Demo 一 下载相关的jar包 1.下载Tess4J jar,网址:http://sourceforge.net/projects/tess4j/ 2.如果你使用的JVM 64位的,还需要下载 liblept168.dll、libtesseract302.dll的64位文件,...

    displaytag-1.1.jar和display-export-poi-1.1.jar下载

    DisplayTag是Java Web开发中的一款开源表格标签库,它为开发者提供了一种高效且易于使用的表格展示解决方案。DisplayTag-1.1.jar是这个库的主要组件,包含了处理表格展示的各种功能,如排序、分页、格式化数据以及...

    Java中级教程(ppt).rar

    反射是Java的动态特性,允许我们在运行时检查和操作类、接口、字段和方法。我们将学习如何使用反射进行类型检查、动态实例化和调用方法。注解是元数据的一种形式,用于向编译器或JVM提供信息,我们将探讨其基本用法...

    think in java 4源码工程

    《Think in Java》是Java编程领域的一本经典著作,由Bruce Eckel撰写,深受程序员喜爱。这个源码工程是基于《Think in Java》第四版(4th Edition)编写的,目的是为了帮助读者在学习过程中更好地理解和实践书中的...

    java基础学习(贯穿整个javaweb开发)

    这是一份java学习资料,里面包括java基础、javaee、数据库学习资料,ssh\ssm框架,才用网页离线方式进行学习。

    java 2D api

    这份资料详细介绍了Java 2D的各种概念、类库和方法,涵盖了基本绘图、文本处理、图像操作、打印服务等内容,并通过实例代码展示如何在实际项目中使用这些功能。通过深入学习和实践,开发者可以掌握Java 2D API的精髓...

Global site tag (gtag.js) - Google Analytics