《Head First Java》20201002读书笔记

P273-P280

《Head First Java》20201002读书笔记

第10章 数字与静态

Math方法:最接近全局的方法

在Math这个类中的所有方法都不需要实例变量值。因为这些方法都是静态的,所以无需Math的实例。你会用到的只有它的类本身。
例如Math这个类中的round()方法,它永远都执行相同的工作——取出浮点数(方法的参数)的最接近整数值。如果有10000个Math的实例,并且都执行round(42.2),所得的值永远都会是42。
这个方法会对参数执行操作,但这操作不受实例变量状态的影响,唯一能够改变round()行为的只有所传入的参数。

非静态方法与静态方法的差别

Java是面向对象的,但若处于某种特殊的情况下,通常是实用方法,则不需要类的实例。
static这个关键词可以标记出不需类实例的方法。
一个静态的方法代表说“一种不依靠实例变量也就不需要对象的行为”。
《Head First Java》20201002读书笔记

静态的方法

《Head First Java》20201002读书笔记
带有静态方法的含义
【什么叫做“也可以用私有的构造函数来限制非抽象类被初始化”?】
只要有main()的类都算有静态的方法。
通常写出main()来启动或测试其他的类。从main()中创建类的实例并调用新实例上的方法。
因此你可以任意地在类中组合静态与非静态的方法,然而任何非静态的方法都代表必须以某种实例来操作。
取得新对象的方法只有通过new或者序列化(deserialization)以及不会讨论的Java Reflection API。
静态的方法不能调用非静态的变量
静态的方法是在无关特定类的实例情况下执行的。
静态的方法是通过类的名称来调用,所以静态的方法无法引用到该类的任何实例变量。【这句话是什么意思?】
静态的方法也不能调用非静态的方法
静态变量:它的值对所有的实例来说都相同
《Head First Java》20201002读书笔记
《Head First Java》20201002读书笔记
静态变量是共享的。
同一类所有的实例共享一份静态变量。

实例变量:每个实例1个。
静态变量:每个类1个。