JAVA基础——写代码
2010-09-09 22:28
267 查看
声明了什么
String s = "Hello world!";
s:指向String类型对象的引用变量(即内存地址),目前指向"Hello world!"这个String类型对象
String string = s;
string:指向与s一致的对象
"=="和equals方法究竟有什么区别
"=="比较变量的值是否相等
int a=10;
int b=10;
则a==b将是true。
但不好理解的地方是:
String a=new String("foo");
String b=new String("foo");
则a==b将返回false。
a与b的值就是内存地址,由于引用的不同内存地址,所以不等
对象的内容比较,应该用equals
看一下Object对象的equals方法是如何实现的:
boolean equals(Object o){ return this==o; }
Object 对象默认使用了==操作符。所以如果你的类没有覆盖equals方法,那你的类使用equals和使用==会得到同样的结果
比较两个对象内容是否相等,应该由类的创建者决定,所以Object把这个任务留给了类的创建者。
String到底变了没有
因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。
String s = "Hello";
s = s + " world!";
在这段代码中,s原先指向一个String对象,内容是 "Hello",然后我们对s进行了+操作,这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为"Hello world!",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。
比如你找了个老婆,后来经不住诱惑又搞了个情人,可是你不能有了情人,把老婆甩了吧。所以要苦了你的钱包了。两个开销肯定要比一个大。
final关键字到底修饰了什么
final迫使引用只能指向初始指向的那个对象,改变它的指向会导致编译期错误。
比如你和老婆在逛街,老婆很霸道,可是街上靓妹很多,这时你的目光一直停留在别人那里,那肯定要吃不了兜着走了,所以只能。。。
到底变量要怎么样初始化
1. 类的属性,或者叫值域
2. 方法里的局部变量
3. 方法的参数
对于第一种变量,Java虚拟机会自动进行初始化。如果给出了初始值,则初始化为该初始值。如果没有给出,则把它初始化为该类型变量的默认初始值。
int类型变量默认初始值为0
float类型变量默认初始值为0.0f
double类型变量默认初始值为0.0
boolean类型变量默认初始值为false
char类型变量默认初始值为0(ASCII码)
long类型变量默认初始值为0
所有对象引用类型变量默认初始值为null,即不指向任何对象。
对于第二种变量,必须明确地进行初始化。
其实第三种变量和第二种本质上是一样的,都是方法中的局部变量,传入的值就是初始值
TO be continue
String s = "Hello world!";
s:指向String类型对象的引用变量(即内存地址),目前指向"Hello world!"这个String类型对象
String string = s;
string:指向与s一致的对象
"=="和equals方法究竟有什么区别
"=="比较变量的值是否相等
int a=10;
int b=10;
则a==b将是true。
但不好理解的地方是:
String a=new String("foo");
String b=new String("foo");
则a==b将返回false。
a与b的值就是内存地址,由于引用的不同内存地址,所以不等
对象的内容比较,应该用equals
看一下Object对象的equals方法是如何实现的:
boolean equals(Object o){ return this==o; }
Object 对象默认使用了==操作符。所以如果你的类没有覆盖equals方法,那你的类使用equals和使用==会得到同样的结果
比较两个对象内容是否相等,应该由类的创建者决定,所以Object把这个任务留给了类的创建者。
String到底变了没有
因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。
String s = "Hello";
s = s + " world!";
在这段代码中,s原先指向一个String对象,内容是 "Hello",然后我们对s进行了+操作,这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为"Hello world!",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。
比如你找了个老婆,后来经不住诱惑又搞了个情人,可是你不能有了情人,把老婆甩了吧。所以要苦了你的钱包了。两个开销肯定要比一个大。
final关键字到底修饰了什么
final迫使引用只能指向初始指向的那个对象,改变它的指向会导致编译期错误。
比如你和老婆在逛街,老婆很霸道,可是街上靓妹很多,这时你的目光一直停留在别人那里,那肯定要吃不了兜着走了,所以只能。。。
到底变量要怎么样初始化
1. 类的属性,或者叫值域
2. 方法里的局部变量
3. 方法的参数
对于第一种变量,Java虚拟机会自动进行初始化。如果给出了初始值,则初始化为该初始值。如果没有给出,则把它初始化为该类型变量的默认初始值。
int类型变量默认初始值为0
float类型变量默认初始值为0.0f
double类型变量默认初始值为0.0
boolean类型变量默认初始值为false
char类型变量默认初始值为0(ASCII码)
long类型变量默认初始值为0
所有对象引用类型变量默认初始值为null,即不指向任何对象。
对于第二种变量,必须明确地进行初始化。
其实第三种变量和第二种本质上是一样的,都是方法中的局部变量,传入的值就是初始值
TO be continue
相关文章推荐
- Redis基础之Java散列代码
- 黑马程序员——Java语言基础(代码示例篇)
- JAVA代码—算法基础:航线问题
- Java基础代码实例 :在控制台中输出金字塔,这个金字塔是由左右对称的数字组成的。
- Java基础——MD5处理、加密、解密代码
- [Web-Harvest数据采集之二]Web-Harvest基础-抓取java代码分析
- EditText Java代码设置输入框最大输入长度等基础知识,自己记录一下
- java基础常忘又常用代码
- Java基础教程(全代码解析)
- JAVA之代码混淆proguard基础(三)从异常堆栈中还原 ProGuard 混淆过的代码
- java面试题及答案(基础题122道,代码题19道)
- 黑马程序员--Java基础加强--02.代码简化 书写规律I_原始数据类型【重载】【多态】【泛型】【泛型限定】【个人总结】
- Java基础学习总结(81)——如何尽可能的减少Java代码中bug
- 计算器基础原理代码(java)
- Java基础之Map学习代码示例一:
- JAVA 代码基础规范汇总
- JAVA代码—算法基础:寻找一维整型数组中的 Peak Element
- JAVA基础知识-常用但容易出错的代码
- java基础学习面向对象之代码块 五-8
- Java基础-代码执行顺序(重要)