Java-由浅入深的学习之路
文章平均质量分 76
该专栏主要是从零基础的java入门学习,到java的实际应用。会陆续更新Java基本语法、面向对象、高级特性、异常、集合、泛型、枚举、反射、注解、IO流、多线程、常用类、网络编程、设计模式等等,希望大家一同学习、一同进步。
下班后的爪哇菌
我的源计划就是你的源计划,我的源实践就是你的源实践,我的源经验就是你的源经验!
展开
-
Java线程的创建和使用
程序(program)程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程(process)进程(process)是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程(生命周期):有它自身的产生、存在和消亡的过程。程序是静态的,进程是动态的。进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域。线程(thread)进程可进一步细化为线程,是一个原创 2023-07-18 10:26:18 · 185 阅读 · 0 评论 -
Java IO流的使用
Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。原创 2023-07-17 17:24:17 · 306 阅读 · 0 评论 -
Java File类的使用
ava.io.File类:文件和文件目录路径的抽象表示形式,与平台无关。File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对 象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。原创 2023-07-17 11:27:27 · 203 阅读 · 0 评论 -
Java注解(Annotation)
从 JDK 5.0 开始,Java 增加了对元数据(MetaData) 的支持,也就是Annotation(注解)。Annotation 其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取, 并执行相应的处理。通过使用 Annotation, 程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。原创 2023-07-17 08:51:04 · 109 阅读 · 0 评论 -
Java反射的应用:动态代理
这种动态代理在AOP中被称为AOP代理,AOP代理可代替目标对象,AOP代理包含了目标对象的全部方法。但AOP代理中的方法与目标对象的方法存在差异:AOP代理里的方法可以在执行目标方法之前、之后插入一些通用处理。动态代理相比于静态代理的优点:抽象角色中(接口)声明的所有方法都被转移到调用处理器一个集中的方法中处理,这样,我们可以更加灵活和统一的处理众多的方法。动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时根据需要动态创建目标类的代理对象。提供用于创建动态代理类和动态代理对象的静态方法。原创 2023-07-16 14:15:46 · 247 阅读 · 0 评论 -
Java反射机制详解
Object类中定义了以下的getClass()方法,此方法将被所有子类继承。Class本身也是一个类;Class 对象只能由系统建立对象;一个加载的类在 JVM 中只会有一个Class实例;一个Class对象对应的是一个加载到JVM中的一个.class文件;每个类的实例都会记得自己是由哪个 Class 实例所生成;通过Class可以完整地得到一个类中的所有被加载的结构;Class类是Re原创 2023-07-15 23:50:44 · 171 阅读 · 0 评论 -
Java反射机制概述
Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射。原创 2023-07-15 15:04:09 · 125 阅读 · 0 评论 -
Java比较器
在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。Java实现对象排序的方式有两种:自然排序:java.lang.Comparable。定制排序:java.util.Comparator。Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序。原创 2023-07-14 17:19:49 · 272 阅读 · 0 评论 -
Java的日期时间API
java.util 包提供了 Date 类来封装当前的日期和时间。表示特定的瞬间,精确到毫秒。System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。此方法适于计算时间差。SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。原创 2023-07-14 16:44:33 · 215 阅读 · 0 评论 -
Java中字符串相关的类
String类:代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。String是一个final类,代表不可变的字符序列。字符串是常量,用双引号引起来表示。它们的值在创建之后不能更改。String对象的字符内容是存储在一个字符数组value[]中的。原创 2023-07-14 14:50:18 · 118 阅读 · 0 评论 -
枚举的其它应用
使用比较器:在Enum类的定义中已经实现好了Comparable接口,所以枚举类的内容本身是可以进行排序的。publicclassComparableEnum { publicstaticvoidmain(String[] args) {//TreeSet可以直接进行排序,排序的规则是通过Comparable接口完成的。Set<Color> se...原创 2018-08-01 18:31:54 · 170 阅读 · 0 评论 -
和枚举相关的集合类(EnumMap和EnumSet)
在JDK 1.5的java.util 程序包中提供两个新的集合操作类: EnumMap和EnumSet,这两个类与枚举类型的结合应用可使以前非常繁琐的程序变得简单方便。 EnumSet类提供了java.util.Set接口的一个特殊实现,而EnumMap类提供了java.util.Map接口的一个特殊实现,该类中的键(key)是一个枚举类型。EnumMapEnumMap是Map接口...原创 2018-08-01 18:27:58 · 1396 阅读 · 0 评论 -
使用enum关键字创建枚举类
语法(定义)使用enum关键字创建枚举类型,隐含了所创建的类型都是 java.lang.Enum 类的子类(java.lang.Enum 是一个抽象类)。枚举类型符合通用模式 Class Enum<E extends Enum<E>>,而 E 表示枚举类型的名称。枚举类型的每一个值都将映射到 protected Enum(String name, int ordinal...原创 2018-07-31 19:13:30 · 6652 阅读 · 0 评论 -
自定义枚举类
枚举(Enum)类型是 java 5 中新增的一种数据类型,它能够帮助我们更加快捷和安全的实现枚举。下面是在此之前我们在定义枚举常量时的做法,这样的定义方式虽然也能正常工作,但却存在许多不足,比如不小心把 RED和 GREEN 都置为 2 时,编译器并不会报错,但是却很难进行排查,在这里提及呢主要是为了我们更好的理解枚举。使用简单类完成枚举操作publicclassTestS...原创 2018-07-31 18:31:03 · 660 阅读 · 0 评论 -
Java枚举概述
枚举介绍JDK1.5之前,Java可以有两种方式定义新类型:类和接口。JDK1.5之前需要自定义枚举类。JDK 1.5 新增的 enum 关键字用于定义枚举类。全称为 enumeration,存放在 java.lang 包中。若枚举只有一个成员,则可以作为一种单例模式的实现方式。必须在枚举类的第一行声明枚举类对象。JDK 1.5 中可以在 switch 表达式中使用Enum...原创 2018-07-31 18:14:01 · 231 阅读 · 0 评论 -
Java泛型通配符和泛型限定
类型通配符类型通配符一般是使用?代替具体的类型实参(此处是类型实参,而不是类型形参)。当操作类型时不需要使用类型的具体功能时,只使用Object类中的功能,那么可以用 ? 通配符来表未知类型。例如 List<?> 在逻辑上是List<String>、List<Integer> 等所有List<具体类型实参>的父类。public class ...原创 2018-08-05 13:10:40 · 7569 阅读 · 0 评论 -
Java自定义泛型类和泛型接口
泛型类中的类型参数几乎可以用于任何可以使用接口名、类名的地方,下面我们先通过 JDK 5.0 中集合框架中的 Map 接口定义的一部分来简单了解一下:public interface Map<K, V> { public void put(K key, V value); public V get(K key); //......}对于常见的泛型模式...原创 2018-08-05 13:10:12 · 1590 阅读 · 0 评论 -
Java自定义泛型方法
泛型方法使得该方法能独立于类而产生变化。我们可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。 以下是一个基本的指导原则:无论何时,只要你能做到,你就应该尽量使用泛型方法。也就是说,如果使用泛型方法可以取代将整个类泛型化,那么就应该只使用泛型方法,因为它可以使事情更清楚明白。另外,对于一个static的方法而言,无法...原创 2018-08-05 13:09:46 · 18043 阅读 · 2 评论 -
Java泛型概述
泛型概述Java 泛型(Generic)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。把一个集合中的内容限制为一个特定的数据类型,这就是泛型背后的核心思想。 为什么要有泛型(Generic)?1)解决元素存储的安全性问题2)解决获取数据元...原创 2018-08-04 18:27:30 · 244 阅读 · 0 评论 -
Java的Collections工具类
Collections 是一个操作 Set、List 和 Map 等集合的工具类。Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步控制等方法。排序操作(均为static方法,且主要针对List接口)reverse(List):反转 List 中元素的顺序shuf...原创 2018-07-30 12:38:50 · 368 阅读 · 0 评论 -
Java的Map接口
Map接口简介Map与Collection并列存在。用于保存具有映射关系的数据:Key-ValueMap 中的 key 和value 都可以是任何引用类型的数据。Map 中的 key 用Set来存放,不允许重复,即同一个 Map 对象所对应的类,须重写hashCode()和equals()方法。常用String类作为Map的“键”。key 和 value 之间存在单向一对一关系...原创 2018-07-30 00:20:25 · 3452 阅读 · 0 评论 -
Java的Set接口
Set接口简介Set接口是Collection的子接口,set接口没有提供额外的方法。Set集合不允许包含相同的元素,如果试把两个相同的元素加入同一个 Set 集合中,则添加操作失败。Set判断两个对象是否相同不是使用 == 运算符,而是根据 equals 方法。Set接口的实例无法像List接口那样进行双向输出。Set实现类之一:HashSet(散列存放)HashS...原创 2018-07-30 00:20:02 · 788 阅读 · 0 评论 -
Java的List接口
List接口简介List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。JDK API中List接口的实现类常用的有:ArrayList、LinkedList和Vector。List 集合里添加了一些根据索引来操作集合元素的方法:原创 2018-07-30 00:19:41 · 1102 阅读 · 0 评论 -
Java的Collection接口
Colleciton概述Collection 接口是 List、Set 和 Queue 接口的父接口,该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合。Collection是保存单值集合的最大父接口。JDK不提供此接口的任何直接实现,而是提供更具体的子接口(如 Set 和 List)实现。在 Java5 之前,Java 集合会丢失容器中所有对象...原创 2018-07-30 00:19:19 · 506 阅读 · 0 评论 -
Java集合概述
一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用Array存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组。 集合的特征:1)这种框架是高性能的2)框架必须允许不同类型的集合以相同的方式和高...原创 2018-07-30 00:18:28 · 493 阅读 · 0 评论 -
Java自定义异常
当开发时,项目中出现了java中没有定义过的问题时,这时就需要我们按照java异常建立思想,将项目的中的特有问题也进行对象的封装。这个异常,称为自定义异常。一般地,用户自定义异常类都是RuntimeException的子类。自定义异常类通常需要编写几个重载的构造器。自定义的异常类对象通过throw抛出。自定义异常最重要的是异常类的名字,当异常出现时,可以根据名字判断异常类型。 ...原创 2018-07-29 17:27:23 · 262 阅读 · 0 评论 -
Java的声明抛出异常
声明抛出异常这个体系中的所有类和对象都具备一个独有的特点;就是可抛性。可抛性的体现:就是这个体系中的类和对象都可以被throws和throw两个关键字所操作。如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示地声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理。在方法声明中用throws语句可以声明抛出异常的列表,th...原创 2018-07-29 17:26:11 · 4889 阅读 · 0 评论 -
Java的异常捕获处理
异常处理机制在编写程序时,经常要在可能出现错误的地方加上检测的代码,如进行x/y运算时,要检测分母为0,数据为空,输入的不是数据而是字符等。过多的分支会导致程序的代码加长,可读性差。因此采用异常机制。Java采用异常处理机制,将异常处理的程序代码集中在一起,与正常的程序代码分开,使得程序简洁,并易于维护。Java提供的是异常处理的抓抛模型。Java程序的执行过程中如出现异常,会生成...原创 2018-07-29 17:25:17 · 523 阅读 · 0 评论 -
Java异常概述
在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网络是否始终保持通畅等等。在Java语言中,将程序执行中发生的不正常情况称为“异常”。异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。程序在运行时出现的不正常情况,其实就是程序...原创 2018-07-29 17:23:54 · 332 阅读 · 0 评论 -
Java的内部类
内部类介绍内部类是定义在类体、方法体、甚至比方法体更小的代码块内部的类。如果A类需要直接访问B类中的成员,而B类又需要建立A类的对象。这时,为了方便设计和访问,直接将A类定义在B类中。就可以了。A类就称为内部类。内部类可以直接访问外部类中的成员。而外部类想要访问内部类,必须要建立内部类的对象。一般来说,Java有四中内部类:静态内部类、成员内部类、局部内部类、匿名内部类。当内部...原创 2018-07-28 14:20:55 · 297 阅读 · 0 评论 -
Java的包装类
包装类介绍Java是一种面向对象语言,Java中的类把方法与数据连接在一起,并构成了自包含式的处理单元。但在java中不能定义基本类型(primitive type),为了能将基本类型视为对象来处理并能连接相关的方法,Java为每个基本类型都提供了包装类。如此,我们便可以把这些基本类型转化为对象来处理了。包装类(封装类)使用针对八种基本数据类型定义的相应的引用类型。有了类的特点,就可以调用...原创 2018-07-28 13:51:40 · 233 阅读 · 0 评论 -
Java的多态性
多态性概述多态是同一个行为具有多个不同表现形式或形态的能力。是同一个接口,使用不同的实例而执行不同操作,如图所示: 多态的优点:1)消除类型之间的耦合关系 2)可替换性 3)可扩充性4)接口性 5)灵活性 ...原创 2018-07-28 13:38:58 · 408 阅读 · 0 评论 -
Java接口
接口介绍接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常用关键字interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口中包含的成员,最常见的有全局常量、抽象方法。接口中有抽象方法,说明接口不可以实例化。接口的子类必须实现了接口中所...原创 2018-08-26 10:09:48 · 299 阅读 · 0 评论 -
Java抽象类
抽象类介绍在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象:不具体,看不明白。抽象类表象体现。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也...原创 2018-07-28 14:04:56 · 211 阅读 · 0 评论 -
Java的Object类及其主要方法
Object类介绍Object类位于java.lang包,是所有Java类的根父类(唯一没有父类的类),所有类的直接或者间接父类。Java中的每个类都是由这个类扩展而来。java.lang包在使用的时候无需显示导入,编译时由编译器自动导入。Java认为所有的对象都具备一些基本的共性内容,这些内容可以不断的向上抽取,最终就抽取到了一个最顶层的类中的,该类中定义的就是所有对象都具备的功能。...原创 2018-08-27 23:32:03 · 625 阅读 · 0 评论 -
Java包(package)
Java包简介为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。它是类的一种文件组织和管理方式、是一组功能相似或相关的类或接口的集合。Java package提供了访问权限和命名的管理机制,它是Java中很基础却又非常重要的一个概念。 包的作用:1)把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。2)如同文件夹一样,包也采用了树形目录的存储方...原创 2018-08-25 13:48:18 · 362 阅读 · 0 评论 -
Java对象数组
所谓的对象数组,就是指包含了一组相关的对象,但是在对象数组的使用中一定要清楚一点:数组一定要先开辟空间,但是因为其是引用数据类型,所以数组里面的每一个对象都是null值,则在使用的时候数组中的每一个对象必须分别进行实例化操作。 对象数组的声明先定义,再开辟空间类名称 对象数组名[] = null; 对象数组名 = new 类名称[长度]; 定义并开辟数组类名称 对象数...原创 2018-09-03 00:24:52 · 57351 阅读 · 19 评论 -
Java匿名对象
匿名对象介绍 匿名对象是没有名字的实体,也就是该实体没有对应的变量名引用。运行一次,直接就被回收掉了,节省内存空间。 通常我们定义一个对象并调用方法会这样去写:Car car = new Car();car.run();如果们使用匿名对象就可以这样写:new Car(); // 匿名对象其实就是定义对象的简写格式。new Car().run(); 匿名...原创 2018-08-26 22:46:16 · 328 阅读 · 0 评论 -
Java代码块
所谓代码块是指使用{}括起来的一段代码,根据位置不同,代码块可以分为四种:普通代码块、构造块、静态代码块、同步代码块。 普通代码块:类中方法的方法体(在方法或语句中出现的{})。普通代码块和一般语句的执行顺序由他们在代码中出现的次序决定,先出现先执行。public void test(){ // 代码 } 构造代码块:使用 {} 括起来的代码片段,构...原创 2018-08-24 22:31:02 · 221 阅读 · 0 评论 -
Java构造方法
构造方法(构造器、构造函数)用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种。在多数情况下,初始化一个对象的最终步骤是去调用这个对象的构造方法。什么时候使用构造方法呢?分析事物时,发现具体事物一出现,就具备了一些特征,那就将这些特征定义到构造方法内。构造方法的作用:创建对象;给对象进行初始化。构造方法和一般方法有什么区别呢?1)两个方法定义格式不同...原创 2018-07-28 10:59:52 · 511 阅读 · 0 评论