JavaSE基础语法 2

一.运算符

1.逻辑运算符

符号:==,!=,<,>,<=,>=

<,>,<=,>=    :  只能用于数值间比较,包含字符类型(也就是单个字符)

                       比较后返回值都是布尔值(true/flase)

==,!=      : 既能用于数值间比较,包含字符类型(也就是单个字符)

                        也可以用于布尔值之间的比较

                        也可以用于引用类型间(如:字符串)的比较

                        比较后返回值都是布尔值(true/flase)

2.赋值运算符

符号:=

作用:将右边的值赋给左边的变量

注:等号左右两边的类型需一致(也可以数值间类型转换,需注意强制类型转换等问题)

扩展运算符

+=          eg:a += b                       a = a + b

-=           eg:a -= b                       a = a - b

*=           eg:a *= b                       a = a * b

/=            eg:a /= b                       a = a / b

%=          eg:a %= b                       a = a % b

3.逻辑运算符

符号:&(与),|(或),!(非)

           &&(与),||(或),^(异或)

逻辑与:&,&&

使用:(逻辑表达式1)&(逻辑表达式2);(逻辑表达式1)&&(逻辑表达式2)

作用:当所有表达式结果为true时,则返回true

区别:&不会有短路现象,&&有短路现象

int a,b;
a = 1,b = 2;
if((a++ == 1)&(b++ = 3)//此时a = 2   b = 3
if((a++ == 1)&&(b++ = 3)//此时a = 3   b = 3

短路现象:与逻辑运算里表达式1为flase是后面表达式不进行

逻辑与:|,||

使用:(逻辑表达式1)|(逻辑表达式2);(逻辑表达式1)||(逻辑表达式2)

作用:当全部表达式结果为flase时,则返回flase

区别:|不会有短路现象,||有短路现象

int a,b;
a = 1,b = 2;
if((a++ != 1)|(b++ = 3)//此时a = 2   b = 3
if((a++ != 1)||(b++ = 3)//此时a = 3   b = 3

短路现象:或表达式里表达式1为true是后面表达式不进行

逻辑异或:^

使用:(逻辑表达式1)^(逻辑表达式2)

作用:两表达式逻辑值相同时返回true

           两表达式逻辑值相反时返回flase

逻辑非:!

使用:!(逻辑表达式)

作用:使返回布尔值与逻辑表达式实际布尔值相反

4.条件运算符

语法:(条件表达式)?1:2

结果 = (条件表达式)?1:2;

当条件表达式结果为true时,返回?后结果

当条件表达式结果为flase时,返回:后结果

条件表达式必定返回结果,返回结果与接受变量类型需一致

    public static void main(String[] args) {

      int a = 1,b = 2;
      int d = (a>b)?a:b;
        System.out.println(d);
      String c = (a>b)?"a胜利了":"b胜利了";
        System.out.println(c);



    }

二.位运算

位运算:对整数的二进制位进行操作

<<  左移  二进制的比特位向右移动   空位补0

>>  右移  二进制的比特位向右移动  带符号移动  

               正数移动后符号位补0  负数移动后符号位补1

>>>  无符号右移  不管是正数还是负数,移动后统一补0,结果肯定为正

&  将两个整数的对应的二进制进行运算,只能1&1,否则为0

|   将两个整数的对应的二进制进行运算,只能0|0,否则为1

^  将两个整数的对应的二进制进行运算,相同为0,相反为1

注:^,&,|两侧为逻辑值时当作逻辑运算符

              两侧为整数时当作位运算符

~  将所取整数的对应二进制数进行非运算,1为0,0为1

    /*位运算对整数的二进制位进行操作
    <<   左移  二进制的比特位向左移动   空位补0
    >>   右移  二进制的比特位向右移动   带符号移动:正数移动后符号位补0,负数移动后符号位补1
    >>>  无符号右移   不管正数还是负数,移动后统一补0   结果肯定为正
    * */
    public static void main(String[] args) {
//        int a = 10,b = -10, c = 5;
//        int x,y,z;
//        x = a<<1;
//        y = a>>1;
//        z = a>>>1;
//        System.out.println(x);
//        System.out.println(y);
//        System.out.println(z);
//        x = b<<1;
//        y = b>>1;
//        z = b>>>1;
//        System.out.println(x);
//        System.out.println(y);
//        System.out.println(z);/* >>>  无符号右移   不管正数还是负数,移动后统一补0   结果肯定为正*/
//        x = c<<1;
//        y = c>>1;
//        z = c>>>1;
//        System.out.println(x);
//        System.out.println(y);
//        System.out.println(z);
        /*   &,|,^既可以做逻辑运算符,也可以作为运算符
        *    当左右为逻辑值时,当作逻辑运算符
        *    当左右为整数时,当作位运算符*/
//        int i = 4,j = 5;
//        System.out.println(i&j);
//        /*  &只有1&1为1,否则结果为0
//        * 0000 0101   5
//        * 0000 0100   4
//        * 0000 0100   4  结果*/
//        System.out.println(i|j);
//        /*  |只有0|0为0,否则结果为1
//         * 0000 0101   5
//         * 0000 0100   4
//         * 0000 0101   5  结果*/
//        System.out.println(i^j);
//        /*  ^数字相同为0,不同为1
//         * 0000 0101   5
//         * 0000 0100   4
//         * 0000 0001   1  结果*/
//        System.out.println(~i);
//        /*  ~0=1,~1=0
//         * 0000 0101   4
//         * 1111 1010   -5     结果*/

    }

三.控制台输入

java提供Scanner类来实现从控制台向程序输入信息功能.

步骤:

1. 导入使用的类:import java.util.Scanner;
2. 创建Scanner类型的对象:Scanner scan = new Scanner(System.in);
3. 调用Scanner类的相关方法,来获取指定类型的变量
next()方法用以 取得用户输入的字符串;
nextInt()将取得的输入字符串转换为整数类型;
nextFloat()转换成浮点型;
nextBoolean()转 换成布尔型。

四.控制语句

1.if语句

使用:

注()内结果需为布尔值

if(条件表达式){

}

else if{

}

        else  if{

}

……

2.switch语句

注:

在switch语句中,如果case的后面不写break,将出现穿透现象,也就是一旦匹配成功,不会
在判断下一个case的值,直接向后运行,直到遇到break或者整个switch语句结束,执行终止。

使用:

switch (表达式){//表达式的值可以为数值型,字符型,字符串型,枚举

case 字面常量1 : 语句一 【break】

case 字面常量2 : 语句二 【break】

case 字面常量3 : 语句三 【break】

……

default: 默认语句块

}

        int w;
        int a;
        Scanner scanner = new Scanner(System.in);
        w = scanner.nextInt();
        a = scanner.nextInt();
        if (w > 7) {
            System.out.println("该输入不合法");
        } else {
            switch (w) {
                case 1:
                    System.out.println("星期一");
                    break;
                case 2:
                    System.out.println("星期二");
                    break;
                case 3:
                    System.out.println("星期三");
                    break;
                case 4:
                    System.out.println("星期四");
                    break;
                default:
                    System.out.println("输入不合法");
            }
            if (a <= 7 && a >= 1) {
                switch (a) {
                    case 1:
                        System.out.println("星期一");
                        break;
                    case 2:
                        System.out.println("星期二");
                        break;
                    case 3:
                        System.out.println("星期三");
                        break;
                    case 4:
                        System.out.println("星期四");
                        break;
                    default:
                        System.out.println("输入不合法");
                }

            }
        }
    }

五.循环

定义:满足某种条件时,重复执行某些此操作

循环结构:

1.循环变量初始值

2.循环条件

3.循环体

4.循环变量迭代

分类:while:do while;for

while

zhixinh

  while 语句为如下形式:
初始化部分
while(逻辑表达式){
循环体
迭代部分
}
执行过程
先判断逻辑表达式的值。
若=true.则执行其后面的语句,然
后再次判断条件并反复执行,直
到条件不成立为止

do while

   do  while 语句为如下形式:
do { 语句; … ; } while(逻辑表达式);
  执行过程
先执行语句,再判断逻辑表达式的值,若
为true,再执行语句,否则结束循环。

for

  for 语句为如下形式:
for(表达式1; 表达式2; 表达式3){ 语句; … ; }
  执行过程
首先计算表达式1,接着执行表达式2,若表达式2的值 = true,则执行循环语句,
接着计算表达式3,再判断表达式2的值;依此重复下去,直到表达式2的值=false.
三种循环间的比较
三种循环结构都具有四个要素:
循环变量的初始化条件
循环条件
循环体语句块
循环变量的修改的迭代表达式
从循环次数角度分析
do-while循环至少执行一次循环体语句。
for和while循环先判断循环条件语句是否成立,然后决定是否执行循环体。
如何选择
遍历有明显的循环次数(范围)的需求,选择for循环
遍历没有明显的循环次数(范围)的需求,选择while循环
如果循环体语句块至少执行一次,可以考虑使用do-while循环
本质上:三种循环之间完全可以互相转换,都能实现循环的功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值