JavaSE
文章平均质量分 84
Java全基础系列
野人小哥哥
捕获一只代码筑梦攻城狮,请查收。
展开
-
Java动态代理
文章目录1. 反射的应用:动态代理1.1 静态代理的例子1.2 Java动态代理类1.3 JDK动态代理实现1.3 动态代理的例子1.4 AOP与动态代理1. 反射的应用:动态代理 代理设计模式的原理: 使用一个代理将对象包装起来,然后用该代理对象取代原始对象。任何对原始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上。 动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时(区别于编译期间)根据需要动态创建目标类的代理对象。 动态代理使用场合:调试;远程方原创 2022-04-06 15:09:37 · 2721 阅读 · 2 评论 -
Java反射机制
文章目录1. Java反射机制概述1.1 动态语言1.2 静态语言1.3 Java反射机制提供的功能1.4 反射相关的主要API2. 理解Class类并获取Class实例3. 类的加载与ClassLoader的理解4. 创建运行时类的对象5. 获取运行时类的完整结构6. 调用运行时类的指定结构7. 反射的应用:动态代理1. Java反射机制概述 反射是被视为动态语言的关键,反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。 加载原创 2022-03-24 20:19:31 · 963 阅读 · 1 评论 -
Java网络编程
网络编程概述JavaWeb:网页编程 基于B/S架构网络编程:TCP/IP协议栈 基于C/S架构网络通信的要素网络编程中有两个主要的问题:如何准确的定位到网络上的一台或多台主机找到主机之后如何进行通信网络编程中的要素:IP和端口号 涉及到IP协议网络通信协议 涉及到tcp,udp协议IPip地址:InetAddress唯一定位一台网络上的主机端口端口表示计算机上的一个程序的进程。不同的进程有不同的端口号,用来区分不同的应用。...原创 2022-03-01 21:22:59 · 293 阅读 · 0 评论 -
Java IO流
文章目录File类的使用路径分隔符创建File类的实例File类的使用路径分隔符路径中的每级目录之间用一个路径分隔符隔开。路径分隔符和系统有关:windows和DOS系统默认使用 \ 来表示;UNIX和URL使用 / 来表示。Java程序支持跨平台运行,因此路径分隔符要慎用。为了解决路径问题,File类提供了一个常量:public static final String separator,可以根据操作系统动态的提供分隔符。创建File类的实例package file;impo原创 2022-02-27 21:31:47 · 341 阅读 · 0 评论 -
Java泛型
文章目录为什么要有泛型在集合中使用泛型自定义泛型结构泛型在继承上的体现通配符的使用泛型应用举例为什么要有泛型集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来解决。因为这个时候除了元素的类型不确定,其它的部分是确定的,例如这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个参数,这个类型参数就叫做泛型。在集合中使用泛型import java.util.HashMap;impo原创 2022-02-18 22:33:46 · 219 阅读 · 0 评论 -
Java比较器
在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。Java实现对象排序的方式有两种:自然排序:java.lang.Comparable定制排序:java.lang.Comparatorimport java.util.Arrays;/** * @author HPF *Comparable接口的使用举例: *1.像String、包装类等实现了Comparable接口,重写了compareTo(obj)方法,给出了比较两个对象大小的方式。 *2.重写compa原创 2022-02-16 15:32:40 · 152 阅读 · 0 评论 -
咱就是说,一篇带你搞懂进程&线程---基于Java
文章目录基本概念:程序、进程、线程单核CPU和多核CPU的理解并行与并发使用多线程的优点何时需要多线程线程的创建和使用Thread类的有关方法基本概念:程序、进程、线程程序是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程(生命周期)。比如:运行中的QQ、运行中的MP3播放器都是一个进程;程序是静态的,进程是动态的;进程作为资源分配的基本单位,系统再运行时会为每个进原创 2022-02-13 21:16:16 · 373 阅读 · 1 评论 -
Map集合详解
Map和Collection没有继承关系,Map集合的遍历通过键值对当中的key值来遍历import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;public class mapTest{ public static void main(String[] args) { Map<Integer,String> map =ne原创 2020-10-19 16:08:57 · 190 阅读 · 0 评论 -
泛型机制
概述 泛型是JDK5.0之后推出的新特性,用泛型可以指定集合当中存储的数据类型。泛型这种机制,只在程序编译阶段起作用,只是给编译器参考的。(运行阶段泛型没用!)下面我们还是以实例代码来说明吧,没有使用泛型的代码:import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class genericTest{ public static void main(String[] args原创 2020-10-18 16:27:30 · 244 阅读 · 2 评论 -
Java集合Collection接口常用方法(重点!!!)
关于java.util.Colletion接口中常用的方法。 因为Collection是单个存储元素集合的超级父类型,它下面的一系列接口以及实现类都会重写Collection当中的方法,因此讲解Collection当中的方法是比较通用的。注意: 集合当中不能直接存储基本数据类型,也不能存储java对象,存储的只是java对象的内存地址。 没有使用“泛型”之前,Collection中可以存储Object的所有子类型。 使用了“泛型”之后,Collection中只能存储某个具体的类型。 接原创 2020-10-16 20:36:34 · 606 阅读 · 0 评论 -
一篇文章带你理清Java集合框架
集合概述我们之前学习过的引用数据类型当中的数组,就可以理解为一种集合,以此作为切入点,我们可以很容易的理解,集合实际上就是一个容器,可以用来容纳其它类型的数据。集合不能直接存储基本数据类型,另外集合也不能直接存储java对象,集合当中存储的都是java对象的内存地址(或者说集合存储的是引用)。list.add(100)//自动装箱Integer注意:集合在java中本身是一个容器,是一个对象。集合中任何时候存储的都是“引用”。在java中每一个不同的集合,底层会对应不同的数据结构。往不同的集合原创 2020-10-16 10:25:25 · 255 阅读 · 2 评论 -
String、StringBuilder和StringBuffer三者区别
一、字符串的连接效率问题 Java当中对数组初始化之后,该数组所占的内存空间、数组长度的都是不可变的,我们在编写程序的时候,对于数组的初始化都需要给定长度才行。对于创建一个字符串,为字符串对象分配内存空间,会耗费掉一定的时间与空间的代价,也即CPU和内存的代价消耗,作为最基础的数据类型,大量频繁的创建字符串,会极大程度地影响程序的性能。 每次连接字符串时都会创建一个新的String对象,随着拼接次数的增多,这个对象会越来越大。比如说,进行100次拼接需要创建100个String对象才能够达到目的,对原创 2020-10-01 18:06:25 · 9818 阅读 · 4 评论 -
八大基本数据类型对应的包装类
以我个人屈指可数的面试面试经历来看,当然我这里主要说的是Java开发相关岗位的面试,面试的内容对于int 和Integer的区别 这类问题讨论的比较多,下面我们就开展开说明一下这类问题吧。int我们肯定都熟悉吧,是Java当中的一个基本数据类型,这跟C语言当中的int也一样,对于Integer呢,我们或多或少也知道一点,Integer是Java当中的包装类,说白了它就是一个类。 我们首先来回顾以下Java当中的八大基本数据类型,也即byte、short、int、long、float、double、原创 2020-09-26 20:21:04 · 5860 阅读 · 4 评论 -
你知道整数型常量池吗?
见图点题:这。。。是不是感觉学了假的Java,太懵逼了吧。原创 2020-09-26 19:32:22 · 503 阅读 · 1 评论 -
String类之那些你不知道的知识点
关于Java JDK中内置的一个类:java.lang.String我们需要了解的有以下几点:String表示字符串类型,属于引用数据类型,切记不属于基本数据类型;在java中随便使用双引号 “” 括起来的都是String类型的对象。例如"abc"、“张三”、“HelloWorld”,这是三个String对象;java中规定,双引号括起来的字符串是不可变的,也就是说“abc”这个字符串自出生到死亡这个过程都是不可变的,不可能再变成“abcd”;在JDK当中双引号括起来的字符串都是直接存储下 “原创 2020-09-23 21:10:40 · 467 阅读 · 0 评论 -
Java关键字之final详解
引入概念 final是Java语言当中的一个关键字,final表示的是最终的、不可变的,也就是说final修饰的部分就有“不能变”的属性。final可以修饰的部分有变量、方法和类,下面我们来逐一讨论。final修饰变量 final关键字可以用于变量声明,一旦该变量被设定,就不可以再改变该变量的值。通常,由final定义的变量为常量。final修饰局部变量 final关键字定义的变量必须在声明时对其进行赋值操作。final修饰的局部变量不能被二次赋值修改,只能赋值一次。final修饰实例变量原创 2020-09-14 14:16:44 · 463 阅读 · 3 评论 -
抽象类与接口
抽象类 在引入抽象类的概念之前,我们可以试想一下生活当中的某些例子。比如我们在描述某个图形的时候,像三角形之类的图形我么可以直接具体的描述它们有几条边,几个角,这些描述都是合乎情理的。但是对于某些图形,我们并不能直接描述它们的具体边角情况,只能大概的描述一下这个似乎存在的图形,那么对于这种事物的描述,在Java当中就需要使用到抽象类。 在解决实际问题时,一般将父类定义为抽象类,需要使用这个父类进行继承与多态处理。我们很容易理解这一点,在继承树当中,越是在上方的类就描述的越概括越抽象,而在这些类下方的原创 2020-09-10 19:42:55 · 265 阅读 · 1 评论 -
Java关键字之super详解
在学习super关键字之前,我们需要注意的一点就是,super关键字的学习需要和this关键字类比起来学,它们之间有许多共同点,下面我们就来进入正式的讲解吧。 我们还是以一段代码开篇讲解吧:class Test{ public Test(){ System.out.println("父类的构造方法被执行!"); }}public class Test02 extends Test{ public Test02(){ System.out.println("子类的构造方法被执行!"原创 2020-08-27 22:32:56 · 385 阅读 · 1 评论 -
Java关键字之this详解
在正式的讲解this关键字之前,我们先来看看下面的一段代码:public class Test { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; }} 显然这是一段对Test类进行封装的代码,我们可以发现这段代码当中出现了this关键字。假如我们并不清楚this关键字的作用,我们可以试着先把这段原创 2020-08-25 23:06:04 · 597 阅读 · 1 评论 -
封装+继承+多态
概述面向对象编程有三大特点:封装、继承和多态,接下来的三期博文将会围绕这三个话题进行知识点的详细讲解,屏幕前的各位要拿好你们的小本本记清楚哦。封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。例如,用户使用计算机时,只需要使用手指敲击键盘就可以实现一些功能,无需知道计算机内存是如何工作的,及时可能知道计算机的工作原理,但在使用计算机时也并不完全依赖于计算机工作原理这些细节。采用封装的思想保证了类内部数据结构的完整性,应用该类的用户不能原创 2020-08-23 22:52:04 · 263 阅读 · 1 评论 -
静态代码块and实例代码块有什么作用?
1.static静态代码块语法规则:static{java语句;java语句;…}首先,我们需要明确的是,static静态代码块可以放置在某个类当中除了方法体内的任何位置,同时,static静态代码块可以有多个。执行规则:static静态代码块是在类加载的时候执行,并且在main方法之前执行,如果该类当中有多个静态代码块,则需要自上而下依次执行完之后才会开始执行main方法。不难发现,我们在日常的开发过程中很少使用static静态代码块,那么为什么要有这么一个概念存在呢,所谓“存在即合理原创 2020-07-28 13:44:57 · 495 阅读 · 1 评论 -
Java关键字之static详解
写了这么久的Java代码,你有认真的思考一下关键字static的作用吗?特别是static出现的位置你有清楚的了解一下吗?这期博客将带你一起学习static的作用。static可翻译为“静态的”,在了解static的作用之前我们需要知道在写代码的时候static可以放在哪些位置,或者是说可以修饰哪些内容。首先,我们在类体当中声明变量的时候,有static出现的情况;其次,我们在定义方法的时候也有static出现的情况。对于变量来说,什么时候定义为实例变量?什么时候定义为静态变量?首先,方法体当中的原创 2020-07-22 21:31:40 · 243 阅读 · 2 评论 -
面向过程和面向对象???
学习了这么久的编程语言的开发,你有清楚的想过面向过程和面向对象的区别吗?从编程语言方面出发:对于C语言来说,是完全面向过程的;对于C++语言来说,是一半面向过程,一半面向对象(C++是半面向对象的);对于Java语言来说,是完全面向对象的。什么是面向过程开发方式?面向过程的开发方式的主要特点是:注重实现某个功能的步骤,即第一步要做什么,接着第二步做什么,直到完成整个事件的功能。另外呢,面向过程也注重实现功能之间的因果关系,比如说,因为A功能所以有B功能,因为B功能所以有C功能等等。面向原创 2020-07-22 16:51:13 · 234 阅读 · 1 评论 -
实例化对象时对应的JVM内存结构
本期博文主要深入讲解类和对象的使用,重点在实例化了一个类的对象之后,对应的JVM(Java虚拟机)的内存分布是怎样的。在语法级别上怎样完成对象创建呢?语法格式:类名 变量名 = new 类名();这样就完成了一个对象的创建。为了方便知识点的引入,设计一个学生类如下:public class Student{ int stu_no;//学号 String stu_name;//姓名 int stu_age;//年龄 String stu_addr;//家庭住址}同时,设计一个测试学生原创 2020-07-15 23:28:20 · 382 阅读 · 2 评论 -
Java语言基础之方法的重载
概述在引入方法的重载概念之前,我们先来了解一下类的构造方法的相关概念。在类中除了成员方法之外,还存在一种特殊类型的方法,那就是构造方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。每当类实例化一个对象的时候,类都会自动调用构造方法。构造方法的特点如下:构造方法没有返回值;构造方法的名称要与本类的名称相同。注意:如果在类中定义的构方法都不是无参的构造方法,那么编译器也不会为类设置一个默认的无参构造方法,也就是说,只要程序员自定义了构造方法,那么编译器将不会设置默认的构造方法,原创 2020-07-14 22:13:39 · 317 阅读 · 1 评论 -
Java逻辑运算符之&和&&的联系与区别
首先,&(逻辑与) 和 &&(短路与) 都是Java语言当中的逻辑运算符,就&和&&的最终运算结果来看,这两者没有任何区别。实际上,逻辑运算符&和&&都表示“逻辑与”,那么它们之间的区别在哪里呢?就这两个运算符的运算规则来看,只有运算符两边表达式的结果都为true,那么“逻辑与”之后的结果才为true,除此之外的情况皆为false。使用逻辑运算符“&”会判断两边的表达式;而运算符“&&”则是针对一侧的表达式的运原创 2020-07-12 21:50:53 · 948 阅读 · 1 评论 -
Java语言基础之数据类型转换
一、概述二、隐式类型转换三、显式类型转换四、要点总结一、概述数据类型转换是将一个值从一种类型更改为另一种类型的过程。如果从低精度数据类型向高精度数据类型转换,则永远不会溢出,并且总是成功的;而把高精度数据类型向低精度数据类型转换则可能会有信息丢失,有可能失败。数据类型转换有两种方式,即隐式转换与显式转换。二、隐式类型转换从低级类型向高级类型的转换,系统将自动执行,程序员无需进行任何操作。这种类型的转换称为隐式转换。下列基本数据类型会涉及数据转换,不包括逻辑类型和字符类型。这些类型按精度从低到高.原创 2020-07-11 18:02:51 · 771 阅读 · 1 评论 -
Java程序开发中标识符命名规则与命名规范
标识符命名规则与命名规范一、概述二、命名规则三、命名规范一、概述标识符可以简单的理解为一个名字,在Java程序开发的过程当中,标识符是可以由程序开发人员进行自行命名的一个概念,是一种用来标识类名、变量名、方法名、数组名、文件名的有效序列。二、命名规则Java语言规定标识符由任意顺序的字母、下划线(_)、美元符号($)和数字组成,并且第一个字符不能是数字。同时,标识符不能是Java中的保留关键字。比如:stu_name、$page、user_age均为合法标识符User name、String均为原创 2020-07-10 21:28:45 · 1362 阅读 · 1 评论 -
一篇文章让你彻底了解JDK JRE JVM三者之间的关系
名词解释1.JDK(Java Development Kit)JDK(Java开发工具包)可谓是整个Java程序开发的核心内容,JDK主要包含了JRE、Java的系统类库以及对Java程序进行编译以及运行的工具,主要是javac.exe和java.exe命令工具的使用,这两个工具的具体使用方法可以参考我的上一期博客。2.JRE(Java Runtime Environment)JRE(Java运行环境)主要是让操作系统运行Java应用程序,其内部包含了一个JVM(java虚拟机),也就是说JRE只负原创 2020-07-09 22:55:42 · 1765 阅读 · 5 评论 -
使用文本编辑器开发一个Java程序的详细步骤
概述前提: 在学习本博文之前,您需要搭建好Java环境,其中包括1.JDK(Java开发工具箱)的下载;2.JDK环境变量的设置。就目前对于Java程序的开发现状看的话,都是采用的流行的开发工具,其优点对于开发人员来说,可以自动完成Java程序的编译和运行,并且带有代码辅助功能,可以提示完整的语法代码,但是大型的IDE(集成开发环境)需要的系统资源较大,在新人学习Java编程的时候,我觉得使用文本编辑器来编写Java程序的源代码,同时搭配使用javac命令以及java运行命令是比较重要的一个前提操作,很原创 2020-07-08 13:12:08 · 4104 阅读 · 2 评论 -
一个Java程序从编写到最终运行经历了什么?
一个Java程序从编写到最终运行经历了什么?一、编辑阶段二、编译阶段三、运行阶段一、编辑阶段编写Java应用程序,可以使用任何一个文本编辑器来写程序的源代码。当然,目前所使用的大都是可以自动完成Java程序的编译和运行的IDE(集成开发环境),其中流行的开发工具有Eclipse和IDEA。在编写Java应用程序的过程当中,我们需要在符合Java语法规范的前提下编辑Java源代码,除了单纯的文本编辑器之外,目前主流的集成开发环境会实时标注显示错误的语法信息(比如Eclipse自带的插件可以动态的识别错误原创 2020-07-07 10:46:56 · 1536 阅读 · 2 评论