JAVA基础——写代码
来源:互联网 发布:淘宝买增加付款方式 编辑:程序博客网 时间:2024/05/22 01:33
声明了什么
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
- JAVA基础——写代码
- Java类——写代码好像写小说
- jsp基础——嵌入java代码
- java写代码1——众数问题
- Java基础——Java笔记——代码块
- 牛腩—漂亮写代码
- Java 基础(5)—— 普通代码块、构造代码块、静态代码块
- java基础学习笔记——泛型代码详解
- JAVA基础6.32——构造代码块
- JAVA基础6.42——静态代码块
- java基础篇(十四)——代码块
- Java基础——MD5处理、加密、解密代码
- Java基础——冒号标记代码块的作用
- 黑马程序员—Java语言基础(运算符、代码示例)
- 零基础写Java爬虫
- 产品经理教你写代码—用JAVA写一个阿里云VPC Open API调用程序
- 我第一次写JAVA代码~
- java写万年历的代码
- 对rownum和rowid的理解
- Unix Domain Socket的例子
- 长筷与短筷
- linux vi 常用基本命令
- 关于Makefile
- JAVA基础——写代码
- 匹配的正则表达式
- WCF中的异常处理
- C++的类型萃取技术
- 条款1:区分指针和引用
- skip list
- JDK、JRE、JVM之间的关系
- C与C++编程区别
- aspnetpager 样式及应用