《Java核心技术卷Ⅰ》读书笔记
sparrowman
利用网络, 反哺网络
展开
-
《Java核心技术卷Ⅰ》读书笔记——3.3.1 整型
在Java中,整型的范围与运行java代买的机器无关。这就解决了软件从一个平台移植到另一个平台,或者在同一个平台中的不同操作系统之间进行移植给程序员带来的诸多问题。与此相反,C和C++程序需要针对不同的处理器选择最为高效的整型,这样就有可能造成一个在32位处理器上运行很好的C程序在16位系统上运行发生整数溢出。由于Java程序必须保证在所有机器上都能够得到相同的运行结果,所以各种数据类型的取值范围...原创 2019-03-11 14:11:27 · 92 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——4.3.9 final实例域
final修饰符大都应用于基本类型域,或不可变类的域(即类中的不存在更改器方法)。 对于可变的类(存在更改器的类),使用final可能会对读者造成混乱。因为final关键字只是表示存储在变量中的对象引用不会再指向其他对象,但是这个对象的状态是能够被改变的。 静态常量System.out 由于每个类对象都可以对公有域进行修改,所以,最后不要将域设计成public。但是,公有常量却没问...原创 2019-03-12 10:25:08 · 203 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——4.3.7 基于类的访问权限
一个方法可以访问所属类的所有对象的私有数据。例如, 典型的调用方式是 这个方法不仅访问了harry的私有域,还访问了boss的私有域。这是合法的,Employee类的方法可以访问Employee类的任何一个对象的私有域。 ...原创 2019-03-12 10:25:37 · 144 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——4.4 静态方法
4.4.4 工厂方法 静态方法还有另外一种常见的用途。类似LocalDate和NumberFormat的类使用静态工厂方法(factory method)来构造对象。 为什么不使用构造器完成这些操作呢?主要有两个原因: 构造器无法命名。构造器的名字必须与类名相同,但是有的时候我们希望得到更加直观的方法名。 构造器无法改变所构造的对象类型。而工厂方法可以将函数返回类型设置为该类的子类。 4....原创 2019-03-12 10:25:48 · 134 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——4.5 方法参数
参数的传递方式分为按值调用和按引用调用。 按值调用(call by value)表示方法接受的是调用者提供的值。按引用调用表示方法接受的是调用者提供的变量地址。 Java总是采用按值调用。即方法得到的是所有参数值的一个拷贝,特别是,方法不能修改传递给它的任何参数变量的内容。 假如一个方法试图将一个参数值增加3倍: 然后调用这个方法: 但是结果是失败的,调用该方法后percent值...原创 2019-03-12 10:25:56 · 233 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——4.6 对象构造
4.6.1 重载 要完整的描述一个方法,需要指出方法名以及参数类型,这叫做方法的签名(signature)。返回类型不是方法签名的一部分,也就是说,不能有两个名字相同、参数类型也相同却返回不同类型值的方法。 4.6.2 默认域初始化 如果在构造器中没有显示的给域赋予初值,那么就会被自动地赋为默认值:数值为0、布尔为false、对象引用为null。然而,只有缺少程序设计经验的人才会这样做。 ...原创 2019-03-12 10:26:01 · 169 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——4.7 包
为了保证包名的绝对唯一性,Sun公司建议将公司的因特网域名以逆序的形式作为包名,例如:com.xxxx 从编译器的角度看,嵌套的包之间没有任何关系,例如,java.util包与java.util.jar包毫无关系,每一个包都拥有独立的类集合。 4.7.1类的导入 一个类可以使用所属包中的所有类,以及其他包中的公用类。我们可以采用两种方式访问另一个包中的公有类。 第一种:java.time....原创 2019-03-12 15:32:55 · 284 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——4.8 类路径(ClassPath)
(JAR文件:java归档文件) 在UNIX环境中,类路径中的不同项目间采用冒号分隔 在Windows环境中,采用分号分隔 类路径包括: 基目录home/user/classdir 或 c:\classes 当前目录(.) JAR文件home/user/archives/archive.jar 或 c:\achives\achives.jar 从Java SE 6开始,可以...原创 2019-03-12 16:24:03 · 286 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——4.10 类的设计方法
应用这些技巧可以使得设计出来的类更具有OOP的专业水准:原创 2019-03-12 16:47:41 · 175 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——访问权限修饰符
private——仅对本类可见 public——对所有类可见 protected——对本包和所有子类可见 默认(无修饰符)——对本包可见原创 2019-03-13 09:03:41 · 164 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——5.2 Object:所有类的超类
java.lang.Obeject 5.2.1 equals方法 在Object类中,这个方法判断两个对象是否具有相同的引用。但是对于大多数类来说,这种判断没有什么意思。我们经常要做的是检测两个对象状态的相等性。 例如,如果两个雇员的姓名、薪水、雇佣日期都一样,则认为这两个对象是相等的。 请注意,这里的类为java.util.Objects(不同于java.lang.Obj...原创 2019-03-13 11:20:14 · 176 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——4.3.6 封装的优点
注意:不要编写返回引用可变对象的访问器方法。在Employee类中就违反了这个设计原则,其中的getHireDay方法返回了一个Date类的对象: class Employee{ private Date hireDay; public Date getHireDay(){ return hireDay; //Bad } } LocalDate类没有更改器...原创 2019-03-12 10:24:58 · 164 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——4.3.5 隐式参数和显式参数
在每一个方法中,关键字this表示隐式参数。显示参数即为方法名后括号内的参数。原创 2019-03-12 10:24:46 · 160 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——3.3.2 浮点型
double表示这种类型的数值精度是float类型的两倍。绝大部分应用程序都采用double类型。在很多情况下,float类型的精度很难满足需求。事实上,只有很少的情况适合使用float类型,例如,需要单精度数据的库,或者需要存储大量数据。 float类型的数值有一个后缀F或f(如3.14F)。没有后缀F的浮点数值默认为double类型。 注释:可以使用十六进制表示浮点数值。例如,0.12...原创 2019-03-11 14:27:43 · 135 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——3.3.3 char类型
char类型原本用于表示单个字符。不过,现在的情况已经有所变化。如今,有些Unicode字符可以用一个char值(代码单元)描述,另外一些Unicode的字符则需要两个char值。原因如下: 码点(code point)是指与一个编码表中的某个字符对应的代码值。在Unicode标准中,码点采用十六进制书写,并加上前缀U+,例如U+0041就是A的码点。Unicode码点可以分成17个代码级别(c...原创 2019-03-11 14:45:20 · 107 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——3.5 运算符
3.5.6 关系和boolean运算符 &&和||运算符是按照“短路”方式来求值的:如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。 3.5.7 位运算符 3.5.8 运算符级别 3.5.9 枚举类型 enum Size{ SMAll, MEDIUM, LARGE, EXTRA_LARGE }; 现在,可以声明这种类型的变量: Size s ...原创 2019-03-11 15:04:12 · 126 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——3.9 大数值
BigInteger BigDecimal原创 2019-03-11 15:06:45 · 134 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——3.10.2 数组初始化以及匿名数组
创建一个数字数组时,所有元素都被初始化为0;boolean数组的元素会被初始化为false;对象数组的元素初始化为null Java中,提供了一种创建数组对象并同时赋予初始值的简化书写形式: int[] smallPrimes = {2, 3, 5, 7, 11, 13}; 请注意,在这样使用语句时,不需要调用new。 甚至还可以初始化一个匿名数组: new int[] {17, 19...原创 2019-03-11 15:15:25 · 158 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——3.10.3 数组拷贝
在Java中,允许将一个数组变量拷贝给另一个数组变量,这时,两个变量将引用同一个数组: int[] luckyNumbers = smallPrimes; luckyNumbers[5] = 12; //now smallPrimes[5] is also 12 如果希望将一个数组的所有值拷贝到一个新的数组中去,就要使用Arrays类的copyOf方法: int[] copiedLu...原创 2019-03-11 15:36:34 · 116 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——3.10.4 命令行参数
每一个Java程序都有一个带String args[]参数的main方法,这个参数表明main方法将接受一个字符串数组,也就是命令行参数。 例如: public class Message{ public static void main(String args[]){ if(args.length == 0 || args[0].equals("-h")) ...原创 2019-03-11 15:55:01 · 223 阅读 · 2 评论 -
《Java核心技术卷Ⅰ》读书笔记——4.1.4 类之间的关系
在类之间,最常见的关系有: 依赖(“uses-a”) 聚合(“has-a”) 继承(“is-a”) 依赖——Order类使用Acount类是因为Order对象需要访问Account对象查看信用状态。如果一个类的方法操纵另一个类的对象,我们就说一个类依赖于另一个类。 应尽可能地将相互依赖的类减至最少。如果类A不知道类B的存在,它就不会关心B的任何改变。就是让类之间的耦合度最小。 ...原创 2019-03-11 16:04:37 · 120 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——4.2.2 预定义类LocalDate类
不要使用构造器来构造LoaclDate类的对象。应当使用静态工厂方法(factory method)代表你调用构造器。 LocalDate.now() LocalDate.of(1999, 12, 31 调用更改器方法会改变对象的状态;相反,访问器方法只访问对象而不修改对象。 下面应用LocalDate类编写程序显示当前月的日历,格式为: package coding; im...原创 2019-03-11 16:44:06 · 186 阅读 · 0 评论 -
《Java核心技术卷Ⅰ》读书笔记——5.3-5.6
5.3 泛型ArrayList ArrayList 具有自动调节数组容量的功能。 声明和构造: ArrayList<Employee> staff = new ArrayList<Employee>(); Java SE 7后,可以省去右边的类型参数: ArrayList<Employee> staff = new ArrayList<>(...原创 2019-03-13 12:36:39 · 158 阅读 · 0 评论