1、引用和对象

  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中,作用域由花括号的位置决定。
image.png

Java中不能这么写,但是在C和C++中合法
image.png

对象的作用域不具备和基本类型一样的生命周期,当用new创建一个Java对象时,它可以存活于作用域之外。所以:

  1. {
  2. String s = new String('a string');
  3. } //end of scope

引用s在作用域终点就消失了。然而,s指向的String对象仍继续占据内存空间

Java有一个垃圾回收器

6、字段(数据成员)和方法(成员函数)

  1. 如果字段是对某个对象的引用,必须初始化该引用,以便与一个实际的对象相关联(如前所述new来实现)

7、局部变量

8、方法、参数和返回值

方法的基本组成部分包括:名称、参数、返回值的方法体

  1. ReturnType methodName/* 参数列表*/){
  2. /*方法体*/
  3. }

方法名和参数列表(合起来称为“方法签名”)唯一地标识出某个方法

若返回类型是void,return关键字的作用只是用来退出方法,所以可以在任何地方返回。
如果返回类型不是voi,那么不管在哪里返回,编译器都会强制返回一个正确类型的返回值