对象:

每个对象都是某个类的一个实例
对象包含类,类包含实例

对象引用和对象的区别:

尽管将一切都看作对象,但操纵的标识符实际上是对象的一个引用。将引用看作遥控器,用这个遥控器来操纵电视(对象),只要握住这个遥控器就可以保持这个与这个电视的链接,当改变音量或者频道的时候实际上操纵的是遥控器(引用),再由遥控器来调控电视(对象),此外如果没有电视剧,遥控器也可以独立存在,也就是说,拥有一个引动,但并不一定需要一个对象与之关联
string s; :这里创建的 s 只是一个对象引用,并不是一个对象,一旦创建了一个新的引用,就希望他与一个新的对象相关联通常使用new操作符来实现这一目的,String s = new String(“asdasd”);

存储:

对象引用存储于栈中,而对象存储于堆中

基本数据类型:

不需要用new操作符来创建变量,而是创建一个并不是一个引用的自动变量,这个变量直接存储值,并且放置在栈中,更加高效

基本数据类型:

如果某类的某个成员是基本数据类型,即使没有进行初始化,Java也会确保它获得一个默认值
boolean:所占存储空间并没有明确的指定,值:true/false,包装器类型:Boolean,默认值:false
char:大小:16-bits,最小值:Unicode 0,最大值:Unicode216-1,包装器类型:character,默认值:’\U0000’
byte:大小:8-bits,最小值:-128,最大值:+127,包装器类型:Byte,默认值:0
short:大小:16-bits,最小值:-2 15 ,最大值:+2 15 -1,包装器类型:Short,默认值:0
int:大小:32-bits,最小值:-2 31 ,最大值:+2 31 -1,包装器类型:Integer,默认值:0
long:大小:64-bits,最小值:-2 63 ,最大值:2 63 -1,包装其类型:Long,默认值:0l
float:大小:32-bits,最小值:IEEE754,最大值:IEEE754,包装器类型:Float默认值:0.0f
double:大小:64-bits,最小值:IEEE754,最小值:IEEE754,包装器类型:Double,默认值:0.00d
基本数据类型被特殊对待的原因:,直接存储的是值并且直接被存储在栈中
高精度计算的类:Biginteger:支持任意精度的整数
BigDecimal:支持任意精度的定点数
类下面的是成员变量
成员变量默认值引用类型为null
但是基本类型的初始化并不适用于“局部变量”
局部变量必须初始化
局部变量:在方法内部定义的变量都是局部变量

Java中的数组:

数组的长度属于数组固有的状态
Java确保数组会被初始化,而且不能在它的范围之外被访问。这种范围检查,是以每个数组上少量的内存开销及运行是的下标检查为代价的

作用域:

作用域决定了在其内定义的变量名的可见性和生命周期。

image.png
在作用域里定义的变量只可用于作用域结束之前

字段和方法:

一旦定义了一个类,就可以在类中设置两种类型的元素:字段和方法
如果字段是对某个对象的引用,就必须初始化该引用,以便使其与一个实际的对象(使用new来实现)相关联
引用一个对象的成员:在对象引用的名称之后紧接着一个句点,然后再接着是对象内部的成员名称
方法的基本组成包括:名称,参数,返回值和方法体
方法只有通过对象才能被调用
image.png
方法和参数列表合起来被称作“方法签名”,唯一的标识出某个方法

参数列表

方法的参数列表指定要传递给方法什么样的信息。采用的都是对象形式,因此在参数列表中必须指定每个传递对象的类型及名字,这里的传递实际上也是引用,并且引用的类型必须准确
static
image.png
image.png
st1.i == st2.i
image.png
image.png
代码风格:类名的首字母要大写 标识符的首字母要小写