java基础之流程控制语句
一、位运算符、条件运算符、扩展赋值运算符
先看图, 总结记录一下这些可以偷懒的奇淫巧计的符号,其他符号比较通用,我们主要讲个讲红线框住的符号
位运算符
< 1、 & | ^ ~ >
# 对数值的二进制位作比较
#实例
a = 0011 1100
b = 0000 1111
a&b = 0000 1100a和b同位置的数值进行与运算,如果同位都是0就等于0,1就等于1;一个1一个0取0
a|b = 0011 1111a和b同位置的数值进行或运算,如果同位都是0就等于0,1就等于1;一个1一个0取1
a^b = 0011 0011a和b同位置的数值进行是否相同的比较,如果相同,就等于0;如果不相同,就等于1
~b = 1111 0000这个就是简单的取反
# 在shell中& | ^ 的含义:
&有两个含义:
1是标准输出导向到哪里 2 把命令放到后台执行
实例:
ls -l > out.file 2>&1 & 等同于ls -l 1> out.file 2>&1 &
# >和1>是一个意思,通常是省略了; 2代表错误输出的意思,所以2>&1 表示如果前面命令执行后出现错误把错误信息重定向到1那,而1又导向out.file,最后一个&代表后台执行! 所以整条命令为把ls -l的正确错误的信息都重定向到out.file,并在后台执行!
|表示命令的管道, ^ 表示匹配开头
< 2、 << >> >
# 在shell中: <>表示,以追加的方式把数据重定向到某个文件或某个命令中
# 对数值在二进制位进行位的移动
# >>是向后位进行移动,等同于/2(除以2); << 是向前位进行移动,等同于*2(乘以2),看下例:
0000 00011
0000 00102
0000 00113
0000 01004
0000 10008
真题: 2变成16什么方式最快?
答: 当然是位运算 2<<3啦,直接跟底层打交道! (表示2这个值向前移动3位,一位是2,结果: 2*2*2*2=16)
条件运算符
< ? : > 用于三目运算(三元表达式)
# 在shell的通配符中: ?代表0个或多个任意字符(非换行符、制表符);
# 在正则表达式中: ?是元字符,表示匹配0个或多个前置字符
使用语法:
判断表达式 ? yes : no 如果判断表达式结果为true,则结果取yes,否则取no
实例:
public class hello {
public static void main(String[] args){
int score = 50;
String type = score > 60 ? "no" : "yes";
System.out.println(type);
}
}
返回:yes
#python中的三目运算(三元表达式)
用法格式:
a=1
b=2
c = b-a if b>a else a-b 如果表达式结果为真,则返回b-a,否则返回a-b
# shell中的三目运算(三元表达式)
a=''
[[ -z a ]] && echo "a为空字符串" || echo “a不为空”
# 如果a为空字符串,则打印a为空字符串,否则打印a不为空
扩展赋值运算符
< += -= *= /= >
public class Hello{
public static void main(String[] args){
int a = 2;
int b = 4;
a+=b;//a=a+b
a-=b;//a=a-b
a*=b;//a=a*b
a/=b;//a=a/b
System.out.println(a)
}
}
二、包机制
# 定义包名
格式:
package 包文件名1.包文件名2.包文件名3;
# 必须写到最上面
# 导入包名
格式:
import 包文件名1.包文件名1.包文件名1.类名;
三、用户交互
# 咋java5加入了java.util.Scanner的用户交互类!
基本语法:
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
# 1、next()必须在输入有效字符后才能结束输入
2、当遇到有效字符后的空格时,自动截取掉空格后面的字符
3、不能输入空白字符
String str1 = scanner.nextLine();
# 1、可以获取有效字符之间的空格字符
2、使用完后记得关闭扫描器
四、选择性语句
if..else if ...
< # 用法一、>
if (x != 0 && y !=0 && x < y){
System.out.println(y);
}else{
System.out.println(x);
}
if (x <= 0){if (x==0) sign x=0;else x=-1; }
< # 用法三、>
if x > y ? x : y
< shell中的if语法>
终端命令式:if [[ -z '' ]]; then echo " ''是一个空字符串"; else echo " ''不是一个空字符串 "; fi
三元表达式: a=2;b=3;[[ b -gt b ]] && echo "b大于a" || echo "a大于b"
< 脚本式: >
if [[ 表达式1 ]];then
执行主体1
elif [[ 表达式2]]
执行主体2
else
执行主体3
fi
switch多重选择
# 用法:
Scanner scanner = new Scanner(System.in);
System.out.println("Select an option (1,2,3,4)")
int choice = scanner.nextInt();
switch (choice){//choice表示一个用户输入的选项变量
case 1;
System.out.println("这是选择1");
break;
case 2:
System.out.println("这是选择2");
break;
case 3:
System.out.println("这是选择3");
break;
case 4:
System.out.println("这是选择4");
break;
default:
System.out.println("输入的选择无效");
break;
}tioaj
# 为了不忘记shell知识,在这也记录对比一下
# 在shell的case多选择语句与java中的switch是很相似的,
用法如下:
#!/bin/bash
read -p "请输入你选择的项: " choice
case choice in
"A")
执行体
;;
"B")
执行体
;;
"c")
执行体
;;
*)
执行体
;;
esac
五、循环控制语句
while循环
# while (条件表达式){
程序主体
}
# 实例
public class Operation{
public static void main(String[] args){
int a = 0;
int total = 0;
while (a<100){
a++;
total += a;
}
System.out.println(total);
}
}
do while
< # 用法: >
do{
程序主体
}
while(条件表达式);
public class Deamo1{
public static void main(String[] args){
int a = 0;
int sum = 0;
do{
a++;
sum += a;
}while(a<100);
System.out.println(sum);
}
}
while循环是先判断条件,再执行主体
do while 是先执行主体,再去判断条件,且do while必被执行一次主体,不管条件是否满足1
代码如下:
public static void main(String[] args){
int a = 0;
while(a<0){
System.out.println(a);
}
System.out.println("------------------");
do{
System.out.println(a);
}while(a<0);
}
# 输出:
--------------------
0
说明:即使条件不符合,do while依然可以执行一次!
for循环
< java# 用法:>
for(条件表达式){
执行主体
}
< java# 实例1 >
//求num以内的质数
public class Zhishu{
public static void main(String[] args){
//创建一个扫描器对象
Scanner scanner = new Scanner(System.in);
System.out.println("请输入求质数的范围数:");
int num = scanner.nextInt();
if (num >=2){
for (int i=2;i<=num;i++){
int status = 0;
for (int j=2;j
if (i%j==0){
status = 1;
break;
}
}
if (status==0){
System.out.println(i);
}
}
}
}
}
< java# 实例2 >
----------------------------------------------------------------------------------
方式一、
for i in 1 2 3 4
do
echo $i
done
方式二、
for i in {1..10}
do
echo $i
done
方式三、
for ((i=0;i<=10;i++));
do
echo "nice$i"
done
加强for循环
语法:
for(表达式){
//代码块
}
范例:
public class Deamo(){
public static void main(String[] args){
int[] demoarr = {1,2,3,4};
for (int x:demoarr){
System.out.println(x);
}
}
}
特点:只能用于遍历该数组元素,遍历效率高!六、跳转控制语句
六、跳转控制语句
break
# 跳出整个循环体,执行循环体下面的内容
continue
# 跳出当前这一次循环,执行下次循环
七、总结
1、三种循环控制语句的区别:
1、for循环和while循环是先判断条件是否成立,然后再决定是否执行循环体 (先判断后执行)
2、do{}while是先执行一次循环体,然后再对条件进行判断,是否继续执行循环体(先执行后判断),所以do..while循环至少执行一次循环体!
2、for与while的区别:
1、for循环结构中的变量定义在循环体中,所以只能在循环体中使用,而while的变量定义在循环体外,所以可以在循环体外