java操作符

package operator;

/**
 * 操作符的学习
 * @author
 * @version 1.0
 */
public class OprTest {
    /*
    * 上一次介绍了java中关于对象的一些知识
    * java中既有一些基本类型(特殊类型)的数据,也可以有由程序员自己定义类型的对象
    * 而且,使用这些对象的方式是用new创建,用"."去访问成员属性和方法(public)
    *
    * 那么,我想计算1+1,又该如何实现?
    * 这就用到了操作符“+”
    * 类比一下,两个操作数就是两个基本类型int的对象
    * 如果我想让两个对象产生关联,就可以使用操作符
    */

    /**
     * 1.算术操作符,+ - * / % 加减乘除,取模(余数)
     * 操作符其实都有优先级,只不过算术运算符比较明显,先算乘除和取模,后算加减
     * 再比如,A && B,下面会介绍,这是A和B两件事,两件事都是真的,那么整个表达式结果就是真的
     * A 和 B可以是其他表达式,那么肯定应该是先得到两件事的结果,再进行&&这个运算
     * 为了避免搞混,合理地使用()是非常好的,原则很简单,“括号里的先算!”
     * ++和--是递增和递减,x++就是x=x+1
     */
    public void algorithm() {
        System.out.println(" 1+3*4-2= " + ( 1 + 3 * 4 - 2 ) );
        System.out.println(" (1+3)*(4-2)= "+( ( 1 + 3 ) * ( 4 - 2 ) ) );
    }

    /**
     * 2.赋值:= += -= *= /=
     * x+=1 就是 x=x+1
     * 赋值的时候会出现一个问题,把一个基本类型的变量赋值给另一个变量(从右向左),没什么问题,直接复制值
     * 如果是对象呢?是把堆中对象的内存空间直接覆盖了?
     * 不是的,对象赋值只操作引用!引用!引用!函数传参传的也是引用!
     * 也就是说,两个引用指向的是一个位置,你改一个另一个也会跟着改
     * 叫做“别名问题”
     */
    public void problem() {
        Test t1 = new Test();
        Test t2 = new Test();

        t1.test = 1;
        t2.test = 2;
        System.out.println("t1没赋值给t2之前:t1:" + t1.test + " t2:" + t2.test);

        t2 = t1;
        System.out.println("t1赋值给t2之后:t1:" + t1.test + " t2:" + t2.test);

        // 字符串也可以增加
        String str = "ab";
        System.out.println("str在增加之前:" + str);
        str += "c";
        System.out.println("str在增加之后:" + str);
    }

    /**
     * 3.关系操作符 == != > < >= <=
     * 作用于基本数据类型,返回一个布尔变量
     * java库的一些对象可以用 == != 进行比较,比如两个Integer对象
     * 但是对于我们自定义的对象,需要覆盖equals方法进行比较,后面学到了再说
     */

    /**
     * 4.逻辑操作符 && || !
     * 与或非,作用于布尔变量true或false
     * 这个得去学一点离散数学的真值表,没办法,简单理解就是
     * 用&&连接的,都是真才为真
     * 用||连接的,有一个真就是真
     * 用!,直接取反
     * 那么有时候需要很多项表达式混在一起 A && B && C && ……
     * 只要确定了整个表达式的值,那么就不再继续计算剩下没算过的表达式了
     */

    public boolean test1() {
        System.out.println("execute 1");
        return false;
    }

    public boolean test2() {
        System.out.println("execute 2");
        return true;
    }

    public void logic() {
        System.out.println( test1() || test2() );
        System.out.println( test1() && test2() );
    }

    /**
     * 5.条件运算符
     * (A) ? (B) : (C) 如果A是真的,就执行B,否则,执行C
     * 真的不如if else更容易理解
     */

    /**
     * 6.类型转换
     * java有两种类型转换;隐式的和显式的
     * 隐式的类型转化,就是将char byte 和 short转化为int,然后再将整个表达式的数据的类型全都转换为位数最高的类型
     * 显示类型转化需要程序员规定将数据转换为什么类型的数据 (double)1/2
     * 如果不转换,1/2得到的结果将会是0,直接截取,不会四舍五入,四舍五入要用round函数(java.lang包)
     */
    public void changeType() {
        short num1 = 6;
        short num2 = 8;
        short num3 = (short)( num1 + num2 );// 不加(short)右侧计算结果将会是int,不允许这样

        System.out.println(num3);

        int num6 = 2/3;
        float num5 = (float)2/3;
        int num7 = Math.round(num5);
        System.out.println("自动圆整:" + num6);
        System.out.println("手动圆整:" + num7);
    }
}

/**
 * 用于别名问题
 */
class Test {
    int test;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值