Java提供的一个工具类:java.util.Scanner,我们可以通过Scanner类来获取用户的输入。
凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯,使用完就关掉
关闭的语法:scanner.close();
通过Sacnner类的next()和nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
next():
一定要读取到有效字符后才可以结束输入对输入有效字符之前遇到的空白,next()方法会自动将其去掉只有输入有效字符后才会将之后的空白作为分隔符或者结束符next不能得到含有空格的字符串即:一般来说,使用next()方法在读取到输入的空格时就会结束读取
nextLine():
以Enter(回车)为结束符,即使用nextLine()方法可以获取到回车之前的所有字符nextLine()可以获得空白符 hasNext()与hasNextLine()类比next()和nextLine()
Java的基本结构就是顺序结构,除非特别指明,否则将按照自上而下的顺序依次执行
反编译(IDEA):
在IDEA中,可以直接将.class文件放入src文件里然后打开
执行此代码时,先判断布尔表达式,若为true 则执行循环内容,执行完之后再次判断布尔表达式,若为真,则再次执行循环内容,直到表达式结果为false或者程序为死循环(尽可能避免死循环)
**执行次数:**0-N
先执行一次循环内容再判断布尔表达式,若为true,则继续执行循环内容,直到表达式结果为false或者程序为死循环(尽可能避免死循环)
**执行次数:**1-N
注意:在do…while语句结束时,后面要加";"
***while和do…while的区别:***while先判断后执行,而do…while先执行后判断,do…while能保证至少执行一次,而while则可能一次都不执行
在整个for循环中,初始化只执行一次,然后判断布尔表达式,若为true则执行循环内容,执行完循环内容之后执行更新,然后再进行布尔表达式判断,若为true则再次执行循环内容,然后再次更新再次判断,直到布尔表达式为false为止
虽然使用while和do…while循环可以实现所有的循环要求,但是使用for循环是一种更高效的循环方式
在Java5中引入了一种主要用于数组的增强型for循环:
for(声明语句:表达式){ //循环内容 } //如: int[] numbers = {10,20,30,40,50};//定义一个数组 for(int x : numbers){ System.out.println(x); } 相当于让依次将数组numbers的值赋给x,并每一次重新赋值时执行一次{}中的语句
**break:**在任何循环语句的主体部分均可使用break来控制循环流程,其作用是强行跳出循环去执行循环后的代码,不再执行循环中的其余部分
**continue:**用于跳出本次循环,不再执行本次循环中的剩余语句,直接进行下一次循环
break和continue可以使用标签,以其中一个为例:
one:for(;;){ for(;;){ //代码 if(){ continue one; } //代码 } } 在以上代码中,若没有one标签,则在执行到continue语句时会自动跳转到下一次的内层for循环,但加上one标签后则会跳转到标签所标记的位置继续运行