第三天
1. Scanner对象
//创建一个Scanner对象
Scanner Scanner = new Scanner(System.in);String str;
//判断用户是否输入字符串
if(scanner.hasNext){
str = scanner.next();
System.out.println("输出内容为:"+str);
}//关闭scanner
scanner.close();
通过Scanner类的next()与nextLine()方法获取输入的字符串,用hasNext()与hasNextLine()判断是否还有输入的数据
next():
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符遇到的空白,next()方法会自动将其去掉
- 只输入有效字符后才将其后面输入的空白作为分隔符或者是结束符
- next()方法不能得到带有空格的字符串
nextLine():
- 以Enter为结束符
- 可以接受空白字符
,nextDouble(),nextFloat(),nextShot(),
,nextLong()......
注意:
- Scanner输入IO流,凡是输入IO流的如果不关闭它,就会一直占用资源,所以,要养成习惯,用完,要关闭!
- hasNext() 和 hasNextLine() 的 区别:
hasNext()
方法会判断接下来是否有非空字符.如果有,则返回true
,否则返回false
hasNextLine()
true
,否则返回false
- 采用
hasNextXxxx()
nextXxxx()
,否则可能会在别的地方报错:
- 比如前面用
hasNextLine()
,那么后面要用nextLine()
来处理输入; - 后面用
nextInt()
hasNext()
方法去判断.
2.顺序结构
- 按顺序,从上到下进行
- 是任何一个算法都离不开的一种基本算法结构
3.选择结构
- if()else
if () --- else if() --- else if() ...... ---else - switch(){ case value: [...... default]}
它语句中的变量类型可以是byte,short,int或者char
jdk7之后支持字符串String类型
同时case标签必须为字符串常量或字面量
注:在使用switch()时,要注意case穿透,用好break(或者在有外层循环的时候也可用continue)
4.循环结构
- while循环
while(布尔表达式){
//循环内容
}
- do...while循环
do{
//循环内容
}while(布尔表达式);
- for循环
for(初始化;布尔表达式;更新){
//循环内容
}
for循环是一种支持迭代的一种通用结构,是最有效,最灵活的循环结构。
for循环执行的次数是在执行前就确定的
- 在java5中引入了一种主要用于 数组增强型 for循环
for(声明语句 : 表达式){
//代码句子
}
/*
声明语句:声明新的局部变量,该 变量 的类型必须和 数组元素 的类型匹配。
其作用域限定在循环语句块,其值与此时数组元素的值相等
表达式:表达式是要访问的数组名,或者是返回值为数组的方法
*/
public static void main(String[] args) {
int[] number = {10,20,30,40}; //定义一个数组
for(int i = 0;i<4;i++){
System.out.println(number[i]);
}
//遍历数组的元素
for(int x : number){
System.out.println(x);
}
//注:不同点,下边是把number数组中的每一个元素,赋值给x,然后输出的,但使用的方法,就是第一个for循环
}
注:只要布尔表达式为true,循环就会一直执行下去
我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方法来结束循环
少部分情况需要循环一直执行,比如服务器的请求响应监听等
循环条件一直为true就会造成无限循环(死循环),我们正常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死崩溃
5.break和continue
- break:在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,
不执行循环中剩余的语句。(break语句也在switch语句中使用)
- continue:语句在循环语句体中,用于终止循环过程,即跳过循环体中尚未执行的语句,
接着进行下一次是否执行循环的判定
- 了解goto关键字
//输出质数
//这种写法不建议使用,了解就好
outer:for(int i = 101;i<150;i++){
for(int j =2;j<i;j++){
if(i % j == 0){
continue outer;
}
}
System.out.println(i+" ");
}
补充
- Scanner对象是jdk5的新特性,可以通过Scanner类来获取用户的输入,他存在于java.util.Scanner包中
- jdk7开始 swith 支持字符串String类型了(字符的本身还是数字!)
- 在switch没有外层循环的时候,只能用break而不能用continue
在switch有外层循环的时候,可以用break,也可以用continue - .java ---(编译)---> .class(字节码文件)---(反编译)--->
- 伪代码:假代码的意思
- 在java5中引入了一种主要用于 数组增强型 for循环
- 学会使用debug