- 博客(265)
- 收藏
- 关注
转载 从头认识java-13.2 利用元组的方式返回多类型对象
这一章节我们来讨论一下利用元组的方式返回多类型对象。 1.定义元组 @SuppressWarnings("hiding")class Tuple<A, B> { public final A a; public final B b; public Tuple(A ...
2019-09-14 06:31:41 333
转载 从头认识java-11.5 扫描输入(1)-简介
这一章节我们来讨论一下扫描输入。 因为很多时候我们都需要从文本文件里面读取相应的文本,然后进行处理,在输入到其他地方, 这个时候就需要我们下面介绍的扫描输入。 1.通常情况 package com.ray.ch11;import java.io.BufferedReader;i...
2019-09-14 06:31:36 347
转载 从头认识java-12.2 Class对象(3)-.class
这一章节我们来讨论一下得到Class对象的另一种方式.class。 1.例子 package com.ray.ch12;public class Test { public static void main(String[] args) { System.out.prin...
2019-09-14 06:31:30 268
转载 从头认识java-13.1 泛型与容器(容器的演变)
这一章节我们来讨论一下泛型与容器,准确来说是由于容器的需求而产生泛型的需求。 我们平常在编程的时候,大部分都是用了容器来装载对象,我们来看一下容器的演变。 1.普通容器 package com.ray.ch11;public class Test { public static...
2019-09-14 06:31:25 242
转载 从头认识java-11.5 扫描输入(2)-scanner的边界与使用正则表达式扫描
这一章节我们来介绍一下scanner的边界与使用正则表达式扫描。 1.scanner的边界 上一章节我们提到scanner里面有hasNext方法,可以检测是否还有字符串,其实这个就是边界符,检查字符串的边界。 package com.ray.ch11;import java.i...
2019-09-14 06:31:20 288
转载 从头认识java-13.3 泛型接口的使用
这一章节我们来讨论一下泛型接口的使用。 我们以生成器为例子(generator),生成器是工厂方法的一种运用,主要用来创建对象,一般使用工厂方法都是需要输入参数以便取得不同的对象,但是生成器是生成一系列的对象。 代码: package com.ray.ch13;import ja...
2019-09-14 06:31:15 201
转载 从头认识java-12.5 代理以及动态代理
这一章节我们讲述一下代理以及动态代理。 1.为什么需要代理? 答案:有一些操作你不想整合到逻辑代码里面,因此需要代理来做这个事情。例如:日志、监控等 下面将演示一个简单的代理: package com.ray.ch11;public class Test { public s...
2019-09-14 06:31:10 180
转载 从头认识java-12.4 利用反射提取类的方法与构造器
这一章节我们来讨论一些利用反射提取类的方法与构造器。 1.例子 package com.ray.ch11;import java.lang.reflect.Constructor;import java.lang.reflect.Method;public class Tes...
2019-09-14 06:31:05 192
转载 从头认识java-13.6 类型擦除(type erasure)(1)-概念
这一章节我们讨论一下类型擦除。 1.什么是类型擦除? 在java里面泛型其实是伪泛型,因为他都只是在编译器里面实现的,在jvm里面是没有泛型的概念。 我们看下面的代码: package com.ray.ch11;import java.util.ArrayList;pu...
2019-09-14 06:30:59 196
转载 从头认识java-12.3 instanceof、isInstance和isAssignableFrom
这一章节主要讲述一下三个检测对象类型的方法instanceof、isInstance和isAssignableFrom。 例子: package com.ray.ch12;public class Test { public static void main(String[] a...
2019-09-14 06:30:54 216
转载 从头认识java-13.5 利用泛型构建复杂模型
这一章节我们来展示一下怎样利用泛型构建复杂模型? 1.元组列表 我们之前已经说过元组是一个复杂的模型,可以返回多对象。 package com.ray.ch11;import java.util.ArrayList;public class Test { public Ar...
2019-09-14 06:30:50 349
转载 从头认识java-12.2 Class对象(4)-泛化
这一章节我们来讨论一下Class对象的泛化。 1.为什么需要泛化? 代码在编译时就可以进行类型检测,不需要等到运行时才检测类型。 2.例子 package com.ray.ch12;public class Test { public static void main...
2019-09-14 06:30:45 234
转载 从头认识java-12.6 接口与类型信息(怎么绕过接口直接调用类的所有方法)
这一章节我们来讨论一下接口与类型信息。 在之前的章节里面我们提到接口,父类引用子类对象,然后把方法给缩窄了,但是我们这一章节学习到反射,这个约束就变得没有那么严格。 我们来看看下面的例子: package com.ray.ch11;public class Test { pub...
2019-09-14 06:30:40 265
转载 从头认识java-11.4 正则表达式(3)-Pattern和Matcher
这一章节我们来讨论一下Pattern和Matcher。 之前我们都是简单的使用正则表达式来匹配字符串,其实java里面提供了强大的正则匹配类,我们下面将以几个例子来说明。 package com.ray.ch11;import java.util.regex.Matcher;im...
2019-09-14 06:30:34 173
转载 从头认识java-12.2 Class对象(2)-使用与注意点
这一章节我们接着上一章节,继续讲述Class对象的使用与注意点。 1.使用例子 package com.ray.ch11;public class Test { @SuppressWarnings({ "unchecked", "rawtypes" }) public stat...
2019-09-14 06:30:29 189
转载 从头认识java-11.4 正则表达式(1)-感性认知
这一章节我们来感受一下正则表达式。 正则表达式就是以某种形式来描述字符串。 注意:在java里面正则表达式的反斜杠需要"\\"来描述,如果是普通的反斜杠,需要“\\\\”来描述。 在字符串中,可以使用正则的方法有几个,分别是matches、split还有replaceAll 1.mat...
2019-09-14 06:30:23 161
转载 从头认识java-12.1 为什么需要RTTI(Run-Time Type Identification)?
这一章节我们来讨论一下为什么需要RTTI(Run-Time Type Identification)。 答案:RTTI维护类型的信息,为多态机制的实现提供基础。 1.怎么为多态的实现提供基础? 多态,主要就是通过向上转型,然后通过泛化来父类引用子类对象。 例如: package ...
2019-09-14 06:30:18 172
转载 从头认识java-11.4 正则表达式(2)-基本语法
这一章节我们会简要的介绍一下正则表达式的基本语法。 我们的目的不是写出最复杂的表达式,是写出能够完成任务的表达式。 1.字符 字符 意义 \t 制表符 \n 换行 ...
2019-09-14 06:30:13 158
转载 从头认识java-13.4 泛型方法的使用
这一章节我们来讨论一下泛型方法的使用。 泛型除了可以作用在类、接口上面,还可以作用在方法上面。 1.例子 package com.ray.ch13;public class Test { public <T> void test(T x) { System.ou...
2019-09-14 06:30:08 171
转载 从头认识java-12.2 Class对象(1)-简介
这一章节我们来介绍一下Class对象。 在介绍前有几点需要注意的: 1.每一个类都有一个Class对象,在jvm的类加载器子系统里面生成。 2.类加载器子系统包含类加载器链,但是只有一个原生加载器,原生加载器主要加载javaapi里面的可信的类。 3.只有当类被使用的时候才会加载,这个...
2019-09-14 06:30:03 138
转载 从头认识java-6.5 向上转型
这一章节我们来讨论一下向上转型。 1.例子 package com.ray.testobject;public class Sub extends Father { public static void main(String[] args) { Sub sub = ...
2015-11-04 10:50:00 75
转载 从头认识java-6.6 final(1)-属性域
这一章节我们将来讨论一下final。 1.特性 (1)对于常量,使用final之后就不可变 因为使用了final之后,id就没有了set方法,因此,不能对id进行操作,即便new之后直接对id进行操作也不可以 package com.ray.ch06;public class ...
2015-11-04 10:50:00 76
转载 从头认识java-6.2 继承(Generalization)(2)
接着上一章节。 (4)无参构造器初始化 这里我们来聊聊初始化的话题,特别是初始化基类,父类会怎样? 继续沿用上面的代码,我们做出一些精简。 package com.ray.testobject;public class Test { public static void m...
2015-11-04 10:50:00 76
转载 从头认识java-6.6 final(3)-方法
这一章节我们来说一下final修饰的方法。 1.final与public 其实,使用final修饰方法,只不过就是不想继承的时候被修改。 一般我们继承的时候都可以覆盖public的方法,如下: package com.ray.ch06;public class Sub exte...
2015-11-04 10:50:00 92
转载 从头认识java-6.6 final(2)-属性域
接着上一章节的内容。 昨天我回去想了一下,发觉最后的那个特性还是有点问题,我就做了以下的实验。 昨天最后一点属性的简化版: package com.ray.ch06;public class Test { private final String name = "abcd";...
2015-11-04 10:50:00 93
转载 从头认识java-4.6 成员的初始化
这一章节我们来讨论一下成员的初始化。 之前已经提到,如果是属性域,编译器会默认初始化,这一章节不再展开,这里我们需要注意的是局部变量。 局部变量必须初始化,不然直接报错。 下面是错误的代码: package com.ray.ch01;public class Test { ...
2015-11-04 10:50:00 93
转载 从头认识java-4.8 数组的初始化(2)-可变参数列表
接着上一节,我们这一章节来聊一下数组的另外一个应用:可变参数列表 1.可变参数列表带来的改变 在没有出现可变参数列表的时候,我们一般会使用数组来替代,但是有一个问题,每一次都需要先建立一个数组作为参数,不能动态的形成数组作为参数。 package com.ray.ch04;pub...
2015-11-04 10:50:00 101
转载 从头认识java-4.5 对象的清理(finalize())
这一章节我们来简单讨论一下对象的清理。 注意:在c++里面会提供析构函数,来清除对象,但是在java中,对象是被垃圾回收器回收的。回收不一定被析构,因为回收了对象,只有当回收器超过某个限度的内存是,才发生回收,因此,有可能对象只是被回收,但到了程序关闭才被析构,因为回收器一直没有超过限制。 ...
2015-11-04 10:50:00 108
转载 从头认识java-6.1 聚合(aggregation)
我们来说一下复用类最简单的方法:聚合(aggregation) 其实说白了,就是建立了一个类,然后在其他地方引用来使用。 package com.ray.ch05;public class Test { public static void main(String[] arg...
2015-11-04 10:50:00 117
转载 从头认识java-6.2 继承(Generalization)(1)
这一章节我们来聊聊继承(Generalization)。 1.概念 继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。 2.特点 子类继承父类public和protected的属性域与方法,但不继承private的属性域和方法。 当子类基础父...
2015-11-04 10:50:00 161
转载 从头认识java-4.7 构造器初始化(3)
接着上一章节。 (4)显性初始化静态域 通过静态代码块来初始化某些属性域。 package com.ray.testobject;public class Test { private static int id; private static String name...
2015-11-04 10:48:00 67
转载 从头认识java-4.9 枚举类型
这一章节我们来简单聊一下枚举类型。 1.枚举类型是一种数据类型 package com.ray.ch04;public class Test { public static void main(String[] args) { MyType myType = MyType....
2015-11-04 10:48:00 72
转载 从头认识java-6.7 初始化与类的加载
这一章节我们来讨论一下初始化与类的加载。 简单的说,类是在static成员被访问的时候加载的。 我们下面举一个比较复杂的例子,然后解释一下加载和初始化的顺序。 package com.ray.ch06;public class Sub extends Father { priv...
2015-11-04 10:48:00 72
转载 从头认识java-5.2 包(package)
这一章节我们来讨论一下包(package)。 1.包里面是一组类,主要是提供一个命名空间,使得各个类以及功能不会冲突。 建立一个项目,然后建立两个包,里面都包含Test这一个类,功能一模一样。 package com.ray.ch04;public class Test { ...
2015-11-04 10:48:00 74
转载 从头认识java-4.8 数组的初始化(1)
这一章节我们来讨论一下数组的初始化。 1.数组是一个对象。 package com.ray.ch01;public class Test { public static void main(String[] args) { int[] a = {}; System.out...
2015-11-04 10:48:00 78
转载 从头认识java-4.7 构造器初始化(2)
这一章节我们接着上一章节的内容。 (3)静态数据的初始化 a.静态数据只会执行一次 package com.ray.testobject;public class Test { private static Book book1 = new Book(1); privat...
2015-11-04 10:48:00 82
转载 从头认识java-6.3 组合使用聚合和继承
这一章节我们来讨论一些组合使用聚合和继承 之前已经讲过想过的基础知识以及注意点,现在我们直接上代码: 1.例子 package com.ray.ch05;public class PlaceSetting extends Custom { private DinnerPlate...
2015-11-04 10:48:00 85
转载 从头认识java-4.7 构造器初始化(1)
这一章节我们来聊聊构造器的初始化。 (1)域的初始化在构造器初始化之前 package com.ray.testobject;public class Test { private int id; public Test() { System.out.printl...
2015-11-04 10:48:00 98
转载 从头认识java-6.4 如何在聚合与继承之间选择
这一章节我们来聊一下在聚合与继承之间选择的问题。 在我们平常的编码里面,使用聚合或者继承都可以,或者两者可以混合使用也行,这个时候就需要做出抉择,因为代码以后还需要维护,怎么才能达到维护简单?代码可读?。。。 因此,我们必须在各种方案中做出抉择。 笔者是这样认为的: 如果新的类只是使用...
2015-11-04 10:48:00 100
转载 从头认识java-6.6 final(4)-类与忠告
这一章节我们来讨论两个话题,一个是使用final标识的类,一个是使用final的忠告。 1.使用final表示的类 主要目的就是不想其他程序员继承这个类,而且类里面的东西永远不变。 package com.ray.ch06;public class Sub extends Fat...
2015-11-04 10:48:00 111
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人