L的java学习笔记——关于运算符和循环的一些重点
2018-02-16 12:52
555 查看
一、==和equal()
在C\C++里,==符号的功能很明确,就是判断两个值是否相同。但是在java里,有一点不同。如果是基础数据类型定义的变量,那就是跟C\C++一样,判断两个变量的值是否相同。但是如果比较的是两个对象,那就不一样了。此时,==是判断两个对象的引用是否指向同一个对象,也即判断两个对象是不是同一个。举个例子可以直观了解。public class operator { private int value; public operator(int value) { this.value=value; } public static void main(String[] args) { // TODO Auto-generated method stub operator a=new operator(10); operator b=new operator(10); String str1="hello"; String str2="hello"; String str3=new String("hello"); System.out.println("a.value==b.value is "+(a.value==b.value)); System.out.println("a==b is "+(a==b)); System.out.println("str1==str2 is "+(str1==str2)); System.out.println("str1==str3 is "+(str1==str3)); } } 输出结果: a.value==b.value is true a==b is false str1==str2 is true str1==str3 is false
可以看到虽然value是成员变量,但是value是基本数据类型,所以两个值相等时返回true。然而虽然a和b的value的值相等,但是a==b是false的,这是a和b是new出来的两个对象,根据调试结果可以看到a和b的id是不同的,说明是两个不同的对象,所以返回false。然后看str1和str2,发现结果返回true,有人就会问了,str1和str2不是分开定义的吗,怎么会是相等的?在String类型里,String类是维持着一个String池的,当在定义时不是用new时,java会在String池中寻找是否存在相同字符串的对象,如果有就返回它的引用,所以str1和str2是同一个对象的两个引用。那如何判断两个值相等呢?java的Object类提供了.equal()方法。
System.out.println(str1.equals(str3)); 输出结果: true
此时比较的就是两个对象的值。
总结:==比较的是两个对象的引用是否指向同一块堆内存,简单来说,判断两个对象是不是同一个。equal()比较的是两个对象的值。
二、java增强for循环
java增强for循环的语法为for (Type value : array) { expression value; }
value的声明类型必须和array元素一致。
import java.util.ArrayList; public class example { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<String> list=new ArrayList<>(); list.add("jia ling"); list.add("feng gong"); list.add("cai ming"); for(String name:list) { System.out.println(name); } } } 输出结果: jia ling feng gong cai ming
*以上为个人总结,如有错误之处,还请大佬指出。
相关文章推荐
- java学习笔记--关于interface和abstract的一些思考
- Java学习笔记(二)运算符和循环选择结构
- Java基础学习笔记(一)环境变量配置,数据类型,运算符,控制语句,循环语句
- java学习笔记-运算符与循环结构
- [JAVA][学习笔记]关于java.util.concurrent中 Future类的一些验证
- Java之学习笔记(8)-------------运算符和循环结构(流程控制)
- java学习笔记,关于java的一些基础知识,适用于初学者,第一节
- Java学习过程应该深入理解的一些重点
- 一些关于java的笔记
- Java学习过程中应该深入理解的一些重点
- Java学习过程中应该理解的一些重点内容
- 好东西大家分享: JAVA学习的一些重点
- 学习java过程中的一些笔记.
- Java学习过程应该深入理解的一些重点
- 一些关于java的笔记
- Java学习过程中应该深入理解的一些重点
- 关于LINQ(语言集成查询)的一些学习笔记
- Java学习过程的一些重点
- Java学习过程的一些重点
- 好东西大家分享: JAVA学习的一些重点