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指向另一个对象。

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


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


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

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

    目录



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

  • 相关阅读:
    hdu 5446 Unknown Treasure lucas和CRT
    Hdu 5444 Elven Postman dfs
    hdu 5443 The Water Problem 线段树
    hdu 5442 Favorite Donut 后缀数组
    hdu 5441 Travel 离线带权并查集
    hdu 5438 Ponds 拓扑排序
    hdu 5437 Alisha’s Party 优先队列
    HDU 5433 Xiao Ming climbing dp
    hdu 5432 Pyramid Split 二分
    Codeforces Round #319 (Div. 1) B. Invariance of Tree 构造
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944487.html
Copyright © 2011-2022 走看看