二、一切都是对象
2.1 用引用操作对象
遥控器(引用)来操作电视机(对象)
例如String s一个引用对其初始化String s = “asdf"你就可以对s进行操作,此时s没有与任何事物相关联
2.2 必须由你创建所有对象
String s = new String(“asdf”)这里与新的对象关联
2.2.1 存储到什么地方
1.寄存器
最快的存储区,位于处理器内部,按需分配,不能直接控制
2.堆栈
位于通用RAM(随机访问存储器)中。堆栈指针向下移动,分配新内存;向上移动,释放内存。java必须知道存储在堆栈顶内所有项的确切生命周期,以便上下移动。对象引用存储于堆栈中,java对象不存储在这。
3.堆
通用的内存池(位于RAM区),存放java对象;不需知道数据的存活周期,存储分配额清理可能比较花费时间。
4.常量存储
常量通常直接存放在程序代码内部。有时在嵌入式系统,常量本身会和其他部分隔离开,可选择其存放在ROM(只读存储器)中。
5.非RAM存储
例如流对象和持久化对象。流对象中,对象转换成字节流,通常发送给另一台机器。持久化对象中,对象被存放于磁盘上。java提供对轻量级持久化的支持,例jdbc和hibernate机制。
2.2.2 特例:基本类型
基本类型 | 大小 | 最小值 | 最大值 | 包装器类型 |
---|---|---|---|---|
boolean | - | - | - | Boolean |
char | 16-bit | Unicode 0 | Unicode 2^16-1 | Character |
byte | 8 bits | -128 | +127 | Byte |
short | 16 bits | -2^15 | +2^15-1 | Short |
int | 32 bits | -2^31 | +2^31-1 | Integer |
long | 64 bits | -2^63 | +2^63-1 | Long |
float | 32 bits | IEEE754 | IEEE754 | Float |
double | 64 bits | IEEE754 | IEEE754 | Double |
void | - | - | - | Void |
2.2.3 java中的数组
说个大概后期讲
2.3 永远不要销毁对象
2.3.1 作用域
{}作用域里定义的变量只可用于作用域结束之前。
2.3.2 对象的作用域
可存活于作用域之外
2.4 创建新的数据类型:类
class关键字,相当于是一种新的类型,可以用new去创建这种类型的对象。
2.4.1 字段和方法
一旦你定义了一个类,可在类中设置两种类型的元素:字段(数据成员)和方法(成员函数)。字段可以是任何类型的对象,可通过其引用进行与其通信,也可以是基本类型中的一种。
基本成员默认值
基本类型 | 默认值 |
---|---|
boolean | false |
char | ‘\uoooo’(null) |
byte | (byte)0 |
short | (short)0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
2.5 方法、参数和返回值
方法的基本组成部分包括:名称、参数、返回值和方法体
ReturnType methodName(/*Argument list */){
/* Method body*/
}
2.5.1 参数列表
若返回类型是void那么return只是用来退出方法
2.6 构建一个java程序
2.6.1 名字可见性
这个建议看阿里巴巴开发手册
2.6.2 运用其他构件
import java.util.*;
2.6.3 static关键字
不需创建类的对象,直接类名.即可调用
2.7 你的第一个java程序
2.8 注释和嵌入式文档
/*
*
*/
//
2.8.1 注释文档
javadoc提取注释的工具。不仅能解析这些标签标记的信息,也将注释的类名和方法抽取出来生成好的程序文档。
2.8.2 语法
都已/**开始 ,以 */结束。
2.8.3 嵌入式HTML
所有类型的注释文档-----类、域和方法------都支持嵌入式HTML
2.8.4 一些标签示例
javadoc标签
1.@see:引用其他类
@see classname
允许用户引用其他类的文档。javadoc会在其生成的HTML文件中,通过@see标签链接到其他文档
2.{@link package.class#member label}
该标签与@see极其相似,他用于行内
3.{@docRoot}
该标签产生到文档跟目录的相对路径,用于文档树页面的显示超链接。
4.{@inheritDoc}
该标签从当前这个类的最直接的基类中继承相关文档到当前的文档注释中
5.@version
@version version-infomation
6.@author
你的姓名
7.@since
jdk版本
8.@param
用于方法文档中
@param parameter-name description(可延续数行的文本)
9.@return
用于方法文档
@return description
10.@throws
异常
@throws fully-qualified-class-name description
11.@deprecated
指出旧特性已由改进的新特性所取代
2.8.5 文档示例
/** The first Thinking in Java example program
*Displays a string and today's date
*@author sunrenqiang
*@version 4.0
*/
public class HelloDate{
/** Entry point to clsss & application
*@param args array of string arguments
*@throws exceptions No exceptions thrown
*/
public static void main(String args[]){
System.out.println("Hello, it's :");
System.out.println(new Date());
}
}/*Output:(55% match)
Hello,it's:
Wed Oct 05 14:39:36 MDT 2005
*///:
2.9 编码风格
类名首字母大写,驼峰形式;其他的所有内容一般是第一个字母小写。