- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
Java重难点
Java重难点 1
1、按照Java的重点介绍==是比较两个对象是否相等 1
2.java中的this随处可见,用法也多,现在整理有几点: 2
3、在JAVA中有两种多态是指:运行时多态和编译时多态 4
4、Java中super的几种用法并与this的区别(转载) 5
5.Static 9
7.Clone() 14
8、StringBuffer和String 16
String
str1=Hellow World;
String
str2=Hellow World;
String
str3=new String(Hellow
World);
String
str4=new String(Hellow
World);
1、按照Java的重点介绍==是比较两个对象是否相等
1、按照Java的重点介绍==是比较两个对象是否相等
,且Java
中对String的赋值都是产生一个新的对象,原有的字符串变成了垃圾内存。但我用下面的类测试了一下,却得到了两种截然不同的结果,不知何解?
class
{
public
{
StringTest
static void
main(String
args[])
if
{
(str1==str2)
System.out.println(str1==str2);
}
elseSystem.out.println(str1!=str2);if (str3==str4)
{
System.out.println(str3==str4);
}
elseSystem.out.println(str3!=str4);
}
}
输出结果为str1==str2str3!=str4
按照Java的解释,得到的结果应该都是不等于啊?
回答:在计算机中存储数据内存中有堆与栈,堆中存放的都是对象和值等,而栈中存放的是对于对象函数,变量的引用。上面的
str1=hello word;
str2=hello word
str3 = new
str4 = new
String(hell
String(hellword和str3
word)
word)
不管str=hell
=
new
String(hello
word)都是放在堆中的,上面的定义来
看是实例化了4个对象,其实只是实例化的3个对象,因为在java中有字符数据池,对于str2在赋值之前
会检查内存中会有没有相同的数据,如果有则直接引用而对于str3,str3则不会检查直接实例化,所以会出现以上结果。
而
String
str3=new
String(Hellow
World);
String
str4=new
String(Hellow
World);
主要一个是还一个是内存内存对象对象基本类型的数据被加载到了内存池中
主要一个是
还一个是
内存
内存
对象
对象
基本类型的数据被加载到了内存池中
那么
String
str1=
Hellow
World
;
String
str2=Hellow
World;
这两个,str1和str2两个对象都指向内存池中的Hellow
也就是说,其实这两句只构造了两个对象
World这个对象
他们分别构造了str3,str4,还有两个Hellow
World对象。是因为它们都用了new关键字来构造对
象,而用new构造的对象之前是没有被加入内存池中的,所以要另外加载过来,然后,把str3和str4分别
指向所对应的Hellow World对象。
现在我们来看,str1和str2指向的都是内存池中原来的Hellow
World对象
而str3指向的是后来加入的一个Hellow World对象,str4指向的又是另外一个后来加入的Hellow
World对象
********************************************************************************************
this是指当前对象自己。
当在一个类中要明确指出使用对象自己的的变量或函数时就应该加上this引用。如下面这个例子中:
publicclassHello{Strings=Hello;
publicHello(Strings){System.out.println(s=+s);
System.out.println(1-this.s=+this.s);this.s=s;
System.out.println(2-this.s=+this.s);
}
publicstaticvoidmain(String[]ar
文档评论(0)