2016年3月2日
2016-03-02 17:45
330 查看
1、引用数据类型
在Java中除去基本数据类型,其余的都是引用数据类型.引用数据类型的声明:
String str = new String("hello");
首先,第一部分进行变量的声明,然后,右边进行实例化操作:new.其作用是在内存中动态的划分一块地址,用来存放”hello”.最后,将存放”hello”的地址赋值给str.
2、变量的作用域
Java中变量根据所声明的位置不同,分为全局变量和局部变量.其中,全局变量主要是在类最外面进行声明和初始化,可以供整个Java类中任意地方进行调用;而局部变量通常在函数中进行声明和初始化,且只能在函数内进行使用.3、算术运算符:+、-、*、/、%、++、–
/:如果两边参与运算的变量为整型,其运算结果必为整型.如果有一方为浮点型,其结果必为浮点型.%:如果分子大于分母,得余数;如果分子小于分母,得分子;如果分子分母相同,得0.
++(自增):a++(++a) => a = a+1;
a++与++a的区别:a++允许先调用a,然后a自己在加一;而++a是先进行加一,然后才允许被调用.
–(自减): a–(–a) => a = a-1;
4、关系运算符:>、<、>=、<=、==、!=
注意:在实际使用的时候,基本数据类型和引用数据类型在利用关系运算时他们的比较的内容是不同的.基本数据类型:进行关系运算时,直接进行值的比较.
引用数据类型:进行关系运算时,要进行其所在内存区域的对比以及其中所包含内容值得对比.
在Java中有一些特殊的引用数据类型:
Integer(int)、String、Long(long)、Double(double)、Float(float)、Character(char)等.他们内部包含了与之对应的基本数据类型.我们称之为包裹类.除此之外,其他的对象类型进行equals()比较时都是false.
提示:通常来讲一个Java文件对应一个Java类.文件名和类名要相同.但是特殊情况,一个Java中可以包含多个Java类,但是只能有一个Java类作为public类型的,同时该类名与文件名同名.
5、逻辑运算符:与(&&)、或(||)、非(!)
参与运算True true true false
False false true true
说明,逻辑与运算左右两边的关系运算值,两边都为true时,结果才为true.
逻辑或运算左右两边的关系运算值,两边有一方为true,结果即为true.
逻辑非运算右边的关系运算值,原来为true,结果为false;原来为false,结果为true.
6、条件运算符:三元运算符
关系运算?结果1:结果2;String flag = 10 > 6 ? "true" : "false";
如果关系运算的结果为true,则返回结果1,否则返回结果2.
7、个人问题解决
class MyValue { int i; } public static void methods5() { MyValue mv1 = new MyValue(); MyValue mv2 = new MyValue(); mv1.i = mv2.i = 100; MyValue mv3 = mv1; System.out.println(mv1 == mv2); //false System.out.println(mv1.equals(mv2)); //false System.out.println(mv1 == mv3); //true String str1 = new String("Hello"); String str2 = new String("Hello"); String str3 = str1; System.out.println( str1 == str2 ); //false System.out.println( str1.equals(str2) );//true System.out.println( str1 == str3 ); //true }
代码示例,自定义类的实例调用equals方法时返回false,而String类则返回true,原因查看源代码
//object.class的equals方法 public boolean equals(Object obj) { return (this == obj); } //String.class的equals方法 public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; }
String类重写了equals方法,而自定义类没有重写equals方法,继承父类中的equals方法。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树