美文网首页
JavaSE之运算符

JavaSE之运算符

作者: 金石_832e | 来源:发表于2019-02-26 22:47 被阅读0次

课前小例


package com.zpwd.chapter1;

public class HelloWord {
public static void main(String[] args) {
    // 整型
    // System.out.println(num1);//该行为错误写法
    int num1 = 10;
    // boolean num1= true; //该行为错误写法
    boolean num2 = true;
    System.out.println(num1+','+num2 )
    }
}

在方法中声明的变量成为局部变量*。
*同一个代码块不能声明名称相同的变量。
*在声明变量之前,不能使用该变量,因为代码是顺序执行的,JVM 在栈内存中找到main栈针时,找不到下方声明的变量(先声明后发现)。
*JVM内存三个重要的区域(共有5个区域):堆内存(heap)、栈内存(stack)、方法区
PS输出1的结果是:10,true。


赋值运算符:= 、+= 、-= 、*= 、/=

package com.zpwd.chapter1;

public class HelloWord {
public static void main(String[] args) {
    int num = 10;
    num += 10;
    System.out.println(num);//结果为:20
    }
}

num+=10的效果等同于num = num +10


算数运算符:+ 、- 、* 、/ 、% 、++ 、--

package com.zpwd.chapter1;

public class HelloWord {
public static void main(String[] args) {
    System.out.println(5 + 6 + 7); // 结果:18
    System.out.println(5 + "6" + 7);// 结果:567
    System.out.println(5 + 6 + "7");// 结果:117
    System.out.println(5 + 6 + '7');// 结果:66
            int v1 = 99;
    int v2 = 1;
    System.out.println("v1+v2=" + (99 + 1));
    System.out.println(v1 + "+" + v2 + "=" + (v1 + v2));

    // 整型除以整型,得到的结果还是整型,取整(非四舍五入)
    System.out.println(7 / 2);// 结果为:3
    System.out.println(7.0 / 2);// 结果为:3.5
    System.out.println(7 / 2.0);// 结果为:3.5

    // %取余数(模运算),结果的正负只与被除数的正负有关,小数%大数 = 小数
    System.out.println(5 % 2);// 结果为:1
    System.out.println(-5 % 2);// 结果为:-1
    System.out.println(5 % -2);// 结果为:1
    System.out.println(-5 % -2);// 结果为:-1
    System.out.println(-2 % -5);// 结果为:-2 

    // ++,--:自增,自减(变量 在原有的赋值上加一或者减一)
    int i = 0;
    i++;
    System.out.println(i);// 结果为:1 一般在循环中使用
    // ++在前,先自增再运算;++在后,先自增再运算
    int a = 1;
    int b = ++a;
    System.out.println(b);// 结果为2,a先自增变为2,再赋值给b
    int c = a++;
    System.out.println(c);// 结果为1,先将a的值1赋值给c,a再自增
    // 运行Java代码的时候,电脑会先运行JVM,Java虚拟机将.java文件、编译成.class文件
    // 栈内存:存放程序运行时所需的局部变量

    // 下列代码较为特殊,代码在执行时,JVM找到该条main栈针,内存会开辟一个临时空间,
    // 将x变量复制出一份,放在临时空间中,并进行自增操作,但原有的x值不变。程序执行
    // 完毕后,临时空间被自动回收。因此输出的x值并没有改变。(面试题经常出现)
    int x = 1;
    x = x++;
    x = x++;
    System.out.println(x);// 结果为1。
    }
}

!!注意以下几点:
1、算数运算符+有点小特殊,既可以表示两个数相加,又可以表示字符串的拼接,当+两边是数字时,表示相加;当两边是字符串时,表示拼接,既有字符串又有数字时还是起到拼接作用
2、两个整数相除时,得到的结果是取整(非四舍五入)。
3、两个数取模时,模的正负只与被除数有关;若小数%大数,得到的结果被除数(例:-4%5=-4)。
4、在做自增或自减运算时,运算符(++、--)在前面就表示先自增或自减再进行其他处理;若运算符(++、--)在后面时,则先做其他的再做自增或自减。


比较运算符:> 、 < 、== 、!=

package com.zpwd.chapter1;

public class HelloWord {
public static void main(String[] args) {
    int age = 22;
    if (age > 18) {
        System.out.println("成年人");
    }
    if (age < 18) {
        System.out.println("未年人");
    }
    if (age == 18) {
        System.out.println("18");
    }
    if (age != 18) {
        System.out.println("非18");
    }
    }
}

结果为:成年人 非18


逻辑运算符 :&& 、|| 、!

package com.zpwd.chapter1;

public class HelloWord {
public static void main(String[] args) {
    int age = 22;
    double height = 1.99;
    if (age > 18 && height > 1.8) {
        System.out.println("大于18岁且高于一米八");
    }
    if (age > 18 || height < 1.8) {
        System.out.println("大于18岁或高于一米八");
    }
    if (!(age > 18)) {
        System.out.println("不大于18岁");
    }
    }
}

结果为:大于18岁且高于一米八


位运算符 :& 、| 、^ 、~ 、>> 、<< 、>>>

package com.zpwd.chapter1;

public class HelloWord {
public static void main(String[] args) {
    int age = 22;
    // &,参加运算时,两位都为1才为1,否则都为0
    System.out.println(6 & 5);// 结果为:4
    //6的二进制 110,5的二进制101。结果为:100 ,100的十进制为4
    System.out.println(3 & 5);// 结果为:1
    // |,参加运算时,只有两位都为0才为0,否则都为1。
    System.out.println(5 | 6);// 结果为:7
    // ^,亦或:只要参加的运算的两位不同才为1,否则都为0。
    System.out.println(5 ^ 6);// 结果为:3
    // << :a<<b ,将a的二进制数据左移b位,右边移空的部分补0。
    System.out.println(4 << 4); // 结果为:4*(2的4次幂)
    }
}

!!位运算只是针对二进制的整数进行运算


条件运算符:判断表达式1 ? 数值1 :数值2

package com.zpwd.chapter1;

public class HelloWord {
public static void main(String[] args) {
    int a1 = 10;
    int a2 = 4;
    int a3 = a1 > a2 ? a1 : a2;
    System.out.println(a3);//结果为:10
    
    a3 = 999<1?a1:a2;
    System.out.println(a3);//结果为:4
    }
}

表达式1中的数值,与?后面的表达式2中的数值没有任何关系。


面试题

1、按位与&,按位| 和逻辑与&&,逻辑或||的异同点。

  • 都能进行逻辑判断。
  • 按位与&,按位|能参加按位运算。
  • 逻辑与&&,逻辑或||具有短路特性。
    2、请给出下列的输出结果。
    int x = 1;
    x = x++;
    x = x++;
    System.out.println(x)
  • 结果为:1
    3、两个数互换位置(不使用临时变量)
    4、如果快速的让2等于8。
    2<<2(位运算是二进制运算,计算机本身识别的就是01代码,不需要翻译,直接交给计算机,所以效率最快)

相关文章

  • JavaSE之运算符

    课前小例 在方法中声明的变量成为局部变量*。*同一个代码块不能声明名称相同的变量。*在声明变量之前,不能使用该变量...

  • JavaSE 基础学习之五 —— IO 操作 (java. io

    接上篇《JavaSE 基础学习之四 —— 异常的处理》 五. JavaSE 基础学习 —— IO 操作 (java...

  • javaSE - 002 - 运算符 Operator

    运算符分类 算术运算符(+ - * 和数学上的意义一致)1.取模运算符% 2.除法运算符 关系运算符1.大于(>)...

  • javaSe-02-运算符

    基础运算符 基础的比如 + - * / %下边有几个特殊的: 5/2 =2 5/2.0 = 2.5 5/0 = 抛...

  • 【javase02~运算符】

    【部分内容来自网络,侵删】 变量 变量是指内存中的一个存储区域,该区域要有自己的名称(变量名)、类型(数据类型),...

  • javaSE学习-位运算符

    & 位与 | 位或 位运算符会将数字转化为二进制再进行计算。 分析: 上面这些运算符会将数字转换成2进制再进行运算...

  • 大家想不想要从Java到架构师的学习路线和视频教程?

    第一部分-初级 JavaSE Java语言概述 对象 XML&正则表达式 String 运算符 方法 流程控制语句...

  • javaSE_day02_运算符

    java数据类型: 强类型: 1.先声明类型; 2.赋值的类型 与 声明的类型相符合。 -----------...

  • javase基础03-运算符

    运算符是用来计算数据的符号。数据可以是常量,也可以是变量。被运算符操作的数我们称为操作数。 1.算术运算符 算术运...

  • JavaSe之变量和运算符

    关键字,保留字,标识符 Java中数据类型分两大类型 常见进制,字符,转义符 同一个块内,不能声明同名变量变量的作...

网友评论

      本文标题:JavaSE之运算符

      本文链接:https://www.haomeiwen.com/subject/lnxtuqtx.html