Java学习笔记:操作符易错内容
2016-05-18 21:51
441 查看
在最底层,Java中的数据是通过使用操作符来操作的。
1.'=' 赋值
对于基本数据类型就是简单的赋值,如a=b,则无论改变a还是b均不会对另一个产生影响。
但是在java中,对于对象来说,‘=’相当于对对象引用,假如c=d,若c或者d发生变化,则另一个也会变化。
2.'/ '除法
Java中的除法会直接去掉小数点的部分。
3.关系操作符
'==' 、'!=' 如果是基本数据的话就正常操作
但如果是对象间的比较的话,比较的是对象的引用,而不是基本的值。
public static void main(String[] args){
Integer n1 = new Integer(47);
Integer n2 = new Integer(47);
System.out.println(n1);
System.out.println(n2);
//可以看出这里的值都是47
System.out.println("n1==n2?: " + (n1 == n2)); //但是这里n1于n2不相等,因为n1、n2引用的对象不一样
System.out.println("n1!=n2?: " + (n1 != n2));
Integer n3,n4;
n3 = n1;
n4 = n2;
System.out.println("n3==n4?: " + (n3 == n4)); //这里n3,n4也是引用了不一样的对象所以不相等
n3 = n1;
n4 = n1;
System.out.println("n3==n4?: " + (n3 == n4)); //这n3、n4引用了同一个对象,相等了
}
}
4.逻辑运算符
(与)&&、(非)!、(或)||
逻辑运算符操作符只可应用于布尔值,与C++不同的是:不能将一个非布尔值当做布尔值在逻辑表达式中使用。
如:在C++中可以看到while(1) 这样的语句,因为true的值就是1,所以可以用1代替true或者0代替false
但是在Java中不允许这样做,只能用while(true),不能使用while(1)
1.'=' 赋值
对于基本数据类型就是简单的赋值,如a=b,则无论改变a还是b均不会对另一个产生影响。
但是在java中,对于对象来说,‘=’相当于对对象引用,假如c=d,若c或者d发生变化,则另一个也会变化。
class A{ int a; } public class Practice{ public static void main(String[] args){ A a1 = new A(); A a2 = new A(); a1.a = 1; a2.a = 2; System.out.println("a1:" + a1.a); System.out.println("a2:" + a2.a); a1 = a2; System.out.println("a1:" + a1.a); System.out.println("a2:" + a2.a); a1.a = 99; System.out.println("a1:" + a1.a); System.out.println("a2:" + a2.a); a2.a = 100; System.out.println("a1:" + a1.a); System.out.println("a2:" + a2.a); } }
a1:1<span style="white-space:pre"> </span>//输出 a2:2 a1:2 a2:2 a1:99 a2:99 a1:100 a2:100
2.'/ '除法
Java中的除法会直接去掉小数点的部分。
public class Practice{ public static void main(String[] args){ int a = 3; int b = 2; System.out.println(a/b); } }
1 <span style="white-space:pre"> </span>//输出
3.关系操作符
'==' 、'!=' 如果是基本数据的话就正常操作
但如果是对象间的比较的话,比较的是对象的引用,而不是基本的值。
<pre name="code" class="java">public class Practice{
public static void main(String[] args){
Integer n1 = new Integer(47);
Integer n2 = new Integer(47);
System.out.println(n1);
System.out.println(n2);
//可以看出这里的值都是47
System.out.println("n1==n2?: " + (n1 == n2)); //但是这里n1于n2不相等,因为n1、n2引用的对象不一样
System.out.println("n1!=n2?: " + (n1 != n2));
Integer n3,n4;
n3 = n1;
n4 = n2;
System.out.println("n3==n4?: " + (n3 == n4)); //这里n3,n4也是引用了不一样的对象所以不相等
n3 = n1;
n4 = n1;
System.out.println("n3==n4?: " + (n3 == n4)); //这n3、n4引用了同一个对象,相等了
}
}
</pre>
<pre name="code" class="java">47<span style="white-space:pre"> </span>//输出 47<span> </span> n1==n2?: false <span> </span>
n1!=n2?: true n3==n4?: false<span style="white-space:pre"> </span> n3==n4?: true
4.逻辑运算符
(与)&&、(非)!、(或)||
逻辑运算符操作符只可应用于布尔值,与C++不同的是:不能将一个非布尔值当做布尔值在逻辑表达式中使用。
如:在C++中可以看到while(1) 这样的语句,因为true的值就是1,所以可以用1代替true或者0代替false
但是在Java中不允许这样做,只能用while(true),不能使用while(1)
相关文章推荐
- 基于Eclipse Mars.2的OSGi环境搭建
- JDK 源码解析 —— Condition
- Java正则表达式
- Spring上下文ContextLoaderListener作用
- Jmeter-3.0的源码导入eclipse并执行
- Java 基础知识总结
- URL类
- 亚信的实习的一到笔试题,交换链表的后半部分
- Javaweb文件的上传与下载
- springmvc笔记(1)
- Java进阶笔记(装饰者模式)
- 如何解决java线程中的资源共享的问题
- 【转】springmvc源码分析链接
- java之Intager比较
- HDU 1850 —— Being a Good Boy in Spring Festival
- Java集合类的继承关系
- Servlet
- java知识点及初学类
- Java单例模式详解
- java程序读取文件内容打印控制台