类的无参带参方法

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

原文地址:https://www.cnblogs.com/renshihao/p/7449393.html