第二章主要讲述了关于如何编写一个简单程序的Java编程知识,如何创建一个对象,Java的基本数据类型,对象的作用域以及方法和返回值等等,下面是书中重点概念的摘抄。
2.1用引用操纵对象
1)Java中一切都看作对象,操纵的标识符实际上是对象的一个“引用”;
2)定义一个引用并不一定需要有一个对象与之关联;
eg:String s;
2.2必须由你创建所有对象
1)一旦创建一个引用就希望它能与一个新的对象关联,通常使用new操作符来实现,new关键字的意思是“给我一个对象”;
eg:String s = new String("asdf");
2.2.1存储到什么地方
1)寄存器,最快的存储区,位于处理器的内部,但是数量有限。
2)堆栈,位于通用RAM(随机访问存储器),堆栈指针向下移动则分配新的内存,若向上移动则释放这些内存。
3)堆,一种通用的内存池(位于RAM区),用于存放所有的Java对象。
注:堆是垃圾回收主要发生的区域。
4)常量存储,常量值通常直接存放在程序代码的内部。
5)非RAM存储,此时数据完全存活于程序之外,可以不受程序的空值,在程序没有运行时也可以存在,基本的例子就是流对象和持久化对象。
2.2.2特例:基本类型
1)不用new来创建变量,而是创建一个并非引用的‘自动’变量,这个变量直接存储值,并置于堆栈中。
2)Java的基本类型、对应的包装类与其所占存储空间的大小如下图:
3)boolean类型所占的存储空间的大小没有明确指定,仅定义为能够取字面值true或false;
4)Java提供了两个用于高精度计算的类:BigInteger和BigDecimal,此二者没有对应的基本类型。BigInteger支持人已经读的整数,BigDecimal支持任意精度的定点数。
2.2.3Java中的数组
1)Java确保数组会被初始化,而且不能在它的范围之外被访问。
2)当创建一个数组对象时,实际上是创建一个引用数组,并且每个引用都会被初始化为一个特定值,该值拥有自己的关键字null;如果试图使用一个还是null的引用,在运行时就会报错。
2.3永远不需要销毁对象
2.3.1作用域
1)Java是一种自由格式的语言,所以空格、制表符、换行都不影响程序的执行结果。
2)作用域决定了在其内定义的变量名的可见性和生命周期,在Java中作用域由花括号的位置决定。
3)在作用域中定义的变量只可用于作用域结束之前。
2.3.2对象的作用域
1)由new创建的对象,只要你需要就会一直保留下去。
2)Java使用垃圾回收器来监视用new创建的所有对象,并辨别那些不会再被引用的对象,随后将其销毁,释放这些对象的内存空间。
2.4创建新的数据类型:类
1)使用Java使用class来定义一个类:
eg: class AtypeName {/* Class body gose here*/}
用new来创建这种类型的对象:
eg:AtypeName atypeName = new AtypeName();
2.4.1字段和方法
1)一旦定义了一个类,就可以在类中设置两种类型的元素:字段(数据成员)和方法(成员函数)
2)基本成员默认值:
基本类型 | 默认值 |
boolean | false |
char | ‘\u0000’(null) |
byte | (byte)0 |
short | (short)0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
若类的某个成员是基本数据类型,即使没有进行初始化,Java也会确保它获得一个默认值。值得注意的是当变量作为类的的成员使用的时候,Java才会确保给定其默认值,并不适用于“局部”变量(即并非某个类的字段)。
2.5方法、参数和返回值
1)Java的方法决定了一个对象能够接受什么样的消息,方法的基本组成包含:名称、参数、返回值和方法体,下面是它最基本的形势:
ReturnType methodName(/* Argument list */){
/* Method body */
}
2.5.1参数列表
1)方法的参数列表指定要传递什么样的信息给方法,像Java中任何传递对象的场合一样,这里传递的实际上也是引用。
注:Java没有值传递,只有引用传递。
2)如果不想返回任何值,可以知识此方法返回void。
2.6构建一个Java程序
2.6.1 名字可见性
1)Java使用包名的形式来规定了类命名空间,所有的文件都能够存活于他们自己的名字空间内,而且同一个文件内的每个类都有唯一的标识符。
2.6.2运用其他构件
1)import指示编译器导入一个包,也就是一个类库。
eg:import java.util.ArraryList;
也可以使用通配符“*”来实现一次导入一群类。
2.6.3 static关键字
1)通过static关键字可以满足:1.只想为某特定域分配单一存储空间,而不用去考虑究竟需要创建多少对象,甚至根本不用创建对象。2.希望某个方法不与包含他的类的任意对象关联在一起,即使没有创建对象,也能够调用这个方法。
注:通常我们称之为静态变量和静态方法
2.7你的第一个Java程序
1)打印一个字符串,然后打印当前日期:
// HelloDate.java
import java.util.*;
public class HelloDate{
public static void main(String[] args){
System.out.println("Hello, it's: ");
System.out.println(new Date());
}
}
2)java.lang 是默认导入到每个Java文件中的,它的所有的类都可以被直接使用。
2.8注释和嵌入式文档
1)Java提供了两种注释风格:
/*注释方式一*/
//注释方式二
2.9编码风格
1)在“Java编程语言编码约定”中代码风格规定:类名的首字母需要大写,如果类由几个单词构成,那么把它们合并到一起,其中每个内部单词的首字母都采取大写形式。方法名、字段名以及对象引用名称也采用这种方式命名,只是标识符的第一个字母采取小写。
注:关于命名规范建议看看阿里巴巴Java开发手册。