zoukankan      html  css  js  c++  java
  • 类的无参带参方法

    publi  返回值类型  方法名(){

      //方法的主体

    }

    return 表达式;

    方法返回值:如果方法有返回值,方法中必须使用关键字 return 返回该值,返回值类型为该方法所定义的返回值类型。

    强调: 方法中可以使用其他方法

    对象名.方法名();   调用不带参数的方法

    成员变量: 类的方法可以直接使用该类定义的成员变量,如果其他类的方法要调用它,必须先创建该类的对象,然后通过. 操作符来引用

    局部变量: 他的作用域仅仅在定义该变量的方法内,因此只有在这个方法中能够使用

    初始值不同   java会给成员变量一个初始值

                         java不会给局部变量赋初始值

    作用域不同:成员变量的作用于在整个类的内部都是可见的

                          局部变量的作用域仅限于定义它的方法

    在同一个类中,成员变量和局部变量同名时,局部变量具有更高优先级。 (就近原则)

    在while循环  do----while循环   if选择结构    switch选择结构中定义的变量作用于也仅仅在这些控制流语句块内。

    javaDoc注释

    /**

    *

    *

    *

    */

    javaDoc注释以/** 开头  以*/  结尾

    每个注释包含一些描述性的文本及若干个javaDoc标签

    javaDoc标签一般以 @ 为前缀,常用的 javaDoc标签如下

    @author ===作者     @version===版本标识    @parameter===参数及其意义    @since===最早使用该方法/类/接口的JDK版本

    @return===返回值    @throws===异常类及抛出条件

    如何生成javaDoc文档

    使用eclipse生成文档(javadoc)主要有三种方法: 
    1,在项目列表中按右键,选择Export(导出),然后在Export(导出)对话框中选择java下的javadoc,提交到下一步。 
    在Javadoc Generation对话框中有两个地方要注意的: 
    javadoc command:应该选择jdk的bin/javadoc.exe 
    destination:为生成文档的保存路径,可自由选择。 
    按finish(完成)提交即可开始生成文档。 
    2,用菜单选择:File->Export(文件->导出), 
    剩下的步骤和第一种方法是一样的。 
    3,选中要生成文档的项目,然后用菜单选择, 
    Project->Generate Javadoc直接进入Javadoc Generation对话框,剩余的步骤就和第一种方法在Javadoc Generation对话框开始是一样的。

    <访问修饰符>  返回值类型  <方法名> (<参数列表>){

                 //方法的主体

    }

     <访问修饰符>:指该方法允许被访问的权限,只能是public 、protected、private。

    返回值类型:如果方法不返回任何返回值,他应该声明为  void 类型。java对待返回值的要求非常严格,方法返回值必须与说明的类型相匹配。使用 return 语句返回值。

    <方法名> : 是定义的方法的名字,他必须使用合法的标识符

    <参数列表>:是传送给方法的参数列表。列表中各参数间以逗号隔开,参数列表的格式如下

    数据类型  参数1,数据类型  参数2,...,数据类型  参数n

    调用带参方法和调用无参方法的语法相同,但是在调用带参方法时必须传入实际参数的值。

    对象名.方法名(参数1,参数2...,参数n)

    先实例化对象,再调用方法

    传递时实参的类型、数量、顺序都要与形参一一对应。

    形参是定义方法时对参数的称呼,实参是在调用方法时传递给方法的实际值

    1.什么是值传递,什么是引用传递

    值传递是将需要传递的值作为一个副本传递出去,例如:

    int i = 5;

    int j = i;

    这里把i的值5拷贝了一份副本,作为j的值,结果是i = 5,j = 5.如果改变j的值,也就是拷贝出来的副本的值,

    这个改变和原来的值毫无关系,因此改变j的值不会对i的值产生影响.

    引用传递,是将引用对象的地址传递出去,例如:

    int *p,*p1;

    int i = 5; *p = i; //这里将i在内存中的地址赋与了指针p

    p1 = p;  //将指针p中的地址(即i的内存地址)赋与p1

    此时,改变i的值,

    i = 10;

    由于指针p,p1指向的地址都是i的地址,因此*p 和 *p1 的值都是10.

    2.Java中函数参数的传递形式

    Java中的数据分为基本数据类型和引用数据类型,我们来对这两种类型进行分析.

    对于基本数据类型来说,举个例子:

    int i = 10;

    add(i);

    void add(int temp){

    temp +=5;

    }

    这个很简单,我们都知道调用函数时将i的值10拷贝给函数的参数了,函数调用结束后i的值并没有发生变化,这是很明显的值传递过程,我们来看看在内存中的变化过程.

    首先在栈内存中为基本数据类型变量i分配内存空间并初始化值为10,然后开始调用函数add().执行add函数的时候,为temp变量分配栈内存空间,并将i的值拷贝给temp,在add执行之后,temp的值增加了5,随着add函数执行完毕,temp变量的生命周期结束了.可见,这个temp变量和i变量没有关系,temp变量可以随意命名,将其命名为i,也和之前申明的变量i毫无关系.

    我找来一幅图,可以看看,在函数运行的时候,只是临时分配产生了一个值与i相同的另外一个变量而已,一旦完成了值得拷贝工作,之后这两个变量就没有任何联系了.因此,对这个临时变量的操作不会对i产生任何影响.

     

    对于引用数据类型参数来说,举个例子:

    class Person {

    String name = "java";

    public void setName(String name){

    this.name = name;

    }

    }

     ---------------------------------------------------

     void changeName (Person p1){

    p1.setName("JavaScript");

    }

     ---------------------------------------------------

    public static void main (String[] args){

    Person p = new Person();

    changeName(p);

    }

    我们来看看这一过程中内存中发生的变化:

    首先在堆内存中创建了一个Person对象,然后在栈内存中创建了一个引用类型的变量p,p指向堆内存中的Person对象,即p的值为Person对象在内存中分配空间的首地址值.

    调用changeName()函数时,栈中再次创建一个引用类型的变量p1,然后将p中的值拷贝给p1,即p1也指向Person对象. 调用完成后,p1指向的Person对象的name属性被改变为javascript.由于p和p1指向同一个Person对象,因此p指向的Person对象的name值也变为javascript.

    这看起来类似于引用传递,但是这仍然是值传递,p1接受的值是p的值的拷贝,函数调用完成后,p的值完全没有改变,仍然是指向之前创建的Person对象,这就是值传递.

    整个过程中改变的是Person对象的属性name,由于p和p1都指向这个Person对象,因此p和p1产生了相同的变化,使得看起来像是进行了引用传递.

    如果是引用传递的话,那么p1接收的值将会是p的地址,那么p1将不会再指向Person对象,整个程序就会产生错误.

    可见,引用数据类型的参数仍然是进行值传递的,只不过这里传递的值是对象在内存中的首地址,在java中即为指向该对象的引用.而引用传递是直接将变量的地址传递给参数,很明显,这样参数接收到的值将不再指向特定的对象,整个程序将会产生错误,要传递地址的话,应该是传递Person对象的地址而不是p对象的地址.

    同样用图简单概括一下

    概括一下,java中函数参数的传递方式是值传递,不管参数是基本数据类型还是引用数据类型.

    在复杂的文件系统中,文件分门别类存储在不同的文件中解决了文件同名冲突的问题

    1.包允许将类组合成较小的单元(类似文件夹),易于找到和使用相应的类文件

    2.防止命名冲突,java中只有在不同包中的类才能同名

    3.包允许在更广的范围内保护类、数据和方法、可以在包内定义类

    java中提供包来管理类。声明包使用关键字  package、 导入包使用关键字  import

  • 相关阅读:
    在 Windows 上测试 Redis Cluster的集群填坑笔记
    vmware安装黑苹果教程
    微信支付v3发布到iis时的证书问题
    Linux下安装SQL Server 2016(连接篇SQL Server on linux)
    Linux下安装SQL Server 2016(连接篇SQL Server on linux)
    Linux下安装SQL Server 2016(安装篇SQL Server on linux)
    Linux下安装SQL Server 2016(准备篇SQL Server on linux)
    客服端与服务端APP支付宝支付接口联调的那些坑
    ASP.NET MVC]WebAPI应用支持HTTPS的经验总结
    .net平台下C#socket通信(中)
  • 原文地址:https://www.cnblogs.com/renshihao/p/7449393.html
Copyright © 2011-2022 走看看