Java基础(5):方法、Java 流(Stream)

Java安装参考:

https://blog.csdn.net/Zachcc/article/details/94646514

Java基础(4)

https://mp.csdn.net/postedit/95100726

Java方法

举个栗子,我们一般用到的System.out.println()就是在系统类中标准输出对象out中的println()方法。Java方法是语句的集合,它们在一起执行一个功能。

方法是解决一类问题的步骤的有序组合,方法包含于类或对象中,方法在程序中被创建,在其他地方被引用,关于方法的有点:

1. 使程序变得更简短而清晰。

2. 有利于程序维护。

3. 可以提高程序开发的效率。

4. 提高了代码的重用性。

Java方法的命名规则

1.方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。

2.下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test<MethodUnderTest>_<state>,例如 testPop_emptyStack。

那对于方法的定义,我们来讲讲这其中的主要构建:

方法包含一个方法头和一个方法体。下面是一个方法的所有部分:

修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。方法名:是方法的实际名称。方法名和参数表共同构成方法签名。参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。方法体:方法体包含具体的语句,定义该方法的功能。

https://i-blog.csdnimg.cn/blog_migrate/326e5042bdc77328f2f01b7d073a3870.jpeg

public static int age(int birthday){...}

参数可以有多个:

static float interest(float principal, int year){...}

注意: 在一些其它语言中方法指过程和函数。一个返回非void类型返回值的方法称为函数;一个返回void类型返回值的方法叫做过程。

Java方法调用

Java 支持两种调用方法的方式,根据方法是否返回值来选择。

当程序调用一个方法时,程序的控制权交给了被调用的方法。当被调用方法的返回语句执行或者到达方法体闭括号时候交还控制权给程序。当方法返回一个值的时候,方法调用通常被当做一个值。例如:

int larger = max(30, 40);

举个比大小的栗子给大家看看:

这个程序包含 main 方法和 max 方法。main 方法是被 JVM 调用的,除此之外,main 方法和其它方法没什么区别。main 方法的头部是不变的,如例子所示,带修饰符 public 和 static,返回 void 类型值,方法名字是 main,此外带个一个 String[] 类型参数。String[] 表明参数是字符串数组。

这里跟大家讲个经常用到的void方法

这里printGrade方法是一个void类型方法,它不返回值。一个void方法的调用一定是一个语句。所以,它被在main方法第三行以语句形式调用。就像任何以分号结束的语句一样。 这个例子应该大家看一下就知道void是怎么回事,它就是不用返回值使用

通过值传递参数

调用一个方法时候需要提供参数,你必须按照参数列表指定的顺序提供。

public static void nPrintln(String message, int n) {

 for (int i = 0; i < n; i++) {

System.out.println(message);

}

 }

举一个swap交换例子。首先,我们编写swap方法

Public static void swap (int n1,int n2){

       System.out.println(“\t进入swap方法”);

       System.out.println(“\t原来n1的值:”+n1+”,n2的值:”+n2);

Int temp = n1;

N1 = n2;

N2 = temp;    //交换n1与n2的值

System.out.println(“\t变化后n1的值:”+n1+”,n2的值:”+n2);

}

}

接下来我们在主函数中调用swap方法。

Public class Test{

       Public static void main(String[] args){

       Int num1 =1;

       Int num2 =2;

System.out.println(“交换前num1值:”+num1+”\tnum2的值:”+num2);

       swap(num1,num2);

System.out.println(“交换后num1值:”+num1+”\tnum2的值:”+num2);

}    

}    

Java方法的重载

在上文中Max方法被调用的时,比较的是整数,如果比较的是浮点数怎么办,这时候我们就可以创建另一个有相同名字但参数不同的方法,如下面代码所示:

public static double max(double num1, double num2) {

if (num1 > num2)

return num1;

else

return num2;

}

如果你调用max方法时传递的是int型参数,则 int型参数的max方法就会被调用;如果传递的是double型参数,则double类型的max方法体会被调用,这叫做方法重载; 就是说一个类的两个方法拥有相同的名字,但是有不同的参数列表。Java编译器根据方法签名判断哪个方法应该被调用。 方法重载可以让程序更清晰易读。执行密切相关任务的方法应该使用相同的名字。重载的方法必须拥有不同的参数列表。你不能仅仅依据修饰符或者返回类型的不同来重载方法。

变量作用域,这个没什么好讲的,主要就是局部变量,实例变量和类变量。

命令行参数的使用(这个概念可以多看两遍)

有时候你希望运行一个程序时候再传递给它消息。这要靠传递命令行参数给main()函数实现。 命令行参数是在执行程序时候紧跟在程序名字后面的信息。

这个我看了例子之后很容易理解。

构造方法

当一个对象被创建时候,构造方法用来初始化该对象。构造方法和它所在类的名字相同,但构造方法没有返回值。通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。不管你是否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个默认构造方法,默认构造方法的访问修改符和类的访问修改符相同(类为 public,构造函数也为 public;类改为 private,构造函数也改为 private)。一旦你定义了自己的构造方法,默认构造方法就会失效。构造方法在类的部分也有详细介绍,这边我们看下简单的实例。

可变参数

JDK 1.5 开始,Java支持传递同类型的可变参数给一个方法。在方法声明中,在指定参数类型后加一个省略号(...) 。一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。

finalize() 方法(目前用的比较少)

Java 允许定义这样的方法,它在对象被垃圾收集器析构(回收)之前调用,这个方法叫做 finalize( ),它用来清除回收对象。 例如,你可以使用 finalize() 来确保一个对象打开的文件被关闭了。 在 finalize() 方法里,你必须指定在对象销毁时候要执行的操作。一般修饰符是protected, 它确保 finalize() 方法不会被该类以外的代码调用。

Java 流(Stream)

Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。

读取控制台输入

Java 的控制台输入由 System.in 完成。为了获得一个绑定到控制台的字符流,你可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流。BufferedReader 对象创建后,我们便可以使用 read() 方法从控制台读取一个字符,或者用 readLine() 方法读取一个字符串。

从控制台读取多字符输入

从 BufferedReader 对象读取一个字符要使用 read() 方法

int read( ) throws IOException

每次调用 read() 方法,它从输入流读取一个字符并把该字符作为整数值返回。 当流结束的时候返回 -1。该方法抛出 IOException。

从控制台读取字符串

从标准输入读取一个字符串需要使用 BufferedReader 的 readLine() 方法。

String readLine( ) throws IOException

其实这里我们是可以用Scanner类来完成输入操作,这样就不要定义BufferedReader

控制台输出

这里面有个wirte()方法,实用性较低,我们这边就直接用在此前介绍过的 print( ) 和 println()就行。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值