Java基础语法--运算

逻辑运算符,位运算符,条件运算符

案例

public class Demo03 {
    public static void main(String[] args) {
        // 与 或 非
        boolean a = true;
        boolean b = false;
        boolean c = true;
        boolean d = false;
        System.out.println(a && b);//逻辑”与“运算:两个变量都为真,结果才为true;
        System.out.println(a && c);//逻辑”与“运算:两个变量都为真,结果才为true;
        System.out.println(b && d);//逻辑”与“运算:两个变量都为真,结果才为true;
        System.out.println("----------------------------------------------");
        System.out.println(a || b);//逻辑”或“运算:两个变量有一个为真,结果才为true
        System.out.println(a || c);//逻辑”或“运算:两个变量有一个为真,结果才为true
        System.out.println(b || d);//逻辑”或“运算:两个变量有一个为真,结果才为true
        System.out.println("----------------------------------------------");
        System.out.println(!(a && b));//取反:如果是真,则取假,如果是假,则取真;
        System.out.println(!(a && c));//取反:如果是真,则取假,如果是假,则取真;
        System.out.println(!(b && d));//取反:如果是真,则取假,如果是假,则取真;
    }
}

结果
image

上面的例子更佳的表达方法

public class Demo03 {
    public static void main(String[] args) {
        // 与 或 非
        boolean a = true;
        boolean b = false;
        boolean c = true;
        boolean d = false;
        System.out.println(a && b);//逻辑”与“运算:两个变量都为真,结果才为true;
        //以下只为了结果输出表达好看的语句写法
        System.out.println("a&&b");// 1
        System.out.println("a && b");// 2
        System.out.println("a && b :");// 3
        System.out.println("a && b :"+(a&&b));// 4.运算规则,先运算括号里的。
        //以上只为了结果输出表达好看的语句写法
    }
}

结果
image

短路运算

逻辑运算时,当第一个变量匹配不到时,不运算第二个变量;
public class Demo03 {
    public static void main(String[] args) {
        // 与 或 非
        boolean a = true;
        boolean b = false;
        boolean c = true;
        boolean d = false;
        System.out.println(a && b);//逻辑”与“运算:两个变量都为真,结果才为true;
        //以下只为了结果输出表达好看的语句写法
        System.out.println("a&&b");// 1
        System.out.println("a && b");// 2
        System.out.println("a && b :");// 3
        System.out.println("a && b :"+(a&&b));// 4.运算规则,先运算括号里的。
        //以上只为了结果输出表达好看的语句写法
        System.out.println(a && c);//逻辑”与“运算:两个变量都为真,结果才为true;
        System.out.println(b && d);//逻辑”与“运算:两个变量都为真,结果才为true;
        System.out.println("----------------------------------------------");
        System.out.println(a || b);//逻辑”或“运算:两个变量有一个为真,结果才为true
        System.out.println(a || c);//逻辑”或“运算:两个变量有一个为真,结果才为true
        System.out.println(b || d);//逻辑”或“运算:两个变量有一个为真,结果才为true
        System.out.println("----------------------------------------------");
        System.out.println(!(a && b));//取反:如果是真,则取假,如果是假,则取真;
        System.out.println(!(a && c));//取反:如果是真,则取假,如果是假,则取真;
        System.out.println(!(b && d));//取反:如果是真,则取假,如果是假,则取真;
        System.out.println("----------------------------------------------");

        //短路运算
          //逻辑运算时,当第一个变量匹配不到时,不运算第二个变量;
        int e = 5;
        boolean f = (e<4)&&(e++<10);//与运算,当第一个常量是false,直接回复为false;不会运算第二个常量
        System.out.println(f);
        System.out.println(e);//如果运算了第二个常量,自增会让e变成6,结果显示为5标识,自增没有进行运算;
    }
}

位运算

案例

public class Demo04 {
    public static void main(String[] args) {
        /*
        位运算符
        
        A = 0011 1100
        B = 0000 1101

        A&B 与   = 0000 1100     当两个都为0,结果为0,当A为1,B为0,结果为0;
        A|B 或   = 0011 1101     当两个都为0,结果为0,当A为1,B为0,结果为1;
        A^B 亦或  = 0011 0001    当两个相同,结果都为0,不同则为1;
        ~B 非,取反    = 1111 0010   b的反结果

        2*8 = 16  = 2*2*2*2
        左移<<,右移>>
         */
        System.out.println(2<<3);
        /*
        0000 0000  0
        0000 0001  1
        0000 0010  2
               ^
        0000 0011  3
        0000 0100  4
        0000 1000  8
        0001 0000  16
           ^
        上面的左移可以表示为,二进制数2(0000 0010)左移了3位
         */
        System.out.println(1<<1); // = 2
        System.out.println(1<<2); // = 4
        System.out.println(1<<3); // = 8
        System.out.println(1<<4); // = 16
    }
}

结果
image

参考

二进制表

image

在java语言中,使用左移右移的好处是,计算机运算效率更高。

扩展运算符

案例

public class Demo05 {
    public static void main(String[] args) {
        int a = 11;
        int b = 22;
        int c = 2;

        a+=b; //a = a+b
        System.out.println(a);//输出结果为33
        System.out.println(b);
        a-=b; //a = a-b
        System.out.println(a);//此时a=33,所以结果为11

        System.out.println("-------------------------");
        a+=c;
        System.out.println(a);
        System.out.println("--------------------------");
        System.out.println(b);


        System.out.println(b-a);
    }
}

结果
image

字符串连接符

在之前的案例中

       System.out.println("a && b :"+(a&&b));// 4.运算规则,先运算括号里的。
        //以上只为了结果输出表达好看的语句写法
        /*
        上面使用了+就是字符连接符
        字符连接符+和string一起时,会把所以变量都转为string
         */

在新案例中

public class Demo05 {
    public static void main(String[] args) {
        int a = 11;
        int b = 22;
        int c = 2;

        a+=b; //a = a+b
        System.out.println(a);//输出结果为33
        System.out.println(b);
        a-=b; //a = a-b
        System.out.println(a);//此时a=33,所以结果为11

        System.out.println("-------------------------");
        a+=c;
        System.out.println(a);
        System.out.println("--------------------------");
        System.out.println(b);


        System.out.println(a+b);

        System.out.println("---------------------------");
        System.out.println(""+a+b);
        System.out.println(a+b+"");
    }
}

结果
image

解析:可以看出来,字符连接符+和string一起时,会把所以变量都转为string。但string在后时,会先运算后打印;

三元运算

x ? y : z
如果x==true,则结果为y,否则结果为z;

案例

public class Demo06 {
    public static void main(String[] args) {
        //x ? y : z
        //如果x==true,则结果为y,否则结果为z;
        int score = 80;
        String type = score < 60 ?"不及格":"及格";
        System.out.println(type);

        String type2 = score < 100 ?"不及格":"及格";
        System.out.println(type2);
    }
}

结果
image

!!!优先级问题,()是最长用的高优先级

包机制

image

  • 为了更好的组织类,java提供了包机制,用于区别类名的命名空间。

  • 包语句的语法格式为:

1 package pkg1[.pkg2[.pkg3...]];
  • 一般用公司域名倒置作为包名

  • 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用“import”语句可以完成此功能

import package1[.package2...].(classname|*);

JavaDoc

  • javadoc命令是用来生产自己的api文档
posted @ 2021-03-28 01:09  lmk007  阅读(84)  评论(0)    收藏  举报