Think in java随手笔记--------一切都是对象
2016-11-15 本文已影响0人
Android_Strange
众所周知,java这门语言的核心便是面向对象,那么,在java中,对象是什么呢?相对于c++来说,java基于c++,但是java是一种更纯粹的面向对象程序设计语言。学习java这门语言,必须透彻的理解OOP的概念,在java中,(几乎)一切都是对象,在Think in java中,第二章便透彻的说明了对象这个名词,以下是我对于这一章内容的理解。
一切都是对象
- 1.用引用操纵对象
- 每种编程语言都有自己的操纵内存中元素的方式
- java通过创建一个引用来操纵对象 例如以下
其中s为创建的引用,利用s来操纵对象,当向s发送一个消息时,s开始调用run()方法。String s; s.run();
- 2.必须由你创建所有对象
- 对象的存储
- 寄存器:最快的存储区,但是数量有限,不能够直接控制,寄存器会根据需求自动分配
- 堆栈:快速有效的存储方式,速度仅次于寄存器;堆栈指针向上移动,释放内存,堆栈指针向下移动,分配新的内存;java对象并不存储在堆栈内
- 堆:一种通用的内存池,用于存放java对象
- 常量存储:用于定义并存储常量
- 非RAM存储
- 基本类型(基本类型表见文章最后)
- boolean 类型所占的存储空间大小没有明确的指定,但是定义只能取true和false
- java提供了两个可以用于高精度计算的类:BigInteger和BigDecimal
- BigInteger支持任意精度的整数
- BigDeciaml支持任意精度的定点数
- java中的数组
- 每当定义一个数组,如果并未赋值,默认数组为空,并不会报错
- 对象的存储
- 3.永远不需要销毁对象
- 作用域
- 在java中作用域由花括号的位置决定。例如
{ int x = 12; //Only x available { int q = 96; //Both x&q available } //Only x available //q is "out of scope" }
- 定义过的变量不可以重复定义(c++中可以但是java中不允许)。例如:
以上的例子不合法。{ int x = 12; { int x =96;//不合法 } }
- 对象的作用域
- 当使用new定义一个对象时,对象可以存活于作用域之外,例如:
以上的代码中,使用new定义了一个String对象,在作用域外,s消失,但是s指向的String对象仍然占据内存空间(如果不理解s指向,请去了解内存分析方面的知识)。{ String s = new String("a string"); } //End of scope
- 作用域
- 4.创建新的数据类型:类
- 字段和方法
- 在定义一个类之后,可以在类中使用两种类型的元素,第一种是字段,第二种是方法;
- 字段:字段就是数据成员,定义一个数据,可以有不同数据类型的数据
- 方法:方法就是用来操作的过程,有时也被称为成员函数
- 字段实例
class A{ int i; double d; boolea b; }
- 方法实例
class B{ i.data; }//data即为一个方法
- 基本成员的默认值,只有当变量作为类的成员使用时,java才确保给定其默认值(意味只有在定义的类中才可以使用默认值)(默认值表在文章最后)
- 字段和方法
- 5.方法参数和返回值
- 参数列表
- 6.构建一个java程序
- 名字可见性
- 运用其他构件
- static关键字
- 7.你的第一个java程序
- 8.注释和嵌入式文档
- 注释代码
- 语法
- 嵌入式HTML
- 一些标签及其示例
- 文档示例
- 9.编码风格
- 10.总结
基本类型 | 大小 | 最小值 | 最大值 | 包装器类型 |
---|---|---|---|---|
boolean | - | - | - | Boolean |
char | 16-bit | Unicode 0 | Unicode 2^16-1 | Character |
byte | 8-bit | -128 | +127 | Byte |
short | 16-bit | -2^15 | +2^15-1 | Short |
int | 32-bit | -2^31 | -2^31-1 | Integer |
long | 64-bit | -2^63 | -2^63-1 | Long |
float | 32-bit | 1EEE754 | 1EEE754 | Float |
double | 64-bit | 1EEE754 | 1EEE754 | Double |
void | - | - | - | Void |
基本类型 | 默认值 |
---|---|
boolean | false |
char | '\u0000'(null) |
byte | '(byte)0' |
short | '(short)0' |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |