Thinking in java 16/3/6
对象与基本类型:
String s = new String(“abc”);
s为引用,引用值为abc的对象,此对象存放在堆中
则函数参数传递时,传递s,函数改变的是对象本体,这个c++的引用类似
基本类型:在java中视作一种特殊存在的“基本类型”,(完全为了数据高效的处理),也就是说,不是用new来创建变量,而是创建一个并非引用的“自动”变量。这个变量直接存储“值”,并置于堆栈中
特性:java中的基本类型不会随着硬件架构改变而变化,唯一确定了存储空间的大小,这与c++的基本数据不同,所以java中没有sizeof
基本类型 与 包装器类型
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
void Void
可以在堆中用包装器类型来对应堆栈中存在的基本类型:
char c = ‘x’;
Character ch = new Character(c); //Character ch = new Character('x');
//Charcter ch = 'x'; (自动转化,‘x’自动转化为对象,再被ch引用)
//char c = ch; (反向转化)
综上:也就是c 与 ch “定价”
类:字段+方法
字段:
字段中的基本类型与普通的基本类型:
字段中的基本类型的对象:存在默认值
普通基本类型定义的对象:如果没有初始化在java中直接视作错误,c++中编译器只会警告
方法:
方法通过对象调用,a.f()理解为向对象发送消息
stactic字段与方法:所有同一类的对象共用同一存储空间,并且可以不通过特定对象调用,直接用类名调用
强制类型转换:
基础类型和c++类似,布尔类型不能转化为其他类型
类类型只能在同类族中相互转换,比如橡树课转换为树,橡树不能转化为岩石
操作符:
基础类型操作符与c++类似,布尔类型不能进行'>','<','!'
while(a=b) 在java中会报错
所有的条件语句都利用条件表达式的真或假来决定执行路径,java不允许我们将一个数字作为布尔值使用
比如if(a),应该写成if(a!=0)