Java
云计算小菜鸟
这个作者很懒,什么都没留下…
展开
-
Java学习笔记-大数值
如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中的两个很有用的类:BigInteger可以处理任意精度的整数运算,而BigDecimal可以处理任意精度的浮点数运算。使用静态的valueOf方法可以将普通的数值转化为大数值:BigInteger in=BigInteger.valueOf(100);且不能使用人们熟悉的算术运算符来处理大数值,需要使用大数值类中的...原创 2019-07-29 16:44:44 · 78 阅读 · 0 评论 -
Java学习笔记-代理
代理,是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。这里用到一个编程思想:不要随意去修改别人已经写好的代码或者方法,如果需要修改,可以通过代理的方式去扩展该方法。代理模式的关键点在于:代理对象和目标对象。代理对象是对目标对象的扩展,并且会调用目标对象。1.静态代理静态代理在使...原创 2019-08-27 17:32:23 · 125 阅读 · 0 评论 -
Java学习笔记-异常初步
假设在一个Java程序运行期间出现了一个错误。这个错误可能是由于文件包含了错误的信息,或者网络连接出现问题造成的,也有可能是因为无效的数组下标,或者试图使用了一个没有被赋值的对象引用而造成的。用户期望在出现错误的时候,程序能够采用一些理智的行为。由于出现错误而使得某些操作没有完成,程序应该:1.返回到一种安全状态,并能够让用户执行一些其他命令。2.允许用户保存所有操作的结果,并以适当的方式终...原创 2019-08-29 17:07:55 · 148 阅读 · 0 评论 -
Java学习笔记-捕获异常
到目前为止,我们已经知道如何抛出一个异常。这个过程很容易,只要将其抛出就不用再理睬了。当然,有些代码必须要捕获异常。捕获异常需要进行周密的计划。如果某个异常发生的时候没有在任何地方进行捕获,那程序就会被终止执行,并在控制台上打印出异常信息,其中包括异常的类型以及堆栈的内容。想要捕获一个异常,必须设置try/catch语句块:try{ code more code more code}...原创 2019-08-30 11:27:23 · 218 阅读 · 0 评论 -
Java学习笔记-断言
在一个具有自我保护能力的程序中,断言很常用。假设确信某个属性符合要求,并且代码的执行依赖于这个属性。例如,需要计算double y=Math.sqrt(x);我们可以抛出一个异常if(x<0) throw new IllegalArgumentException("x<0");但是这段代码会一直保存在程序中,即使测试完毕也不会自动地删除。如果在程序中含有大量类似的检查,程...原创 2019-09-01 17:26:21 · 244 阅读 · 0 评论 -
Java学习笔记-泛型初步
1.为什么要使用泛型程序设计泛型程序设计意味着编写的代码可以别很多不同类型的对象所重用。例如,我们并不希望为聚集String和File对象分别设计不同的类。实际上,也不需要这样做,因为一个ArrayList类可以聚集任何类型的对象。这是一个泛型程序设计的实例。在增加泛型类之前,泛型车需设计是用继承实现的。ArrayList类只维护一个Object引用的数组:public class Arra...原创 2019-09-02 11:37:11 · 173 阅读 · 0 评论 -
Java学习笔记-泛型的擦除
1.原始类型无论何时定义一个泛型类型,都自动提供了一个相应的原始类型(raw type)。原始类型的名字就是删去类型参数后的泛型类型名。擦除类型变量,并替换为限定类型(无限定类的用Object进行替换)。例如:Pair所示:package generic;public class Pair<T>{ private T first; private T second; p...原创 2019-09-02 21:33:50 · 195 阅读 · 0 评论 -
Java学习笔记-泛型的通配符类型
1.通配符的子类型限定固定的泛型类型系统使用起来并不是那么愉快,类型系统的研究人员知道这一点已经有一段时间了。Java的设计者发明了一种巧妙的解决方案:通配符类型。Pair<? extends Employee>表示任何泛型Pair类型,它的类型参数是Employee的子类,如Pair< Mannager >,但不是Pair< String >。假设要...原创 2019-09-04 13:28:48 · 148 阅读 · 0 评论 -
Java学习笔记-集合接口
首先,集合类是什么呢?简单说集合类就是 Java 中数据结构的实现。在Java类库中,集合类的基本接口是collection接口。这个接口有两个基本方法:public interface Collection<E>{ boolean add(E element); Iterator<E> iterator();//iterator是迭代器的意思}除了这两个...原创 2019-09-09 10:34:09 · 124 阅读 · 0 评论 -
Java学习笔记-具体的集合之链表
在之前,有很多示例已经使用了数组以及动态的ArrayList类。然而,数组和数组列表都有一个重大的缺陷,这就是从数组的中间位置删除一个元素要付出很大的代价,其原因是数组中处于被删除元素之后的所有元素都要向前端移动。在数组中间的位置插入一个元素也是如此。这个时候,我们就引入了链表:在Java设计语言中,所有链表实际上都是双向链接的,即数据结构中的双向链表。下面我们来看一看涉及链表的重要方法:1...原创 2019-09-10 10:57:40 · 97 阅读 · 0 评论 -
Java学习笔记-具体的集合之散列表
链表和数组可以按照人们的意愿排列元素的次序。但是,如果想要查看某个指定元素却又忘记了它的位置,就需要访问所有的元素,直到找到为止。如果集合中包含的元素很多,将会消耗很多时间。有一种数据结构可以快速地查找所需要的对象,这就是散列表(hash table)。散列表为每个对象计算一个整数,称之为散列码。散列码是由对象的实例域产生的一个整数。更准确地说,具有不同数据域的对象将产生不同的散列码。在Jav...原创 2019-09-10 12:16:40 · 249 阅读 · 0 评论 -
Java学习笔记-具体的集合之树集与排序比较
TreeSet类与散列集十分类似,不过它比散列集有所改进。树集是一个有序集合。可以以任意顺序将元素插入集合中。在对集合进行遍历时,每个值将自动地按照排序后的顺序呈现。当然,排序是用树结构完成的(当前实现使用的是红黑树),每次将一个元素添加到树中时,都被放置在正确的排序位置上。因此,迭代器总是以排好序的顺序访问每一个元素。将一个元素添加到树中要比添加到散列表中慢,但是,与将元素添加到数组或者链表...原创 2019-09-11 19:45:12 · 458 阅读 · 0 评论 -
Java学习笔记-具体的集合之队列
1.队列与双端队列前面已经讨论过,队列可以让人们有效地在尾部添加一个元素,在头部删除一个元素。有两个端头的队列,我们称之为双端队列,可以让人们有效地在头部和尾部同时添加或删除元素。在JavaSE6中,引入了Deque接口,并由ArrayDeque和LinkedList类实现,这两个类都提供了双端队列,并且可以在必要的时候增加队列的长度。此接口定义了访问双端队列两端元素的方法。提供了插入,移除...原创 2019-09-12 10:30:47 · 125 阅读 · 1 评论 -
Java学习笔记-具体的集合之映射表
1.映射表集是一个集合,它可以快速地查找现有的元素。但是,要查看一个元素,需要有查找元素的精确副本。这不是一种非常通用的查找方式。通常的情况下,我们直到某些键的信息,并想要查找与之对应的元素。映射表数据结构就是为此设计的。映射表用来存放键/值对。如果提供了键,就能够查找到值。例如,有一张关于员工信息的记录表,键为员工ID,值为Employee对象。Java类库为映射表提供了两个通用的实现:...原创 2019-09-12 15:21:19 · 290 阅读 · 0 评论 -
Java学习笔记-集合框架之接口篇
框架,是一个类的集合。它奠定了创建高级功能的基础。框架包含很多超类,这些超类都具有非常有用的功能、策略和机制。框架使用者创建的子类可以扩展超类的功能,而不必重新创建这些基本的机制。Java集合类库构成了集合类的框架。它为集合的实现者定义了大量的接口和抽象类。并且对其中的某些机制予以描述:1.集合框架-接口篇图1:集合框架的接口集合有两个基本的接口:Collection以及Map可以使...原创 2019-09-16 21:04:12 · 187 阅读 · 0 评论 -
Java学习笔记-集合框架之类篇
图1:集合框架的子类现在,让我们将话题从接口的转移到实现接口的类上。前面曾经讨论过,集合接口有大量的方法,这些方法可以通过更基本的方法加以实现。1.AbstractCollection类该类提供了Collection接口的骨架实现,以尽量减少实现此接口所需的工作量。为了实现一个不可修改的集合,程序员只需要扩展这个类并提供iterator和size方法的实现。 ( iterator方法返回...原创 2019-09-17 10:22:52 · 133 阅读 · 0 评论 -
Java学习笔记-内部类基础
在Java中,可以将一个类定义在另一个类里面或者方法里面,这样的类称之为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类以及静态内部类,下面先来了解一下这四种内部类的用法。1.成员内部类成员内部类是最普通的内部类,它的定义位于另一个类的内部,形如下面的形式:class C{ class D{ }}因为类C相对于类D在外面,我们且称类C为外部类。成员...原创 2019-08-25 16:33:46 · 118 阅读 · 0 评论 -
Java学习笔记-接口
在Java程序设计语言中,接口不是类,而是对类的一组需求描述。其通常由interface来声明,其可以看作是一个抽象的类型,是抽象方法的集合。一个类通过继承接口的方式,从而来继承接口的抽象方法。1.接口的声明接口的声明语法格式如下:interface 接口名称{ //声明变量 //抽象方法}实例interface Animal{ public void eat(); publ...原创 2019-08-12 11:26:50 · 177 阅读 · 0 评论 -
Java学习笔记-反射-分析类的能力
在Java.lang.reflect包中有四个类Class,Constructor,Method以及Field。我们称之为Class类、构造器类、方法类以及域类。其中Class类我们已经说过了,今天我们来谈一谈类的反射中,分析类能力的核心三类Constructor,Method,以及Field类。它们分别用于描述类的构造器、方法以及域。这是Java反射机制的三大核心类。我们还将涉及一个类:Modi...原创 2019-08-11 16:12:07 · 169 阅读 · 0 评论 -
Java学习笔记-类的继承-类、超类和子类
首先,是超类雇员(搬砖的):Employee:import java.util.*;public class Employee{ private String name; private double salary; public Employee(String n,double s){ name=n; salary=s; } public String getName()...原创 2019-08-02 16:05:03 · 452 阅读 · 0 评论 -
Java学习笔记-常量-类常量
在Java中,使用关键字 final 指示常量。例如:public class Constants{ public static void main(String[] args){ final double CM_PER_INCH=2.54; double paperWidth=8.5; double paperHeight=11; system.out.println("Pa...原创 2019-07-25 17:20:19 · 454 阅读 · 0 评论 -
Java学习笔记-数组
1.数组初始化与匿名数组数组进行初始化的两种方式:int[] smallPrime=new int[100];//方式1,通过定义数组长度来初始化,需要调用new,适合数组长度比较长的情况int[] smallPrime={2,3,4,5,6};//方式2,不需要调用new,适合数组长度比较短的情况匿名数组:int[] smallPrimes={2,3,5,7,11,13};smal...原创 2019-07-30 16:54:35 · 91 阅读 · 0 评论 -
Java学习笔记-运算符-位运算符
这个问题作为基础问题中的“黑洞”,很容易被我们忽略。在重新学习Java的过程中,我重新认识到了这个问题。我们为什么要学习这个问题?位运算符的运算效率要比直接对数字进行加减乘除要有效地多。在一些对性能极致要求的环境下,大佬通常喜欢使用位运算符0.0位运算符Java位运算是针对于整型(byte,short,int,long)数据类型的二进制进行移动操作。计算机表示的数字正负不是用±来表示,而使...原创 2019-07-26 11:48:54 · 239 阅读 · 0 评论 -
Java学习笔记-字符串
1.子串string类的substring方法可以从一个较大的字符串中提取出一个子串。string greeting="Hello";string g=greeting.substring(0,3);substring(a,b)提取出来的子串长度为b-a,其中a为子串开始的位置,b-1为子串结束的位置。如上例所示,子串的提取位置应该为012。2.不可变字符串需要注意,在Java中,不...原创 2019-07-26 15:26:21 · 163 阅读 · 0 评论 -
Java学习笔记-输入输出
1.读取输入通过控制台进行输入,需要先构建一个Scanner对象,并与“标准输入流System.in相关联。import java.util.*;//Scanner类定义在java.util包中,当使用的类不是定义在基本的java.lang中,一定要使用import指令字将相应的包加载进来。public class InputTest{ public static void main(St...原创 2019-07-26 16:58:11 · 145 阅读 · 0 评论 -
Java学习笔记-类的继承-泛型数组列表
1.泛型首先说一下什么叫泛型数据:简单地来说,就是类型的参数化,就是可以把类型像方法的参数那样传递。这一点意义非凡:我们知道现在的程序开发都是面向对象的了,所以程序里会有很多类型的对象,对象多了肯定需要某种类型的容器来装,比如数组、ArrayList、HashMap、TreeSet等。对于数组,我们知道需要在使用时制定数组装的对象类型,如:Animal animal[];而对于集合类...转载 2019-08-05 17:38:14 · 219 阅读 · 0 评论 -
Java学习笔记-用户自定义类
我们来看一个经典的例子:Limport java.util.*;public class EmployeeTest { public static void main(String[] args){ Employee[] staff=new Employee[3]; staff[0]=new Employee("Carl Cracker",75000,1987,12,15); s...原创 2019-08-01 16:24:00 · 335 阅读 · 0 评论 -
Java学习笔记-静态变量、静态常量与静态方法
1.静态变量看到一位大神写得非常赞,我直接copy了这一段什么叫静态与非静态?静态:对于该类的对象来说,都只有一个。叫作类变量。非静态:每个该类的对象都各有一个拷贝。叫作成员变量。比如工商银行卡类:他们有一个静态的银行卡名称叫:工商银行卡–>静态。每个卡又月自己的卡号–>非静态。在创建对象的时候,需要每个成员变量(非静态)开辟内存空间,类变量(静态变量)则是在类加载的时候...原创 2019-08-01 17:16:17 · 816 阅读 · 0 评论 -
Java学习笔记-类的继承-对象包装器与自动装箱
1.对象包装器有的时候,需要将int这样的基本类型转换为对象。所有的基本类型都有一个与之相对应的类。例如,Integer类对应基本类型int。通常,这些类称之为包装器。总结一下:包装器是一个final类,用于将基本类型转换为对象。举个例子:我想定义一个整型数组的列表。而尖括号中的类型参数不允许是基本类型,也就是说ArrayList<int> list=new ArrayLi...原创 2019-08-06 13:17:14 · 106 阅读 · 0 评论 -
Java学习笔记-枚举类
我们先简单定义一个枚举类型。public enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE};事实上,这个声明定义的是类型是一个类,它刚好有4个实例。因此,在比较两个枚举类型的值时,永远不要调用equals,而直接使用”==“就可以了。当然,我们也可以在枚举类型中添加一些构造器、方法和域。enum Size{ SMALL("S"),MEDIUM("M"...原创 2019-08-06 14:57:23 · 114 阅读 · 0 评论 -
Java学习笔记-equals与==的区别
==是一个比较运算符,基本数据类型比较的是值,引用数据类型比较的是地址值。而equals()是一个方法,只能比较引用数据类型,重写前比较的是地址值,重写后引用的一般是比较对象的属性值。...原创 2019-08-06 15:05:48 · 215 阅读 · 0 评论 -
Java学习笔记-对象克隆
假如你想复制一个简单的变量,很简单int apples = 5; int pears = apples;不仅仅是int,其他七种基本类型(boolean、short、double、long、float、chart、byte)都可以这么使用。但是如果逆序要复制一个对象,情况就会变得复杂了。class Student{ private int number; public int g...原创 2019-08-13 13:21:58 · 95 阅读 · 0 评论 -
Java学习笔记-接口回调
1.什么是接口回调举个例子,老师给你一张试卷,我们叫接口。你拿到试卷之后,填写了你的姓名和答案。然后你告诉老师做好了。老师拿到试卷,给你打完分之后,将试卷给你,你就看到分数了。这就是一个完整的接口回调。我们假设老师是A,学生是B,试卷是接口C。首先B拿到接口C,B–C,答题。我们可以理解为互值操作。然后是把互值后的给A,如何给呢?那么B需要提供一个方法共A来调用才行,A调用方法之后,进行校验检查...原创 2019-08-14 20:16:09 · 3626 阅读 · 0 评论 -
Java学习笔记-反射与Class类
1.什么是反射Java反射机制指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个属性和方法。这种动态获取信息以及动态调用对象的方法的功能称之为Java语言的反射机制。2.Class对象某种意义上来说,java有两种对象:实例对象和Class对象。每个类的运行时的类型信息就是用Class对象表示的。每一个类都有一个Class对象,每当编译...原创 2019-08-10 21:52:26 · 140 阅读 · 0 评论 -
Java学习笔记-多线程编程
首先回顾一下进程(Process)和线程(Thread)的区别:进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。(进程是资源分配的最小单位)线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的最小单位)线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。一、基本...原创 2019-09-24 16:38:59 · 107 阅读 · 0 评论