java(函数与方法)
方法重载:
在同一个类中,出现方法名相同的情况。
方法重载的特点:
方法名相同,参数列表不同,与返回值无关
在调用方法的时候,java虚拟机会通过参数列表的不同来区分同名方法。
参数列表不同:
- 参数个数不同;
- 参数对应的数据类型不同。
方法的参数(1)
形式参数:用于接收实际参数的变量
实际参数:实际参与运算的变量
例:
如果方法的参数是基本参数类型:
形式参数的改变不影响实际参数。
方法的参数(2)
如果参数是引用参数类型(例如数组):
形式参数的改变直接影响实际参数。
例:
快排模板(1)
注意细节!!!!!
快排模板(2)
注意细节!!!!!
mid = L + ((R - L) >> 1)
在实际开发中 L + R可能会造成溢出,此时再进行乘除操作都会抛异常,而使用 L + (R - L)/ 2是一种更加稳妥的方法,R - L 永远不会造成溢出,所以更加保险。而 (R - L) / 2可以写成 (R - L) >> 1,意思是右移一位。为啥非要用右移呢?因为位运算比算术运算要快得多。
l - r >> 1 可以看做是除2
例:
12的二进制表示是00001100,12>>1将00001100右移一位,变为00000110,即6.
15的二进制表示是00001111,15>>1将00001111右移一位,变为00000111,即7.
另外<<就是左移,相当于乘以2.
快速输入(BufferedReader):
import java.io.*;
/*
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
*/
public class 快速输入 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
double d = Double.parseDouble(br.readLine());
int n=Integer.parseInt(br.readLine());//输入一行,转换为整数
String a[]=br.readLine().split(" ");//输入一行,以空格隔开,转换成字符数组
}
}
快速输入(Tokenizer):
import java.util.*;
import java.io.*;
import java.math.BigDecimal;
public class Main{
public static void main(String[] args) throws IOException {
int n = nextInt();
int[] list = new int[n];
for (int i = 0; i < list.length; i++) {
list[i] = nextInt();
}
Arrays.sort(list);
for (int i = 0; i < list.length; i++) {
pw.print(list[i]+" ");
}
pw.flush();
}
//Tokenizer快速输入
static PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StreamTokenizer st = new StreamTokenizer(br);
static int nextInt() throws IOException {
st.nextToken();
return (int) st.nval;
}
static long nextLong() throws IOException {
st.nextToken();
return (long) st.nval;
}
}
while, for, if 语句无花括号的情况
如果if、for、while等语句的内容中仅有一条语句,可以省略花括号。
注意是一条语句(即用分号隔开的的语句), 不是一行语句
详情可查看:https://www.cnblogs.com/daysme/p/6287585.html
while语句的正文为空的情况
示例1:
示例2:
输出为:
nihao
nihao