全新552B架构全面超越V4 Pro,闲时缓存命中价降至每百万0.02元。 [..]
Read MoreJava 程序靠控制语句调度程序流:语句可以是单独一条(如 c = a + b),也可以是花括号包起来的复合语句。语句块可以嵌套,层数不限。 定义类时类体必须用语句块;定义方法时方法体也必须用语句块。 类别 语句 要点 表达式 赋值、调用、new、声明、自增 表达式有返回值 分支 if / if-e…
Java 里的运算符和 C / C++ 几乎同一套:算术算出数值,关系 / 逻辑算出布尔值,位运算按二进制逐位处理,再加上三目条件运算符。先把类别记牢,再对照下面的表和图。 下表是总览,后面按类展开,并配上原文截图。 类别 结果类型 常见符号 算术 数值 + - * / % ++ -- 关系 / 逻…
类是对象的模板,抽象类和接口可以看成具体类的模板。接口从某种角度看是一种特殊的抽象类,相似处很多,选择时容易混。先看相同点,再看各自擅长什么。 使用引用变量时,尽量用类结构的抽象层,让方法的定义和实现分离,代码才能松散耦合。 对比 抽象类 接口 实例化 不能 new 不能 new 抽象方法 可以有,…
抽象类里可以有抽象方法,也可以有已经实现的方法;接口(interface)更“抽象”:传统上它规定一个类必须做什么,而不规定怎么做。 接口用 interface 声明,可以看成一种特殊的抽象类。Java 8 起接口也可以有 default / static 方法,Java 9 还可以有 privat…
自上而下的继承层次里,越靠上的类越通用,甚至更抽象。祖先类往往只包含最基本的成员,人们只把它当作派生其他类的基类,而不会拿它来 new 对象。方法也可以只给出定义、不写实现,交给子类按具体需求去完成。 这种只有定义、没有方法体(没有 {})的方法叫做抽象方法。含有一个或多个抽象方法的类必须声明为抽象…
Java 允许在一个类(或方法、语句块)内部再定义另一个类,称为内部类(Inner Class),有时也叫嵌套类(Nested Class)。 内部类和外层类存在逻辑上的所属关系,一般只用在定义它的类或语句块里,实现没有通用意义的功能。外部引用时必须给出完整名称。 使用内部类的主要原因:可以访问外部…
Java 是面向对象语言,但八种基本类型并不带对象特性:没有属性、也不能调方法。保留它们是为了符合习惯,并让常规数值运算更简单高效。 引用类型都继承了 Object,转成字符串只要调 toString();基本类型就麻烦得多。为此 Java 给每种基本类型配了一个类,叫做包装类(Wrapper Cl…
泛型里如果不限制类型参数,它可以接受任意已定义的类型。很多时候我们只需要其中一部分,用户传入其他类型会在运行期出错。本节先限制类型参数的范围,再讲通配符 ?。 例如编写一个泛型方法,返回 Integer、Double 等数组中的最大值:元素得能取数值,就不能让 T 是任意类型。 写法 用在哪 含义 …
所谓泛型,就是“宽泛的数据类型”:不但值可以通过参数传递,类型也可以。它解决的是:既不想为每种类型写一遍重载,又不愿依赖不安全的向下转型。 Java 1.5 起引入泛型,参照 C++ 模板,本质是参数化类型(Parameterized Type)。类型参数只能表示引用类型;传入 int、double…
从功能上看,new 和 newInstance() 都能创建类的实例。前者是关键字,后者是方法。差别在于:newInstance() 走类加载机制,按运行时拿到的类名来反射创建;new 在源码里写死类型,直接创建。 为什么要两种方式?主要是软件的可伸缩、可扩展、可复用:明确知道要哪个类时用 new;…