由于研究生学习要做一个数据可视化的项目,需要用到Java。所以拿了一本《Java核心技术卷一》正在一步步复习之前所学的Java知识。...3.9大数值 如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中的两个很有用的类:BigInteger和BigDecimal。...-”在Java中并不适用。...下面是一个计算彩票中奖概率的小程序作为练习: import java.math.BigInteger; import java.util.Scanner; /* * 用大数值计算中彩概率。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
hashCode方法 2、重写toString()方法是也需要重写hasCode方法 虚拟机中的泛型类型信息 Java泛型的突出特征之一是在虚拟机中擦除泛型类型 第五章 继承...1、Class类 在程序运行期间,Java运行时系统始终为所有对象维护一个运行时类型。...简单算法 Collections.replace(words,”C++”,”java”); 将word列表中为“C++”的值替换成“Java” 批操作 coll1.retainAll(coll2...);//从coll1中删除所有未在coll2中出现的元素,求交集 将列表转换为数组 String[] values = staff.toArray(new String[0]); 栈 java.util.Stack...signal方法只是随机地选择等待集合的一个线程,并解除这个线程的阻塞。 同步块 每个Java对象都有一个锁,线程可以通过同步方法获得锁,还有另一种机制可以获得锁,即进入一个同步块。
Java核心技术(卷1) 一、基础概念 1.1 基本程序设计结构 1.1 数据类型 1.1.1 数值类型 1️⃣从java7开始,加上前缀0b或0B就可以写二进制; 2️⃣指数的表示...; 1.3 继承 继承是Java的核心技术 super和this 有些人认为super与this引用是类似的概念,实际上这样的比较并不恰当。...函数式接口:只有一个抽象方法的接口 在java中,lambda表达式所能做的也只是能转换为函数式接口。...2.5 代理 java的JDK里面提供了动态代理的方案 2.6 Java的异常 异常的层次结构: 所有异常都是由Throwable继承而来, 而下一层立即分为两类:Error和Exception...Arrays类的静态方法asList将返回一个包装了普通Java数组的List包装器。
参考:Java核心技术卷2 高级特性 第十二章 建议只有在必需的时候才使用本地代码,特别是在以下三种情况下,也许可以使用本地代码: 你的应用需要访问的系统特性和设备是通过Java平台无法实现的 已经有大量的测试过和调试过的用另一种语言编写的代码...,并且知道如何将其导出到所有的目标平台上 通过基准测试,发现所编写的Java代码比用其他语言编写的等价代码慢很多 Java有一个用于和本地C代码进行互操作的API,称为Java本地接口(JNI)。...将一个本地方法连接到Java程序中: (1)在Java类中声明一个本地方法 (2)运行javah以获得包含该方法的C声明的头文件 (3)用C实现该本地方法 (4)将代码置于共享类库中 (5)在Java程序中加载该类库
参考:Java核心技术卷2 高级特性 第九章 Java技术提供了三种确保安全的机制: 语言设计特性(对数组的边界进行检查,无不受检查的类型转换,无指针算法等)。...类加载器 Java编译器会为虚拟机转换源指令,虚拟机代码存储在以.class为扩展名的类文件,每个类文件都包含某个类或者接口的定义和实现代码。...在Oracle的Java语言实现中,扩展类加载器和系统类加载器都是用Java来实现的。它们都是URLClassLoader类的实例。...安全管理器与访问权限 一旦某个类被加载到虚拟机中,并由检验器检查过之后,Java平台的第二种安全机制就会启动,这个机制就是安全管理器。 安全管理器就是一个负责控制具体操作是否允许执行的类。...默认情况下,有两个位置可以安装策略文件: Java平台主目录的java.policy文件 用户主目录的 .java.policy文件 数字摘要 消息摘要 消息摘要是数据块的数字指纹,例如,所谓的SHA1
参考:《Java核心技术卷2 高级特性 》第三章 XML是一种非常有用的描述结构化信息的技术。 XML格式能够表示层次结构,这比属性文件的平面结构更加灵活。...解析XML文档,Java提供了两种XML解析器: 文档对象模型(Document Object Model,DOM)解析器这样的属性解析器,将读入的XML文档转换为树结构 XML简单API(Simple...类库提供的流机制解析器,老而弥坚的SAX解析器和添加到Java SE6中的更现代化的StAX解析器。...SAX解析器使用的是事件回调,而StAX解析器提供了遍历解析事件的迭代器,后者用起来通常更方便一些。...StAX解析器是一种拉解析器(pull parser),与安装事件处理器不同,只需要使用基本循环来迭代所有的事件。
参考:Java核心技术卷2 高级特性 第二章 对象序列化是以特殊的文件格式存储对象数据的。当存储一个对象时,这个对象所属的类也必须存储。...某些数据域是不可以被序列化的,java有一种很简单的机制来防止这种域被序列化,就是将它们标记成是transient的。如果这些域属于不可序列化的类,也需要将它们标记成transient。...java.nio包使内存映射变得简单,需要做的: 首先,从文件中获得一个通道(channel),通道是用于磁盘文件的一种抽象,它使我们可以访问诸如内存映射、文件加锁机制以及文件间快速数据传递等操作系统特性...文件锁是由整个Java虚拟机持有的,如果有两个程序是由同一个虚拟机启动的,那么它们不可能每一个都获得在同一个文件上的锁,当调用lock和tryLock方法时,如果虚拟机已经在同一个文件上持有了另一个重叠锁...,那么这两个方法将抛出OverlappingFileLockException 在一些系统中,关闭一个通道会释放由java虚拟机持有的底层文件上的所有锁。
参考:Java核心技术卷2 高级特性 第一章 Java SE 8的流库 流提供了一种让我们可以在比集合更高的概念级别上指定计算的数据视图。...其中一种用于操作Comparable元素的流,而另一种可以接受一个Comparator。 peek方法会产生另一个流,它的元素与原来流中的元素相同,但是每次获取一个元素时,都会调用一个函数。...super T> comparator) // 分别产生这个流的第一个和任意一个元素,如果这个流为空,会产生一个空的Optional对象。...// java.util.stream.Collectors 8 // 产生一个将元素收集到列表或集中的收集器。 static Collector predicate) groupingBy方法会产生一个映射表,它的每个值都是一个列表,如果想要以某种方式来处理这些列表,就需要提供一个下游收集器。
参考:Java核心技术卷2 高级特性 第八章 三种用于处理代码的技术: 脚本API使得调用诸如JavaScript和Groovy这样的脚本语言代码 可以使用编译器API在应用程序内部编译Java代码...注解处理器可以在包含注解的Java源代码和类文件上进行操作。...注解不会改变程序的编译方式,Java编译器对于包含注解和不包含注解的代码会生成相同的虚拟机指令。...在Java中,注解是当做一个修饰符来使用的,被置于被注解项之前,中间没有分号。...语言模型API,可以使用语言模型API来分析源码级的注解,与呈现类和方法的虚拟机表示形式的反射API不同,语言模型API让我们可以根据Java语言的规则去分析Java程序。
参考:Java核心技术 卷I 基础知识 第七章 异常处理的任务就是将控制权从错误产生的地方转移给能够处理这种情况的错误处理器。...所有的异常都是由Throwable继承而来,但在下一层立即分解为两个分支:Error和Exception。 Error类层次结构描述了Java运行时系统的内部错误和资源耗尽错误。...在设计Java程序时,需要关注Exception层次结构。这个层次结构又分解为两个分支。一个分支派生于RuntimeException,另一个分支包含其他异常。...试图根据给定的字符串查找Class对象,而这个字符串表示的类并不存在 Java语言规范将派生于Error类或RuntimeException类的所有异常称为非受检查异常。...例如a[-1]=0会抛出一个ArrayIndexOutOfBoundsException这样的非受查异常 (4)Java虚拟机和运行时库出现的内部错误 总之,一个方法必须声明所有可能抛出的受查异常,而非受查异常要么不可控制
第1章 Java程序设计概述 1.1 Java程序设计平台 具有令人赏心悦目的语法和易于理解的语言,与其他许多优秀语言一样,Java满足这些要求. ...Java是一种程序设计语言;HTML是一种描述网页结构的方式。除了用于在网页上放置Java applet的HTML扩展之外,两者没有任何共同之处。 2.使用XML,所以不需要Java? ...Java是一种程序设计语言; XML是一种描述数据的方式。 可以使用任何一种程序设计语言处理XML数据,而Java API对XML处理提供了很好的支持。 ...Java在服务器端编程和跨平台客户端应用领域则很有优势。 5.Java只不过是另外一种程序设计语言? Java是一种很好的程序设计语言,很多程序设计人员喜欢Java胜过C、C++或C#。...一个较慢的Java程序与几年前相当快的C++程序相比还要快一些。 8.所有的Java程序都是在网页中运行的? 所有的Java applet都是在网页浏览器中运行的。
参考:Java核心技术 卷I 基础知识 类之间最常见的关系有:依赖、聚合、继承 依赖即“use-a”关系,是一种最明显的,最常见的关系。...如果一个类的方法操作另一个类的对象,就说一个类依赖于另一个类。应该尽可能地将相互依赖的类减至最少。 聚合即“has-a”关系,是一种具体且易于理解的关系。聚合辨析意味着类A的对象包含类B的对象。...继承即“is-a”关系,是一种用于表示特殊与一般关系的。如果类A扩展类B,类A不但包含从类B继承的方法,还会拥有一些额外的功能。 访问器方法,只访问对象而不修改对象的方法有时称为访问器方法。...Java中方法参数的使用情况: 一个方法不能修改一个基本数据类型的参数(数值型或布尔型) 一个方法可以改变一个对象参数的状态 一个方法不能让对象参数引用一个新的对象 静态导入: import static...java.lang.System.*; 在源文件顶部,添加一条指令,就可以使用System.类的静态方法和静态域,而不必加类名前缀。
参考:Java核心技术 卷I 基础知识 第八章 泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。 泛型使用类型参数,使得代码有更好的可读性。...一个泛型类就是具有一个或多个类型变量的类。 泛型方法可以定义在普通类型也可以定义在泛型类中。 类型变量放在修饰符的后面。...无论何时定义一个泛型类型,都自动提供了一个相应的原始类型。原始类型的名字就是删去类型参数后的泛型类型。擦除类型变量并替换为限定类型(无限定类型的变量用Object)。...类型擦除与多态发生了冲突,要解决这个问题,需要编译器在对应类中生成一个过桥方法。 Java泛型转换的事实: 虚拟机中没有泛型,只有普通的类和方法。 所有类型参数都用它们的限定类型替换。...使用Java泛型时需要考虑的一些限制: 不能用基本类型实例化类型参数,比如,不能使用double,只能使用Double 运行时类型查询只适用于原始类型。
参考:Java核心技术 卷I 基础知识 第十四章 多进程与多线程有哪些区别呢?本质的区别在于每个进程拥有自己的一整套变量,而线程则共享数据。...在有些操作系统中,与进程相比,线程更轻量级,创建、撤销一个线程比启动新进程的开销要小的多。...例如,如果Bank类有一个静态同步的方法,那么当该方法被调用时,Bank.class对象的锁被锁住,因此,没有其他线程可以调用同一个类的这个或者任何其他的同步静态方法。 内部锁和条件存在一些局限。...包括: 不能中断一个正在试图获得锁的线程 试图获得锁时不能超市 每个锁仅有单一的条件,可能是不够的 在代码中应该使用哪一种?Lock、Condition对象还是同步方法?...在许多情况下可以使用java.util.concurrent包中的一种机制,他会为你处理所有的加锁。
参考:Java核心技术 卷I 基础知识 一个对象变量可以指示多种实际类型的现象被称为多态。在运行时能够自动地选择调用哪个方法的现象被称为动态绑定。...由一个公共超类派生出来的所有类集合被称为继承层次。在继承层次中,通过某个特定类到其祖先的路径被称为该类的继承链。 假设要调用x.f(args),隐式参数x声明为类C的一个对象。...一种是在抽象类中定义部分抽象类方法或不定义抽象类方法,这样就必须将子类也标记为抽象类,另一种是定义全部的抽象方法,这样一来,子类就不是抽象的了。 类即使不包含抽象方法,也可以将类声明为抽象类。...下面给出编写一个完美的equals方法的建议: (1)显式参数命名为otherObject,稍后需要将它转换成另一个叫做other的变量。...(2)检测this与otherObject是否引用同一个对象 if(this==otherObject) return true; 这条语句只是一个优化,实际上,这是一种经常采用的形式。
参考:Java核心技术 卷I 基础知识 反射库提供了一个非常丰富且精心设计的工具集,以便编写能够动态操纵Java代码的程序。...这项功能被大量地应用与JavaBeans中,它是Java组件的体系结构。 能够分析类能力的程序成为反射。...反射是一种功能强大且复杂的机制。 在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识。这个信息跟踪着每个对象所属的类。虚拟机利用运行时类型信息选择相应的方法执行。...然后有很多常见的一场,例如,访问null引用,都属于未检查异常。编译器不会查看是否为这些错误提供了处理器。毕竟,应该精心地编写代码来避免这些错误的发生,而不要将经历花在编写异常处理上。...如果竭尽全力了还是发生了异常,编译器就要求提供一个处理器。
参考 Java核心技术 卷I 基础知识 Java: 简单性、面向对象、分布式、健壮性、安全性、体系结构中立、可移植性、解释型、高性能、多线程、动态性。...分布式 Java有一个丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。...健壮性 Java的设计目标之一在于是的Java编写的程序具有多方面的可靠性,Java投入了大量的经历进行早期问题检测、后期动态的运行时检测,并消除了容易出错的情况,Java和C++最大的不同在于Java...体系结构中立 编译器生成一个体系中立的目标文件格式,这一种经过编译后的代码,只要有Java运行时系统,这些编译后的代码可以在许多处理器上运行。...然而, 虚拟机有一个选项,可以将执行最频繁的字节码序列翻译成机器码,这一过程被称为及时编译。 Java虚拟机还有一些其他的优点,可以检测指令序列的行为,从而增强其安全性。
参考:Java核心技术 卷I 基础知识 Unicode和char类型 码点是指与一个编码表中的某个字符对应的代码值。在Unicode标准中,码点采用十六进制书写,并加上前缀U+。...这样的设计可以使得我们很迅速的直到一个代码单元是一个字符的编码还是一个辅助字符的第一或第二部分。 Java中,char类型描述了UTF-16编码中的一个代码单元。 运算符优先级 ? ?...码点与代码单元 Java字符串由char值序列组成。char数据类型是一个采用UTF-16编码表示Unicode码点的代码单元。...大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。 ? ?...大数值 如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中的两个很有用的类:BigInteger和BigDecimal,这两个类可以处理包含任意长度数字序列的数值。
第一章 Java程序设计概述 太简单了,直接略过。...其中$尽量不要在自己的代码中使用,一般出现在Java编译器或者其他工具生成的名字中。 需要显示初始化变量,与C++一致。...,一种是输入全名java.util.Date today = new java.util.Date(); 也可以使用import java.util....另外,*只能导入一个包,不能使用java.*的方式导入所有包。 4.7.2 静态导入 import static java.lang.System.*可以导入静态方法和静态域。...Java对象有一个锁,线程可以通过调用同步方式获得锁。
参考:Java核心技术 卷I 基础知识 接口,主要用来描述类具有什么功能,而并不给出每个功能的具体实现。一个类可以实现一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象。...如果先在一个接口中将一个方法定义为默认方法,然后又在超类或另一个接口中定义了同样的方法。Java规则如下: (1)超类有限。如果超类提供了一个具体方法,同名且有相同的参数类型的默认方法会被忽略。...如果一个超接口提供了一个默认方法,另一个接口提供了同名且参数类型(不论是否默认参数)相同的方法,必须覆盖这个方法来解决冲突。 回调是一种常见的程序设计模式。...lambda表达式是一个可传递的代码块,可以在以后执行一次或多次。 lambda表达式由3个部分: 一个代码块 参数 自由变量的值,这是指非参数且不再代码中定义的变量。...作为Java安全模型的一部分,对于系统类和从因特网上下载下来的类,可以使用不同的类加载器。 一个Class对象数组,每个元素都是需要实现的接口。
领取专属 10元无门槛券
手把手带您无忧上云