Java 运算符

Java运算符其实没什么可以说的,只需要按照数学上的内容进行即可.
但是有几点还是需要进行理解和梳理的:
自增(++)自减(--)运算符
说白了就是在自己的基础上进行加1或者减1;

class oprtator{
    public static void main(String[] args) {
        int i = 10;
        i++;//相当于:i = i+1
        System.out.println("i++等于:"+i);

        int b = 10;
        b--;//相当于:b=b-1
        System.out.println("i--等于: "+b);
    }
}

输出:
i++等于:11
i--等于: 9
其实对于自增(++)自减(--)运算符还需要注意的是运算符的位置:

class oprtator2{
    public static void main(String[] args) {
        int i = 10;
        int b = i++;

        System.out.println("i= "+i);
        System.out.println("b= "+b);
        //当(++)为与运算值之后时,先把i的值赋给b 在进行++操作 所以b = 10  i = 11

        int c = 10;
        int d = c--;
        System.out.println("c= "+c);
        System.out.println("d= "+d);
        //同样的 //当(--)为与运算值之后时,先把i的值赋给b 在进行--操作 所以d = 10  c= 9

        System.out.println("===========================我是分隔符===========================");

        int e = 10;
        int f = ++e;
        System.out.println("e= "+e);
        System.out.println("f= "+f);
        //当(++)位与运算值之前时,先进行++操作 再把e的值赋给f 在所以e =11   f = 11

        int g = 10;
        int h = --g;
        System.out.println("g= "+g);
        System.out.println("h= "+h);
        //同样的 //当(--)为与运算值之后时,先进行--操作 ,在把的g值赋h 所以g = 9  h= 9

    }

输出:
i= 11
b= 10
c= 9
d= 10
===========================我是分隔符===========================
e= 11
f= 11
g= 9
h= 9

逻辑运算符:

class oprtator3{
    public static void main(String[] args) {
        System.out.println("&& 只有两边的值都为对的才输出对的:====> " +(true && true));
        System.out.println("&& 只有两边的值有一个为错的就输出错的:====> " +(false && true));
        System.out.println();
        System.out.println("|| 只有两边的值都为对时输出对的:====> " +(true || true));
        System.out.println("|| 只有两边的值只要有一边是对的就输出对的:====> " +(false || true));
        System.out.println("|| 只有两边的值都为错的才输出错的:====> " +(false || false));
        System.out.println();
        System.out.println("! 运算结果为对的,则输出错的:====> " +(true || true));
        System.out.println("! 运算结果为错的,则输出对的:====> " +(false || false));
    }
}class oprtator3{
    public static void main(String[] args) {
        System.out.println("&& 只有两边的值都为对的才输出对的:====> " +(true && true));
        System.out.println("&& 只有两边的值有一个为错的就输出错的:====> " +(false && true));
        System.out.println();
        System.out.println("|| 只有两边的值都为对时输出对的:====> " +(true || true));
        System.out.println("|| 只有两边的值只要有一边是对的就输出对的:====> " +(false || true));
        System.out.println("|| 只有两边的值都为错的才输出错的:====> " +(false || false));
        System.out.println();
        System.out.println("! 运算结果为对的,则输出错的:====> " +(true || true));
        System.out.println("! 运算结果为错的,则输出对的:====> " +(false || false));
    }
}

输出:
&& 只有两边的值都为对的才输出对的:====> true
&& 只有两边的值有一个为错的就输出错的:====> false

|| 只有两边的值都为对时输出对的:====> true
|| 只有两边的值只要有一边是对的就输出对的:====> true
|| 只有两边的值都为错的才输出错的:====> false

! 运算结果为对的,则输出错的:====> true
! 运算结果为错的,则输出对的:====> false

条件运算符(?:)
条件运算符也被称为三元运算符;

class oprtator4{
    public static void main(String[] args) {
        int a = 1;
        int b = 1;
        String s = (a == b) ? "a等于b" : "a不等于b";
        System.out.println("(a == b)运算后内容为: "+s);

        int c = 1;
        int d = 2;
        String s1 = (c == d) ? "c等于d" : "c不等于d";
        System.out.println("(c == d)运算后内容为: "+s1);
    }
}

输出:
(a == b)运算后内容为: a等于b
(c == d)运算后内容为: c不等于d

instanceof 运算符
instanceof 运算符使用来操作对象的,用于检查某个对象是否属于特定的Java类型或者Java接口;

/**
 * 水果类
 */
class Fruit{

}

/**
 * 苹果类
 */
class Apple extends Fruit{

}

/**
 * 一直小猫
 */
class GreenCat extends Apple{

}

class oprtator5 {
    public static void main(String[] args) {
        Fruit fruit = new Fruit();
        Apple apple = new Apple();
        GreenCat cat = new GreenCat();

        /**
         * 判断苹果类是否属于水果类
         */
    boolean falg =  apple instanceof Fruit;
    System.out.println(falg);

        /**
         * 判断青苹果属不属于水果
         */
    boolean falg1 = cat instanceof Fruit;
    System.out.println(falg1);
    }
}

输入:
true
true
对于instanceof 的使用需要结合继承接口抽象等等就AVVA类型来理解,这些内容后面都会进行梳理.

时间: 2024-09-12 16:03:11

Java 运算符的相关文章

使用InfoSphere Streams的自定义Java 运算符和ICU4J实现实时音译

集成 Java 音译模块和 InfoSphere Streams 的自定义 Java 运算符 简介 在成长型市场区域中,任何解决方案提供商面临的首要挑战是可用数据的方言和语言学的不一致性.由于成长型市场区域中拥有包括英语在内的多种官方语言,所以地区的语言符号逐渐嵌入到了英语符号中.因此,您首先需要执行音译来实现数据中的一致性,然后再继续执行处理/文本分析. 如果使用预定的语言,那么数据音译会为您提供更统一.更一致的结果.本文将介绍使用 InfoSphere Streams 的自定义 Java 运

java运算符总结

下面这个例子向大家展示了如何随同特定的运算符使用主数据类型.从根本上说,它是同一个例子反反复复地执行,只是使用了不同的主数据类型.文件编译时不会报错,因为那些会导致错误的行已用//!变成了注释内容.   //: AllOps.java // Tests all the operators on all the // primitive data types to show which // ones are accepted by the Java compiler. class AllOps

java运算符+=引出的问题,希望搞明白

问题描述 java运算符+=引出的问题,希望搞明白 short s = 3; s = s + 5; s += 5; 运算结果是 s = s + 5; 这句话编译错误,因为 s+5后,数值类型强制转换成了int型, 再赋值给一个short变量是,会丢失精度,出现编译错误 但是s += 5: 这个运算过程是怎样的,原理是什么,为什么这个就可以编辑通过呢? 解决方案 隐式类型转换可以从小到大自动转,即byte->short->int->long 如果反过来会丢失精度,必须进行显示类型转换 s=

java运算符的先后顺序

问题描述 java运算符的先后顺序 *= << % sizeof 由低至高的正确顺序 求大神 解决方案 http://www.cnblogs.com/gw811/archive/2012/10/13/2722752.html 解决方案二: 首先,java没有sizeof这个运算吧,其次,算术运算符优先移位运算符,而算术运算符之间按先后顺序. 所以顺序应该是,有高到低应该是:*=,%,<< 解决方案三: 苏小喵的很全,但不是很容易记忆.我有两条规则可以帮你迅速记住谁先谁后(最里的小括

java运算符的优先级和%取模

问题描述 java运算符的优先级和%取模 int a=2 ; int b=a+3*a++ ; b的输出值为什么是8 不是9吗怎么变成8啦 解决方案 ++优先级虽然高,但是第一个a编译器先对它取值了.也许你觉得第一个a应该是a自增1以后的值.但是编译器不这么认为.这种代码在C++中是未定义行为的代码,换言之语法规范没有规定结果是多少,不同的编译器可以产生不同的结果.我不清楚Java中有没有规定,但是可以肯定的是,这种模棱两可的代码绝对不要在你写程序的时候写出来. 解决方案二: 这段代码的正确写法取

Java运算符优先级(转)

Java运算符优先级   序列号 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 双目   ( ) 圆括号 从左到右     [ ] 方括号 从左到右     2 + 正号 从右到左 单目   - 负号 从右到左 单目   ++ 自增 从右到左 单目 前缀增,后缀增 - - 自减 从右到左 前缀减,后缀减 ~ 按位非/取补运算 从右到左 单目   ! 逻辑非 从右到左 单目 "!"不可以与"="联用 3 * 乘 从左到右 双目   / 除 从左到右

Java运算符&amp;gt;、&amp;gt;&amp;gt;、&amp;gt;&amp;gt;&amp;gt;三者的区别_java

>表示大于,如:if(a>b)...结果是boolean类型 >>表示带符号右移,如:int i=15; i>>2的结果是3,移出的部分将被抛弃. 转为二进制的形式可能更好理解,0000 1111(15)右移2位的结果是0000 0011(3),0001 1010(18)右移3位的结果是0000 0011(3). >>>无符号右移: 按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补零.对于正数来说和带符号右移相同,对于负数来

java运算符常规操作规则

使用运算符的一个缺点是括号的运用经常容易搞错.即使对一个表达式如何计算有丝毫不确定的因素,都容易混淆括号的用法.这个问题在Java里仍然存在. 在C和C++中,一个特别常见的错误如下: while(x = y) { //... } 程序的意图是测试是否"相等"(==),而不是进行赋值操作.在C和C++中,若y是一个非零值,那么这种赋值的结果肯定是true.这样使可能得到一个无限循环.在Java里,这个表达式的结果并不是布尔值,而编译器期望的是一个布尔值,而且不会从一个int数值中转换得

java运算符的优先级

运算符的优先级决定了存在多个运算符时一个表达式各部分的计算顺序. Java对计算顺序作出了特别的规定. 其中,最简单的规则就是乘法和除法在加法和减法之前完成.程序员经常都会忘记其他优先级规则,所以应该用括号明确规定计算顺序. 例如: A = X + Y - 2/2 + Z; 为上述表达式加上括号后,就有了一个不同的含义. A = X + (Y - 2)/(2 + Z);