zoukankan      html  css  js  c++  java
  • 从头认识java-2.1 操作符

    这一章节我们来讨论一下操作符。

    这里面讨论的操作符不是基础只是,而是一些操作符需要注意的点。

    1.几乎所有的操作符都是操作基础数据类型,=、==和!=例外,还有+=和+可以是用在String上面。下面是三个例子

    package com.ray.ch01;

    public class Test {
    
    	public static void main(String[] args) {
    		int a = 1 + 1;
    		System.out.println(a);
    		double b = 1.2 / 1.0;
    		System.out.println(b);
    	}
    }
    

    package com.ray.ch01;
    
    public class Test {
    
    	public static void main(String[] args) {
    		A a = new A();
    		A a1 = new A();
    		System.out.println(a == a1);
    		System.out.println(a == null);
    		System.out.println(a != null);
    	}
    }
    
    class A {
    	{
    		System.out.println("class A");
    	}
    }
    

    package com.ray.ch01;
    
    public class Test {
    
    	public static void main(String[] args) {
    		String str = "abc";
    		System.out.println(str + "d");
    		str += 1;
    		System.out.println(str);
    	}
    }
    

    对于上面的str+=1,这里面的1是整形,但是它会先转成字符型,然后再进行字符相加。


    2.优先级

    对于复杂的公式,虽然java已经为我们规定好操作符的优先级,但是在使用当中经常忘掉,因此最好使用小括号括起来,这样无论优先级怎样,都可以按照原来的计算进行。

    package com.ray.ch01;
    
    public class Test {
    
    	public static void main(String[] args) {
    		int a = 1, b = 2, c = 3;
    		int d = a + b / 2 + c * 3;
    		int e = (a + b) / (2 + c) * 3;
    		System.out.println(d);
    		System.out.println(e);
    	}
    }
    

    大家可以看到,上面的e和d明显是不同的数值,如果我们进行更加复杂的运算,公式加入更多的操作符,这个时候小括号就是必须的。


    3.赋值

    使用右边的值赋给左边的值,右边的值可以是常量、变量或者表达式,左边的值是明确的已经命名的变量,不能够是常量或者表达式。

    例如:

    a=4是没有问题,但是4=a就是异常。

    对于基础类型,赋值就像上面的一样简单。

    对于对象的赋值,就是操作对象的引用,把引用赋给某个变量,当一个对象不被引用,他将会被垃圾回收器清除。

    package com.ray.ch01;
    
    public class Test {
    
    	public static void main(String[] args) {
    		A a1 = new A();
    		System.out.println(a1);
    		a1.id = 1;
    		System.out.println(a1.id);
    		A a2 = new A();
    		System.out.println(a2);
    		a2.id = 2;
    		System.out.println(a2.id);
    		a2 = a1;
    		System.out.println(a1);
    		System.out.println(a1.id);
    		System.out.println(a2);
    		System.out.println(a2.id);
    	}
    }
    
    class A {
    	int id;
    }

    输出:

    com.ray.ch01.A@1fb8ee3
    1
    com.ray.ch01.A@61de33
    2
    com.ray.ch01.A@1fb8ee3
    1
    com.ray.ch01.A@1fb8ee3
    1

    从输出结果可以看出,a2原来所对应的对象在a2=a1之后就已经消除了,a2指向另一个对象。

    上面的代码引申出一个问题,就是如果操纵对象的域,会引起混乱,这一点需要大家注意。


    这一章节主要讨论操作符的一般的特性,下面将会对各种操作符进行展开。


    这一章节就到这里,谢谢。

    -----------------------------------

    目录



    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    @Transactional事务不起作用原因
    Date类型错误
    springboot整合mybatis(注解)
    springcloud(六):Spring Cloud 配置中心采用数据库存储配置内容
    Mybatis系列(二)配置
    spring boot日志logback输出
    spring boot不使用resoures而是建立一个conf
    spring boot使用guava缓存
    OrCAD生成网表
    OrCAD创建原理图符号图
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944487.html
Copyright © 2011-2022 走看看