JAVA基础
文章平均质量分 76
血莲丹
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 中重写了 equals 为什么还要重写 hashCode?
在Java中,为什么重写了 equals 方法还要重写 hashCode 方法原创 2022-12-05 22:25:59 · 3988 阅读 · 2 评论 -
什么是回调?
什么是回调函数原创 2022-09-26 13:36:01 · 1988 阅读 · 0 评论 -
Java8 Stream 流
简介Java8两大新特征,一是支持 lambda 表达式,二是 Stream API。在使用 Stream API 之前,最好有 lambda表达式的基础,如果不太清楚,可以看我的另一篇博客lambda表达式。在编写代码的过程中,我们经常要对集合或数组数据进行操作,而有了 Stream API,我们能够非常轻松的对集合、数据进行映射、过滤、查找等操作,使得我们能够像操作数据库一样的操作集合。Stream 本身并不存储元素,它并不改变源数据,每次操作都会形成一个新的流,并且只有执行了Stream的终止操原创 2021-12-24 01:05:27 · 2779 阅读 · 4 评论 -
maven中依赖、继承、聚合、dependencyManagement、parent标签、modules标签的作用
简介Maven是Apache软件基金会组织维护的一款自动化构建工具,专注服务于Java平台的项目构建和依赖管理。Maven这个单词的本意是:专家,内行。读音是['meɪv(ə)n]或['mevn]。依赖依赖范围maven中依赖常见的范围有 compile、provided、test 三种。compile范围依赖:对主程序是否有效:有效对测试程序是否有效:有效是否参与打包:参与是否参与部署:参与典型例子:spring-coreprovided范围依赖:对主程序是否有效:有效对测原创 2021-11-09 11:01:39 · 3523 阅读 · 0 评论 -
Java实现手机登录功能
在做项目时,想将手机注册登录整合到项目当中,但是阿里云已经不支持个人认证,腾讯云好像也不支持。有人推荐说用容联云,经过调试,成功的实现短信发送。需要注意的是,验证码是我们后端程序生成,然后由运营商接收发送的。 首先注册一个容联云账号,然后创建一个应用,应用不用上线,没关系。代码如下:// 整合容联云短信服务 //生产环境请求地址:app.cloopen.com String serverIp = "app.cloopen.com"; //请求端口原创 2021-09-03 08:26:10 · 3413 阅读 · 5 评论 -
到底什么是面向对象?
什么是面向对象?面向对象是老生长谈的面试题,这里时是我的一些理解,欢迎大家一起讨论。 面向对象肯定不是面向男、女对象,面向对象是以对象为中心,更加接近人的思维模式,而面向过程是以函数为中心。使用面向对象的思想去解决问题,常常会共同的属性抽象出来,抽象成一个类,以类为模板,去创建对象。就好比人开车,用面向过程的思想去编程,那么就会写一个方法,将人和车传入进去,实现人开车的功能。用面向对象的思想去编程,那么首先需要创建两个类,一个是人类,一个是车类。在类当中定义他们的共有属性,比如人类中有姓名,年龄等,车原创 2021-08-16 22:04:23 · 211 阅读 · 3 评论 -
二进制中的与、或、非、异或运算
与运算【与】运算符号为 & ,运算法则为遇0得0。也就是说只要有0,结果即为0。举例:1001 & 1100 1 0 0 1 & 1 1 0 0 ———— 1 0 0 0或运算【或】运算符号为 | ,就是一个竖线,运算法则为遇1得1。也就是说,只要有1,结果就为1。举例:1100 | 1010 1 1 0 0 | 1 0 1 0 ———— 1 1 1 0非运算非预算符号为原创 2021-08-06 14:30:56 · 39690 阅读 · 4 评论 -
还在头疼Javaweb乱码?一篇文章搞定它!
本文不讨论Ajax指定的请求方式。请求乱码前端发送的请求方式就两种,除了表单设置提交方式为post之外,其他请求方式都是get请求。比如前端请求一个图片,一个页面都是get请求。GET请求乱码原因:所有的请求参数是带在url地址上的;Tomcat一收到请求就会调用默认的编解码格式将地址解析完成,并封装成request对象。此时再调用request.getParameter();就会乱码。举例:浏览器给服务器发送了utf-8的数据<a href="user?username=张三">原创 2021-08-01 09:47:39 · 125 阅读 · 0 评论 -
请求转发和重定向地址映射问题
访问文件: http://localhost:8080/filter/login.jsp工程名为filter请求转发request.getRequestDispatcher("/filter/login.jsp").forward(request, response);请求转发这么写就会报错,请求转发不能写全路径。浏览器解析到工程下的web目录,所以/filter工程名就不需要写了。斜杠就代表到了web目录。request.getRequestDispatcher("/");要写斜杠,不写就原创 2021-08-01 09:34:23 · 477 阅读 · 0 评论 -
Java线程池
概述 当我们需要一个线程时,我们往往写一个类去继承Thread类或者实现那两个接口,这样操作起来也较为方便。但是如果在并发情况下,线程的数量较多,需要频繁的创建线程,且每个线程只是执行一个很短的任务就结束了。这样频繁的创建线程效率并不高,且降低了系统的效率。为此我们引入线程池的概念。说白了就是预先创好一部分线程放入池中,用到就去取,不用了也不销毁,而是放回线程池中,等待其他需要线程的地方获取。 JDK5之前,还需要程序员们自己实现线程池,而在JDK5之后,Java内置支持线程池实现JUC包下的Thr原创 2021-07-27 18:06:09 · 231 阅读 · 0 评论 -
Java对象克隆
什么是克隆 克隆顾名思义,就是可以将一个对象的信息克隆一份出来,生成一个新的对象。那么肯定就有人问了,都有new了,为什么还要克隆? 因为new出来的对象,属性都是初始化的值,而clone出来的对象,能保存对象的现有状态,当我们需要临时保存一个对象的现有状态时,就可以使用clone,如果用new,还需要重新赋值,当属性较多时,会比较繁琐。并且clone是native方法,是与底层操作系统交互的,会更加的快捷。注意:Person p = new Person; Person p1 = p; 这样不是原创 2021-07-25 17:36:20 · 601 阅读 · 7 评论 -
ThreadLocal
简介 我们都知道,多线程情况下,是会有资源竞争问题。当并非访问某共享资源时,就会出现问题,尤其是写操作,程序猿一般通过同步锁机制来保证线程安全。而当我们需要为每一个线程都保存一份线程独有的数据时,即相当于将共享变量变为每个线程都有一份的私有变量,就可以使用到ThreadLocal。 ThreadLocal位于java.lang包下,是JDK提供的一个类,支持泛型的。该类的作用就如其名字一样,线程变量。意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的。ThreadLo原创 2021-07-22 22:36:12 · 1367 阅读 · 0 评论 -
类之间的关系
类之间关系 在软件系统中,类不是孤立存在的,类与类之间存在各种关系。根据类与类之间的耦合度从弱到强排列,UML中的类图有以下几种关系:依赖关系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。依赖关系 依赖(Dependency)关系是一种使用关系,它是对象之间耦合度最弱的一种关联方式,是临时性的关联。在代码中,某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。比如:public void原创 2021-07-18 21:08:32 · 543 阅读 · 0 评论 -
Java IO流
I/O简介 I/O是Input/output的缩写,在java中,对于数据的输入和输出以流的方式进行。java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。 输入输出都是基于内存的角度来说的。输入:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。 输出:输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中。流的分类按操作数据单位不同分为:字节流(8 bit),字符流(16 bit)按数据流的流向不同分为:输入流,输出流按原创 2021-07-12 00:41:49 · 199 阅读 · 0 评论 -
Java泛型
泛型的概念 泛型,就是可以在定义类、接口时,通过一个标识来表示类中的属性类型,或者是方法的返回值及参数类型。这个标识将在使用时确定。不使用泛型带来的安全隐患 在JDK5之前,是没有泛型的。当我们设计一个集合时,不能确定里面装的是什么类型的对象,于是就设计成Object。当取出集合中的元素时,默认是Object的,使用时还需要强转成需要的类型,如果添加时添加了别的类型的对象,还会出现ClassCastException,带来安全隐患。public void test(){ Arra原创 2021-07-11 12:18:41 · 310 阅读 · 0 评论 -
JAVA集合详解
集合分类java中集合分为两种,一种是Collection,另一种是Map。Collection单列集合。Set、List、Queue接口都继承了Collection接口。基本方法public interface Collection<E> extends Iterable<E> {}int size(); // 获得集合中元素个数boolean isEmpty(); // 判断集合是否为空boolean contains(Object o); // 判断集合原创 2021-07-08 21:09:03 · 256 阅读 · 0 评论 -
java枚举类详解
什么是枚举类 枚举类,就如它的名字一样,这个类里面的属性就是用来枚举的。当某些属性是固定个数的,就可以使用枚举类。比如星期,性别,季节,月份等固定的常量。JAVA将线程的状态也定义成了枚举类(Thread.State)。如下所示:public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TI原创 2021-07-08 15:20:28 · 563 阅读 · 0 评论 -
Java创建线程的四种方式
在JDK5之前,可以使用继承Thread类和实现Runable接口来创建一个进程。而在JDK5之后,又新增了两种,实现Callable接口和使用线程池创建线程。方式一:继承Thread类使用步骤:定义子类继承Thread类。子类中重写Thread类中的run()方法。创建Thread子类对象,即创建了线程对象。调用线程对象start方法:启动线程,调用run()方法。class MyThread extends Thr原创 2021-07-07 18:49:24 · 1670 阅读 · 1 评论 -
java中try、catch、finally、return的执行顺序
有return的时候try…catch…finally的执行顺序可以分为如下几种:情况一try{}…catch{}…finally{} return 正常执行//第一种情况,正常执行 public static int test1() { int i = 0; try { i++; // 执行 } catch (Exception e) { i++; } finally {原创 2021-07-07 11:56:24 · 669 阅读 · 0 评论 -
java内部类详解
内部类简介 在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类。内部类可以分为四种,分别是成员内部类、局部内部类、静态内部类、匿名内部类。当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构最好使用内部类(比如链表中的节点类)。成员内部类 &nbs原创 2021-07-06 18:32:02 · 159 阅读 · 2 评论 -
super关键字
super关键字super的作用super可用于访问父类中定义的属性super可用于调用父类中定义的成员方法super可用于在子类构造器中调用父类的构造器子类中所有的构造器默认都会访问父类中空参数的构造器当父类中没有空参数的构造器时,子类的构造器必须通过this(参数列表)或者super(参数列表)语句指定调用本类或者父类中相应的构造器。同时,只能”二选一”,且必须放在构造器的首行如果子类构造器中既未显式调用父类或本类的构造器,且父类中又没有无参的构造器,则编译出错注意:尤其当子原创 2021-07-06 10:49:27 · 163 阅读 · 0 评论 -
this关键字
this关键字在java中,this能表示不同的意思。如果在方法内部使用,则表示这个方法所属对象的引用。如果在构造器内使用,表示该构造器正在初始化的对象。this可以调用类的属性、方法、构造器。为什么要使用构造器当在方法内需要用到调用该方法的对象时,就用this。我们可以用this来区分属性和局部变量。使用this关键字注意this出现的位置public class Student { private Integer age; private String name;原创 2021-07-05 20:52:59 · 157 阅读 · 0 评论 -
Java基本数据类型转换及细节
回来看看基础,发现基本数据类型的一些小细节(坑)基本数据类型首先,java中有8种基本数据类型,一个字节(byte)等于8位(bit)下面这段代码看似简单,但是行行坑。看看这几行代码,哪几行对,哪几行错,输出的结果又是多少呢?(答案最文章末尾,先自己做做看)public void test() { short s = 5; int b; s = s - 2; b = s - 2; System.out.println(原创 2021-07-02 22:46:36 · 127 阅读 · 2 评论 -
重载(Overload)和重写(Override)的区别
重载(OverLoad)首先一个方法是由访问控制符 修饰符 返回值 方法名 (参数){方法体}组成的。原创 2020-12-05 02:14:35 · 403 阅读 · 0 评论 -
静态代码块、静态方法、静态变量、普通代码块、构造方法的执行顺序。
静态代码块、静态方法、静态变量、普通代码块、构造方法的执行顺序。定义一个父类Testpublic class Test { static int age = 10; // 静态变量age static { System.out.println("Test静态代码块"); } { System.out.println("Test普通代码块"); } public static void exam() {原创 2020-12-01 18:11:27 · 4360 阅读 · 6 评论 -
String、StringBUffer、StringBUilder三者的异同点
这里写目录标题String类String的不可变性String对象创建的几种方式String的拼接String类与基本数据类型与包装类之间的转换String和字符数组的转换String和字节数组之间的转换String、StringBuffer、StringBuilder三者的异同问题1:为什么输出length是3而不是19问题2:如果添加的数据底层数组装不下了,如何扩容?String类public final class Stringextends Objectimplements Serializ原创 2021-01-22 02:11:53 · 295 阅读 · 0 评论 -
Java中多线程启动调用的是start()方法而不是run()方法
Java中多线程启动调用的是start()方法而不是run()方法 为什么多线程的启动不直接使用run()方法而必须使用Thread类中的start()方法呢?为什么调用的是start()方法,执行的确实run()方法呢? 如果想要弄清楚这个问题,最好的做法就是查看一下start()方法的实现操作,可以直接通过源代码观察。 public abstract void run(); //Runnable接口中的run()方法 @Override public void run() {原创 2021-01-18 17:39:41 · 708 阅读 · 1 评论 -
网络编程及案例
基本概念IP:对应着网络中唯一的主机端口号: 端口号用来标识正在计算机上运行的进程(程序),范围是0~65535InetAddress类This class represents an Internet Protocol (IP) address.在Java中,使用InetAdress类来表示一个IP地址。InetAddress类构造器私有化了,需要通过getByName(String host)、getLocalHost()来实例化对象。常用的方法有getHostName()、getHostA原创 2021-01-18 13:29:00 · 565 阅读 · 0 评论 -
Comparable和Comparator的区别
Comparable 自然排序Java中很多类都实现类Comparable接口,以下是String类的部分源码,可以看出String是把底层的char[]数组中各个元素挨个比较进行排序public final class String implements java.io.Serializable, Comparable<String>, CharSequence{public int compareTo(String anotherString) { int le原创 2021-01-15 21:40:59 · 172 阅读 · 1 评论 -
Lambda表达式从入门到精通(一篇搞懂)
Lambda表达式范例:观察传统开发中的问题范例:使用Lambda表达式实现与之前完全一样的功能Lambda表达式的几种格式使用Lambda表达式(无参)使用Lambda表达式(有参)使用Lambda表达式简化(再度简化Lambda表达式,把return语句也省略)方法引用引用静态方法引用实例化对象中的方法引用特定类型的方法引用构造方法内建函数式接口功能型函数式接口消费型函数式接口供给型函数式接口断言型函数处理:进行判断处理 从JDK1.8开始为了简化使用者进行代码的开发,专门提供有Lambda表达式的原创 2020-12-10 00:19:16 · 23160 阅读 · 11 评论 -
内部类基本操作(基础)
内部类在类之中的基本组成就是成员属性与方法,但是在任何语言里面结构也是允许嵌套的,所以在一个类的内部可以定义其他的类,这样的类就成为内部类。内部类的基本定义如果说到内部类肯定其本身是一个独立且完善的类结构,在一个类的内部除了属性和方法之外可以继续使用class定义内部类。范例:内部类的基本定义package org.demo.innerclass;class Outer { //Outer表示外部类 private String msg = "www.mldn.cn"; //私有成员原创 2020-12-09 13:21:43 · 400 阅读 · 0 评论 -
JAVA JDK下载与安装以及配置环境变量(超详细,新手必看,附下载地址!)
JAVA JDK安装与环境变量配置(超详细)JDK的下载进入 进入ORICLE官网,如图选择往下滑找到JAVA,然后点击Download Java now选择一款你需要的jdk安装下载,单击download我的电脑是Windows 64位的 故选择这项把框框勾选上,就可以下载啦!JDK安装以JDK8为例,单击下一步将C盘修改为其他盘符,后面使用默认路径,然后单击下一步。安装完毕后弹出JRE安装,直接单击×退出即可,安装JDK时已经包含了JRE,不需要再为JRE再特别安装一个位原创 2020-11-26 13:43:42 · 407 阅读 · 2 评论
分享