《Java编程思想》笔记 第二章 一切都是对象

1.对象存储位置

1.1 对象的引用存在中,对象存在中。new 出来的对象都在堆中存储。栈的存取速度较快。

1.2 所有局部变量都放在栈内存里,不管是基本类型变量还是引用类型变量,都存储在各自的方法栈中;

   但是引用类型变量所引用的对象(包括数组,普通Java对象)则总是存储在堆内存中。

1.3 基本类型的包装器类 如 Integer 可以在堆中创建一个非基本对象,用来表示基本类型。

1.4 也可以使用 Integer i = 1, Java SE5的自动包装功能将自动的将基本类型转换为包装器类型

2.对象的作用域。 

String s = new String("a string");

引用s在作用域终点消失,但s指向的对象仍占据内存空间。

3.创建新的数据类型:类

3.1 Java中所做的全部工作就是 定义类,生产类的对象,以及发送消息给对象,对象只能由类产生。

3.2 类中有字段和方法。字段可以是基本类型也可以是某类的对象,通过引用和对象通信如果是引用则一定要初始化该引用,使其于一个实际对象关联

class A {
	int i = 1; //类的字段为基本类型,并初始化为1
	B b; //字段为对象的引用,未初始化,运行时自动初始化为null
	B c = null;// 字段为对象的引用,初始化为null,即该引用c未指向任何对象
	B d = new B();//字段为对象的引用,初始化并指向B类的一个实例
	//初始化的地方,方法不仅仅是上面的2种
}

class B {
	
}
3.3 变量作为类的成员时(变量作为类的字段,不在方法中)即使不初始化,编译器也会给定一个默认值,确保得到初始化。
基本类型 默认值
boolean false
char  null
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d

3.4 方法中定义一个局部变量 如 int x 必须要初始化,编译器不会默认初始化为0,运行时会报错 

3.5 唯一标识(区别)一个方法的就是方法签名,即 方法名和参数列表

3.6 创建一个类只是描述了这个类的外观和行为,并没有为其分配存储空间,只有当new之后才会在堆中分配内存空间来存放数据。

扫描二维码关注公众号,回复: 123172 查看本文章

4.  static关键字

 只有new之后会为数据分配存储空间,如果只想为某一个特定域分配空间,或者某个方法分配空间,而不通过new,那就使用static关键字,static域或者方法可以不用通过对象去调用,尽管它一定定义在类中。

public class MyDemo {

	public static void main(String[] args) {
		A.i++; //通过类名直接引用变量i
		A.staticMethod();//通过类名不创建对象直接调用静态方法
		//A.method();//非静态成员不能直接引用
		A st1 = new A();
		A st2 = new A();
		System.out.println(st1.i == st2.i);//true
		
	}

}

class A {
	static int i = 1; //static 字段
	static{
		//static 方法块
	}
	
	static void staticMethod(){
		//static 方法
	}
	
	void method(){
		//非 static 方法
	}
}
通过 
System.out.println(st1.i == st2.i);//true

看出 static字段对于每个类来说都共享一份存储空间,而非静态字段则是每个对象都有各自的存储空间

5. 注释

6.编码风格

  • 参考《阿里巴巴Java开发手册》

猜你喜欢

转载自blog.csdn.net/strawmi/article/details/79277952