1、引用和对象
在Java中,一切都可以看成对象,但是操纵的标识符实际上是对象的一个引用。比如说遥控(引用)操作电视机(对象)。此外,没有电视机,遥控也可以单独存在,也就是说,你拥有一个引用,并不需要一个对象与它关联。<br /> 因此,如果想操纵一个词或者一个句子,可以用**string引用**: String s; 但是s并没有与一个对象相关联,所以向s发送消息会报错。正确做法是**一旦创建了一个引用,就希望他能与一个新的对象相关联。通常用new操作符来实现这一目的。** new关键字的意思就是“给我一个新对象”,刚才例子可以写成String s = new String('asfd'); //s-引用 ,'asfd'-对象
2、存储到什么地方
寄存器(最快的存储区)
栈 (位于RAM,某些java数据存储在栈中—特别是对象引用,但是Java对象并不存储其中)
堆 (位于RAM, 存放所有的Java对象)
常量存储
非PAM存储
3、基本类型
基本类型 | 大小 | 默认值 | 包装器类型 |
---|---|---|---|
Boolean | - | false | Boolean |
char | 16bit | null | Character |
byte | 8bit | 0 | Byte |
short | 16bit | 0 | Short |
int | 32bit | 0 | Integer |
long | 64bit | 0 | Long |
float | 32bit | 0.0 | Float |
double | 64bit | 0.0 | Double |
Boolean类型所占存储空间的大小没有明确指定,仅仅定义能够取字面值true或false
基本类型与包装类型的区别:
基本类型有默认值且不是Null,包装类型不赋值是Null。
包装类型的存在理由:
Java是面向对象的语言,对象就是其灵魂,除了定义一些常量与局部变量外,在很多比方比如方法参数、对象属性中很少会使用基本类型来定义变量。
4、高精度数字
BigInteger支持任何精度的整数
BigDecimal支持任何精度的定点数
5、作用域(scope)
作用域决定了在其内定义的变量名的可见性和生命周期。在C、C++、Java中,作用域由花括号的位置决定。
Java中不能这么写,但是在C和C++中合法
对象的作用域不具备和基本类型一样的生命周期,当用new创建一个Java对象时,它可以存活于作用域之外。所以:
{
String s = new String('a string');
} //end of scope
引用s在作用域终点就消失了。然而,s指向的String对象仍继续占据内存空间
Java有一个垃圾回收器
6、字段(数据成员)和方法(成员函数)
如果字段是对某个对象的引用,必须初始化该引用,以便与一个实际的对象相关联(如前所述new来实现)
7、局部变量
8、方法、参数和返回值
方法的基本组成部分包括:名称、参数、返回值的方法体。
ReturnType methodName(/* 参数列表*/){
/*方法体*/
}
方法名和参数列表(合起来称为“方法签名”)唯一地标识出某个方法
若返回类型是void,return关键字的作用只是用来退出方法,所以可以在任何地方返回。
如果返回类型不是voi,那么不管在哪里返回,编译器都会强制返回一个正确类型的返回值