return语句用于终止函数的执行或退出类的方法,并将控制权返回该方法的调用者。如果这个方法带有返回类型,return 语句就必须返回这个类型的值;如果这个方法没有返回值,可以使用没有表达值return;
该方法用处之一:循环找出条件/答案,如果循环结束答案没有找到就执行下面的语句
如果找到答案,那就直接将方法抛弃。
可以这么理解:一个女人和男人谈恋爱,一心只为钱,而且是不停的找钱
1.当钱到手,直接拔吊无情。
2.(等方法结束没有找到,这个时候钱才到手但是那个女人已经和你结束了)
与return 能够解决同样问题的是设置中间变量
boolean = true; //
当循环结束条件/答案没有找到就可以通过if判断是否中间量是否为真,真代表着可以执行下面的行为
在循环中找到答案就可以设置boolean为false,这样就可以使得if判断为false下面的方法不能执行。
这个方法可以这么理解一个女人和男人谈恋爱,一心只为钱,而且是不停的找钱,当钱到手就直接拔吊无情,但是她会先通知她的姘头钱到手了,然后这个姘头再去找你说你不能和她在一起了,要不然要你好看。
等方法结束没有找到的话,女人和她的姘头早已离去,这个时候你的方法会运行。
这两个方法明显可以看出来,第二种方法多了一个中间值,也就是多了很多判断,实际开发过程中,这样会耗费内存,但是如果下面存在必须做的事的话,那使用第二种也是可以的,但是的但是finally语句块不管什么情况都会执行,这样也解决一部分必须完成的需求。
但是我们要注意,还有一种可能如果结果找到了依旧想要完成下面的工作,没有找到依旧执行下面的任务的情景时就需要一个中间变量了。
第一种方法
// 判断用户名是否存在
for (int i = 0; i < raf.length() / 100; i++) {
raf.seek(i * 100);
byte[] data = new byte[32];
raf.read(data);
String name = new String(data, "UTF-8").trim();
System.out.println("name:" + name);
if (name.equals(username)) {
System.out.println("该用户名已经存在");
File haveUser = new File ("./webapps/myweb/have_user.html");
response.setEntity(haveUser);
return; //直接终止类的进行
}
}
第二种方法
try (RandomAccessFile raf = new RandomAccessFile("user.dat", "rw");) {
boolean flag = true;
// 判断用户名是否存在
for (int i = 0; i < raf.length() / 100; i++) {
raf.seek(i * 100);
byte[] data = new byte[32];
raf.read(data);
String name = new String(data, "UTF-8").trim();
System.out.println("name:" + name);
if (name.equals(username)) {
System.out.println("该用户名已经存在");
File haveUser = new File ("./webapps/myweb/have_user.html");
response.setEntity(haveUser);
flag =false;
}
}
if(flag){
raf.seek(raf.length());
// 写入用户名
byte[] data = username.getBytes("UTF-8");
data = Arrays.copyOf(data, 32);
raf.write(data);
// 写入密码
data = password.getBytes("UTF-8");
data = Arrays.copyOf(data, 32);
raf.write(data);
// 写昵称
data = nickname.getBytes("UTF-8");
data = Arrays.copyOf(data, 32);
raf.write(data);
// 写年龄
raf.writeInt(age);
// 响应注册成功的页面给客户端
File success = new File("./webapps/myweb/reg_success.html");
response.setEntity(success);
}