![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 68
一名小白的进阶之路
个人邮箱:827328843@qq.com
展开
-
Maven初学基础
Maven安装及基本操作一、Maven的安装 1.maven各个版本安装包下载地址:https://archive.apache.org/dist/maven/maven-3 2.点击所要下载版本,点击,根据电脑所用操作系统选择对应maven文件下载二、环境变量配置 1.首先复制解压后的maven文件目录,例如:E:\maven\apache-maven-3.6.3 2.右键我的电脑—>属性—>高级—>环境变量 3.在系统变量中点击...原创 2021-03-04 15:01:31 · 296 阅读 · 1 评论 -
Java之JDK8三个新特性
一、接口中可以定义有方法体的方法1.定义非静态方法,方法需要用default修饰,实现类不需要对其重写,可实例化后直接调用。①接口中定义方法②实现类(空,不需要重写)③Main方法调用2.定义静态方法,直接 接口名.方法名 即可调用。①接口People中定义②Main方法调用二、局部内部类调用局部变量,局部变量可不用final修饰,系统会自动为局...原创 2020-02-04 09:41:14 · 861 阅读 · 0 评论 -
Java之枚举类的实现及相关方法
枚举概述:将变量的值一一列出来,变量的值只限于列举出来的值的范围内。一、自定义实现枚举类(了解)方法一:方法二:方法三:二、通过Enum类实现枚举(掌握)1.三种实现方法方法一:方法二:方法三:2.枚举类常见的方法① ordinal() :返回当前枚举项在枚举类的序数。② compareTo(枚举项):比较此枚举与指定对象的顺...原创 2020-02-03 23:13:50 · 2294 阅读 · 1 评论 -
Java之模板设计模式
模板设计模式概述:模板方法模式就是定义一个算法的骨架,而将具体的算法延迟到子类中实现。优点:使用模板方法模式,在定义算法骨架的同时,可以很灵活的实现具体的方法,满足用户灵活多变的需求。缺点:如果算法骨架有修改的话,则需要修改抽象类。一、定义一个抽象类二、定义一个子类三、Main方法实现...原创 2020-02-03 22:46:14 · 231 阅读 · 0 评论 -
Java之反射机制知识点
一、类的加载概述和加载时机1.类的加载概述 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载、连接、初始化三步来实现对这个类进行初始化。 加载:指将class文件读入内存,并为之创建一个Class对象。任何类被使用时系统都会建立一个Class对象 连接:验证 是否有正确的内部结构,并和其他类协调一致。 准备 负责为...原创 2020-02-03 22:31:18 · 419 阅读 · 0 评论 -
Java之网络编程练习—字符串反转
题目描述:客户端键盘录入一个字符串,然后发给服务器,由服务器进行反转后交还给客户端。一、客户端实现代码public class Practice_Client { public static void main(String[] args) throws IOException { //创建客户端连接,指定连接ip和端口号 Socket socke...原创 2020-02-03 11:26:45 · 387 阅读 · 0 评论 -
Java之网络编程练习—客户端向服务器端上传文件
演示以本机作为服务器,从本地任选一个文件传输到服务器(本机)。一、客户端实现代码public class Upload_Client { public static void main(String[] args) throws IOException { //1.创建客户端,并连接指定ip和端口号 Socket socket = new Sock...原创 2020-02-03 11:15:26 · 1334 阅读 · 0 评论 -
cmd命令对java程序进行编译时出现:编码GBK的不可映射字符
原因:由于JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定JAVA源程序的编码格式,则java.exe首先获得我们才做系统默认采用的编码格式,也即在编译JAVA程序时,若我们不指定源程序文件的编码格式,JDK首先获得操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式,如win2k,他的值为GBK),然后JDK就把我们的JAVA源程序从file.en...转载 2020-02-02 20:12:41 · 515 阅读 · 0 评论 -
如何在命令行下运行IDEA的Java程序?
一、首先进入Java代码所在包的目录演示:博主所要运行的MainTest类在包test2下,包test2在项目的src文件下,所以包目录即为src下二、编译Java程序在编译时需要带着包名,编译格式:javac 包名/类名.java若编译完成后会在Java程序所在目录下生成一个类名.class文件三、运行程序在运行时也需要带着包名,格式:java 包名.类名...原创 2020-02-01 20:47:58 · 7992 阅读 · 1 评论 -
Java之简单工厂设计模式
一、简单工厂设计模式概述:定义一个具体的工厂类负责创建各个类的实例。演示:①定义一个抽象父类动物类②定义几个子类③定义工厂类④Main方法中直接调用各个子类优点:客户端不需要再负责对象的创建,从而明确了各个类的职责。缺点:这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断地修改工厂类,不利于后期维护。...原创 2020-02-01 17:03:54 · 828 阅读 · 0 评论 -
Java之浅析线程同步问题(synchronized的使用)
为什么要使用synchronized?主要针对并发编程的安全问题:共享数据或多线程共同操作共享数据时保证同一时刻只有一个线程可以使用共享资源。问题发现:定义一个售票类,继承Thread,重写run方法,初试ticket值为100。运行结果:省略前面部分,只截取出错展示问题分析:在程序中我们定义了如果票数小于等于0时则立即停止循环,但是现在出现了第0张票和第-1张票。...原创 2020-01-31 21:12:46 · 5261 阅读 · 1 评论 -
Java之Timer类计时器提醒功能
Timer类:依赖系统日期,提供计时器通知服务。schedule(TimerTask task,Date time):安排在指定的时间执行指定的任务。TimerTask:任务类,任务实现方法为抽象方法run。所以需要定义一个子类继承TimerTask,然后重写run方法,即将所需执行任何写入方法体。Date:时间类,设置任务执行时间,依托系统日期为准。以schedule方法为例子,...原创 2020-01-30 22:02:20 · 1450 阅读 · 0 评论 -
Java之单例设计模式
一、饿汉式二、懒汉式()注释:与饿汉式的区别在于并没有一开始就实例化本类对象,而是等到调用的时候才实例化。三、无名版(了解即可)三、饿汉式和懒汉式的区别:1.饿汉式是空间换时间(不管用否都实例化),懒汉式是时间换空间(第一次用时实例化,每次调用都需要先判断是否为空)。2.在多线程访问时,饿汉式不会创建多个对象,而懒汉式有可能会创建多个对象。2的注释:当第一个...原创 2020-01-30 20:20:23 · 437 阅读 · 0 评论 -
Java之对象操作流一次读取多个对象的问题
问题描述:在操作对象流的时候应该有很多小伙伴遇到在读取对象时不知文件内对象的具体个数,所以读取时不知末尾结束判断标志,或者以为返回的是对象所以末尾结束标志就会是null,导致每次读取程序都会报错,针对此种问题下面给大家两种解决办法:(提示:自定义对象后需要将对象实现接口Serializable,让对象启用序列化功能,否则无法写进文件)1.将所有对象先用集合打包好,再写入,不管集合存有多少个对象...原创 2020-01-30 08:29:26 · 3882 阅读 · 3 评论 -
Java之约瑟夫环
约瑟夫环:假设有N人坐在一起,现在给他们编号1-N,现在选取编号每次是k的倍数的人出局,直至最后留下一个人。题目:假设现在有8人,给他们编号1,2,....,8,现在选取编号是3的倍数的人出局,请问最后一个幸运的人编号是几?结果:当传入参数为8时,输出结果为7。...原创 2020-01-29 22:01:10 · 382 阅读 · 0 评论 -
Java之浅析BufferedInputStream和BufferedOutputStream的高效原理
/*普及:计算机中内存的访问速度(运算效率)比硬盘的访问速度(运算效率)要高得多*/在代码中使用BufferedInputStream和BufferedOutputStream能够提高数据的传输效率原因如下:①当只使用FileInputStream和FileOutputStream进行数据复制时,每次FileInputStram从数据源(硬存)中读取一个字节,然后交给b,再把b给Fil...原创 2020-01-27 16:45:18 · 3321 阅读 · 3 评论 -
Java之为什么IO流中read方法返回值是int类型?
提问:为什么IO流的read()方法读取的是一个字节但是返回却是int,而不是byte?/*提示:数据在内存里以补码的形式存储是为了简化计算机的结构设计,同时也提高了运算速度。在计算机系统中,数值一律用补码来表示和存储*/byte类型-1的源码:10000001 反码:11111110 补码:11111...原创 2020-01-27 13:58:20 · 2887 阅读 · 0 评论 -
Java之File类过滤器实现、功能方法等知识点
1.File类的概念File类:用于得到一个路径对象,路径可分为相对路径和绝对路径。相对路径:相对于某个位置下,只需要写相对位置下后的路径即可。绝对路径:绝对路径是一个固定的路径,从盘符开始。2.File类的构造方法:①File(String pathname):根据一个路径得到File对象。②File(String parent,String child):根据一个目...原创 2020-01-26 22:54:40 · 510 阅读 · 0 评论 -
Java之自定义异常
为什么要自定义异常?程序员可以通过异常的名字区分到底是什么样的异常,有针对性的Debug。如何自定义异常?创建一个异常类继承Exception或RuntimeException,类名格式最好为“异常错误名+Exception”。演示:①创建一个专门处理年龄越界的异常类②主代码调用输出结果:注意:若是继承的父类是RuntimeException(运行时异常)时...原创 2020-01-26 15:39:40 · 400 阅读 · 0 评论 -
Java之finally关键字的面试题
1.final,finally和finalize的区别final:修饰类时,不能被继承。 修饰方法时,不能被重写。 修饰变量时,只能赋值一次。finally:是try语句中的一个语句体,不能单独使用,用来释放资源。finalize:是一个方法,当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。2.如果catch里面...原创 2020-01-26 14:52:24 · 791 阅读 · 0 评论 -
Java之try...catch异常处理
一、异常处理的格式之try...catch 1.try(用来检测异常)...catch(用来捕获异常)...finally(释放资源),catch可以有多个,跟哪个匹配上则执行哪个里的语句,3种搭配格式如下: /*finally的特点:若程序开始执行try,并且在finally之前JVM并未退出,则finally中的语句一定会执行。 finally的作用:用户释放资源...原创 2020-01-26 12:17:03 · 1828 阅读 · 0 评论 -
Java之HashMap和Hashtable的区别
共同点:底层都是哈希算法,都是双列集合区别:①HashMap是线程不安全的,效率高,JDK1.2版本的 Hashtable是线程安全的,效率低,JDK1.0版本的②HashMap可以存储null键和null值 Hashtable不可以存储null键和null值觉得有用的小伙伴请点赞、评论或收藏一下多支持支持博主小弟,跪安~~...原创 2020-01-23 11:46:54 · 180 阅读 · 0 评论 -
Java之Map集合
一、常用方法简述1.添加功能 V put(K key,V value):添加元素 如果键是第一次存储,则直接存储元素,返回null。 如果键不是第一次存储,就用值把以前的值替换,返回以前的值。2.删除功能 void clear():移除所有的键值对元素 V remove(Object key):根据键删除键值对元素,并把值返回。3.判断功能...原创 2020-01-23 11:45:02 · 553 阅读 · 0 评论 -
Java之TreeSet除重、排序实现方式
TreeSet:接口Set的一个实现类,除了具有除重的功能外与还可以对集合对象进行排序。compareTo方法:实现除重和排序。当返回负数(小于)则存在左边,返回正数(大于)则存在右边,返回0(相等)则不存。使用方式:①自然排序TreeSet类的add()方法中会把存入的对象提升为Comparable类型调用对象的compareTo()方法和集合中的对象比较 //若对象为自定...原创 2020-01-22 22:02:03 · 917 阅读 · 0 评论 -
Java之HashSet除重原理
HashSet的除重原理:先判断HashCode方法,后判断equals方法,若两者同时返回true则认为对象与集合中对象重复,若HashCode返回false则不再执行equals。HashCode方法:根据一套特殊的计算方法返回一个整形值,此值被HashSet用来定位对象的存储地址。equals方法:判断两个对象的内容是否相等。除重判断流程:HashSet会将新增对象与集合中的每一...原创 2020-01-22 16:00:10 · 2694 阅读 · 0 评论 -
Java之asList使用注意事项
asList():用于将一个数组转换成集合。演示:输出结果:1.用asList将数组转换成List集合不能增加或者删除元素,只能使用集合中的方法。//相当于集合的方法更多,转换成集合可以有更多操 作,若对转换后的集合进行删除或者添加会报不支持操作的异常。2.若将基本数据类型的数组用isList方法转换成集合,会被(整体)当成一个对象转换,因为集合中保存的都是对象。...原创 2020-01-21 21:58:21 · 1073 阅读 · 0 评论 -
Java之增强for的概述和使用
增强for:简化数组和Collection集合的遍历,底层实现依赖的是迭代器(Iterator)格式:for(元素数据类型 变量:数组或Collection集合){ 使用变量; }例子:①遍历数组输出:②遍历对象输出结果:注意:在增强for循环中不能进行删除操作,因为底层实现是Iterator迭代器,而删除需要使用Itera...原创 2020-01-21 20:17:11 · 322 阅读 · 0 评论 -
Java之ArrayList集合存储空间变化问题
ArrayList在初始化时大小为10,若当集合大小不足时,则会新创建一个集合空间长度为原来的1.5倍,即增长50%,此时新集合中则多了50%的空间可以存储新的对象。解析:在集合中,若当集合空间不足时会创建一个新的集合并且新集合存储空间比原集合大,为了可以继续增加对象。若新集合存储空间增长过少,则会出现不断创建新集合而舍弃旧集合浪费存储空间的情况;若新集合创建过大,则会出现剩余空间过多的情况,...原创 2020-01-20 12:21:37 · 586 阅读 · 0 评论 -
Java之集合概述
集合:可以往里面保存多个对象,存放的是对象地址,并且存储长度不固定。1.数组和集合的区别:①数组既可以存储基本数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用数据类型存储的是地址值。 集合只能存储引用数据类型(对象),集合中也可以存储基本数据类型,但是存储的时候回自动装箱变成对象。②数组长度是固定的,不能自动增长。 集合的长度是可变的,可以根据元素的增...原创 2020-01-20 08:58:26 · 198 阅读 · 0 评论 -
Java之正则表达式
本文列举为常用正则表达式的解释范例,想深入探索更多正则表达式请下载JDK API 中文版搜索 Pattern类。概念:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式用法:String 变量名= "正则表达式"; ...原创 2020-01-19 16:55:59 · 462 阅读 · 0 评论 -
Java之Integer的面试题
1.Integer i1 = new Integer(127); Integer i2 = new Integer(127); System.out.println(i1 == i2); //False,i1和i2都是通过new分配的内存空间,所以指向两个不同的内存空间 System.out.println(i1.equals(i2));//True2.Intege...原创 2020-01-19 10:17:47 · 893 阅读 · 0 评论 -
Java之四种权限修饰符的使用范围
Java中有四种权限修饰符:(YES代表可以访问,NO代表不可以访问) public > protect > (default) > private同一个类中 YES YES YES YES同一...原创 2020-01-16 21:56:21 · 469 阅读 · 0 评论 -
Java之final关键字的用法
final关键字代表最终,不可改变。常见有四种用法:①.用来修饰一个类②.用来修饰一个方法③.用来修饰一个局部变量④.用来修饰一个成员变量1.修饰类格式:public final class 类名称{ //..... }含义:当前这个类不能有任何的子类,如果一个类去继承用final修饰的类会报错...原创 2020-01-16 21:43:30 · 338 阅读 · 0 评论 -
Java之instanceof的使用
问题:如何知道一个父类引用的对象本来是什么子类?格式:对象名称 instanceof 类名称此方法会返回一个boolean值结果,判断前面对象是不是后面类的实例化,是返回true,否返回false。public static void main(String[] args) { Animal animal = new Cat(); //本来是一只猫 getAnimal(a...原创 2020-01-16 20:35:47 · 229 阅读 · 0 评论 -
Java之对象的向上转型和向下转型
1.向上转型:本质是多态的体现格式:父类名称 对象名 = new 子类名称(); Animal animal = new Cat();含义:右侧创建一个子类对象,把它当成父类来看待使用。 创建一支猫,把它当成动物来看。注意事项:向上转型一定是安全的。从小范围转到了大范围,从小范围的猫向上转型为更大范围的...原创 2020-01-16 20:03:57 · 430 阅读 · 0 评论 -
Java之多态
extends继承或者implements接口实现,是多态的前提。多态中成员变量的使用特点:1.直接通过对象名称访问成员变量:看等号左边是谁,优先用谁的,没有则向上找。//Fu obj = new Zi(),等号左边是Fu类 例: 创建一个类Fu,Fu包含成员变量num=10; 创建一个类Zi,并Zi继承Fu,Zi中包含成员变量num=20; ...原创 2020-01-16 19:23:57 · 261 阅读 · 0 评论 -
Java之接口相关知识点
接口中可包含的内容有:1.常量(Java7)2.抽象方法(Java7)3.默认方法(Java8新增)4.静态方法(Java8新增)5.私有方法(Java9新增)=============================分割线=============================1.接口中抽象方法的定义:public abstract 返回值类型 方法名称(参数列表)...原创 2020-01-16 16:20:33 · 257 阅读 · 0 评论 -
Java之重载和重写的区别
重写(Override):子类继承父类,子类中方法与父类的方法名称一样,参数列表【也】要一样。 //重写又称为覆盖、覆写重载(Overload):类中定义方法的时候,可以多个方法的名称一样,但是参数列表【不】能一样。关于重载概念不太理解的学友请查看我的另外一篇关于重载解释的文章https://blog.csdn.net/qq_40275740/article/details/103...原创 2020-01-15 21:04:23 · 244 阅读 · 0 评论 -
Java之关于局部变量和类成员变量和父类成员变量重名时的调用问题
用局部变量:直接写成员变量名用本类的成员变量:this.成员变量名用父类的成员变量:super.成员变量名例子:↓Father:父类中定义了 int num=10;Child extends Father:子类继承父类,并且自有成员变量 int num=20;public class Child extends Father{ int num=20; p...原创 2020-01-15 19:35:17 · 914 阅读 · 0 评论 -
Java之静态代码块的使用
静态代码块的格式是:public class 类名称{ static{ //静态代码块的内容 }}特点:当第一次用到本类时,静态代码块执行唯一一次,往后再用到此类不再执行。 动态内容总是优先于非静态,所以静态代码块比构造方法先执行。静态代码块的典型用途:一次性给静态成员变量进行赋值觉得有用的小伙伴请点赞、...原创 2020-01-15 18:16:05 · 233 阅读 · 0 评论