《Thinking in Java》第二章读书笔记
用引用操作对象
Java中,当创建一个对象的时候,jvm会给这个对象分配一个堆内存空间,然后给对象的使用者给一个引用地址
通过操作这个引用地址去操作对象
我这边对这个的理解就是jvm会给操作对象的对象一个可以控制这个对象的开关
例子:电视机,会给一个遥控器,可以同构遥控器这个开关来控制电视这个对象
虽然这个例子不是很恰当,但是我希望可以通过这个例子更好的帮助自己来理解用引用来操作对象
必须由你创建对象
//书本中距离
class Test{
public static void main(String[] args){
String s = "abc";
}
}
- Java中提供了
new
这个关键字来告诉jvm,这个对象是由我创造的,而不是jvm自己本来的 - Java中的基本的数据类型就是java创建好的对象(byte,short,int,long,double,boolean,float,char)
基本数据类型跟引用数据类型的区别
- 基本数据类型放在栈空间,引用数据类型放在堆空间
- 基本数据类型可以直接使用,引用数据类型需要通过关键字
new
来创建 - 基本数据类型通过值传递,引用数据类型通过引用(引用地址传递)
希望通过一个例子来区别值跟引用的区别
public class Test {
public static void main(String[] args) {
int i = 1;
int j = 1;
System.out.println("i是否等于j:"+(i==j));
String a = new String("abc");
String b = new String("abc");
String c = "abc";
System.out.println("a是否等于b:"+(a==b));
System.out.println("a是否等于c:"+(a==c));
System.out.println("a是否等于b:"+(a.equals(b)));
}
}
i是否等于j:true
a是否等于b:false
a是否等于c:false
a是否等于b:true
BigInteger,BigDecimal进行高精度的数据操作
Java中的数组
永远不需要销毁对象
不用程序员去编写代码进行程序的销毁,jvm会帮助我们销毁的
作用域
{
int x = 12;
{
int x = 96;
}
}
编译器会报告已经定义过
对象的作用域
{
String s = new String("abc");
} //end of scope
引用s在作用域终点就消失了
创建新的数据类型:类
Java定义了
class
这个关键字
字段和方法
字段:对象的属性 –我更加喜欢理解为对象的属性
方法:成员函数 操作本对象或者其他对象的方法