1、函数的参数个数会影响运行速度
参数的数目直接影响调用函数的速度,参数越多,调用函数就越慢。
2、成员变量比局部变量占用空间更小
java中的成员变量和全局变量的区别:
成员变量(java中相当于C语言中的全局变量)
- 成员变量定义在类中,在整个类中都可以被访问。
- 成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
- 成员变量有默认初始化值。
局部变量
- 局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
- 局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
- 局部变量没有默认初始化值
在使用变量时需要遵循的原则为:就近原则
首先在局部范围找,有就使用;接着在成员位置找。
3、Java更快的输入输出
时间和空间都缩短为原来的1/3-1/5左右
定义输入和输出
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
输入方式
in.nextToken();
int n = (int) in.nval;//相当于int n = in.nextInt();
输出方式
out.println("HelloWorld!");
out.printf("HelloWorld!");
out.print("HelloWorld!");
out.flush();//代码最末
用法实例:oj-https://www.luogu.com.cn/problem/P2249
P2249 【深基13.例1】查找
package 二分查找与二分答案;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
public class P2249查找 {
static int[] a;
static int n;
public static void main(String[] args) throws IOException {
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out=new PrintWriter(new OutputStreamWriter(System.out));
in.nextToken();
n=(int)in.nval;//相当于int n = in.nextInt();
in.nextToken();
int m=(int)in.nval;
a=new int [n+1];
int[] b=new int [m+1];
a[0]=-1;//有可能会要查找等于0的数,所以我们把第一个改成-1
for(int i=1;i<=n;i++) {
in.nextToken();
a[i]=(int)in.nval;
}
for(int i=1;i<=m;i++) {
in.nextToken();
b[i]=(int)in.nval;
out.print(find(b[i])+" ");
}
out.flush();
}
static int find(int x) {//参数的数目直接影响调用函数的速度,参数越多,调用函数就越慢.这题如果函数是两个参数,就会超时。
int l=1,r=n;
while(l<r) {
int mid=l+(r-l)/2;
if(a[mid]>=x)r=mid;// 如果中间值大于等于目标值就继续往左边找
else l=mid+1;
}
if(a[l]==x)return l;
else return -1;
}
}