
Java基础
文章平均质量分 54
以基础知识为主线,既是对自己学习的总结,也是帮助学习java的小伙伴提供一些小知识,更是与各位大佬交流的前提!会持续更新相关内容~
Fish_Vast
清清楚楚记昨天,扎扎实实抓今天,开开心心待明天。向昨天取经验,向今天拿成果,向明天得动力。翻看昨天,思索今天,期待明天。海阔凭鱼跃,天高任鸟飞!努力让自己成为一个有内涵,懂技术,会思考的奋斗者!
展开
-
Java导出自定义Excel表格,一套组合拳解决
很多框架中都能直接支持自动生成关于单表的增删改查操作的前后端代码,但是复杂的多表操作就无法做到,因为复杂的业务操作跟着需求走,自定义Excel表格导出也是如此。中间涉及到的包都是Alibaba中的依赖包,能自动导入,大家可以多点进去看看里面内部的实现机制。🍪标记好需要合并的字段信息后,核心的合并策略参考以下代码,这里不做过多的阐述。原创 2023-02-13 16:58:23 · 3199 阅读 · 4 评论 -
如何动态生成列字段?请看向这里哟
🐠一般而言,某个简单查询接口涉及到得表结构不超过三个。如果不是单表操作的话,多个表中间用到联合查询的SQL也可以解决相关问题。但是,事与愿违的是我们的业务是跟着场景走的,并不是所有的业务就仅仅让我们用两三张表就解决问题了。“技术为本,场景为王”!本人是非常认同这种说法的,因为没有好的业务场景,我们开发人员拥有良好的开发技术也没有用武之地。原创 2023-02-10 17:12:34 · 1110 阅读 · 0 评论 -
关于如何获取上周均值的实时数据思路,吾之解合君意否?
🍰🍰🍰整个流程下来,主要是在代码层面对数据进行了一系列的处理。思路并不是一成不变的,需要时时刻刻撬动自己的脑筋才能把一个需求问题搞定。之前本人一直想在sql层面一次性把问题给解决了,左思右想最后发现自己根本不知道怎么动手合适。最终想到用传参到sql中和自定义方法解决问题,面临自己之前没接触过的数据库确实很多地方都是知识盲区,这个时候要多请教一下解决过相关业务的同事,多在网上寻求解决方案,希望自己的这点经历也能成为你们的“答案”🍭🍭🍭!!✈️✈️✈️。原创 2022-12-10 19:28:32 · 1197 阅读 · 2 评论 -
Java接口返回字段如何排序?不慌,可能这就是答案
目前做的需求是做的实时数据报表,可能是每五分钟会有上百条数据的上报,在界面上需求的意思是我想看到最新的前五十条数据,而且需要是直接看到最新的时间,那么时间字段自然而然要摆在报表的第一位会更加的直观明朗。但可能未留意过我们的实体类具备有自排序的功能,原本我也是没留意到这个细节部分的,直到我接到一个需求让我将“统计时间”放在报表的第一列我才意识到,好像搞了这么久的基础开发还没有这样做过返回字段自定义排序的功能。❄️像以上的实体类,不管是返回类本身,还是返回集合,统计时间都是接口返回字段的首个。原创 2022-12-01 21:27:14 · 1891 阅读 · 0 评论 -
Java泛型,这个范可真行
🎨①泛型类及泛型接口的的声明例:interface List 和 Class Demo其中,T,K,V并不代表值,而是表示类型。这里使用任意字母皆可。常用字母T表示,为Type的缩写。🎨②泛型类及泛型接口的实例化例:List list = new ArrayList( );将集合中的内容限制为一个特定的数据类型,即是泛型的核心思想/**......原创 2022-08-17 10:36:43 · 228 阅读 · 0 评论 -
Java集合,全体起立
⛳️1、集合、数组都是对多个数据进行存储操作的结构,简称Java容器。说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt, .jpg, .avi, 数据库)🏄2.1、数组在存储多个数据方面的特点:① 一旦初始化以后,其长度就确定了;② 数组一旦定义好,其元素的类型也就确定了。比如:String [ ] arr;🏄2.2、数组在存储多个数据方面的缺点:① 一旦初始化以后,其长度就不可修改;.........原创 2022-08-15 16:51:45 · 208 阅读 · 0 评论 -
我与Java的相遇,相知,相爱
❤️ 前言 ❤️ 谨以此篇博文致敬Java,恭喜Java语言诞生至今已有27年的历程。本人是97年出生,Java比我还大了两岁,O(∩_∩)O哈哈,可谓是前人栽树,后人乘凉呀!Java作为一门跨时代的编程语言,普及型不言而喻,涉及到各个行业领域都有它的身影。目前我大多数的同学和前辈们都是选用Java作为他们的第一技术语言,易上手,易操作,稳定性强,也很容易理解。现如今,我也跻身于Java开发这一行业中,27年了,27岁的Java先生/女士,祝您生日快乐呀!🎵 相遇,青春与懵懂 🎵 80-原创 2022-05-25 12:01:10 · 1702 阅读 · 2 评论 -
Java统计数组中重复数及重复个数
鉴于这几天在回答过程中获取相关题主所提出的相关问题,在此也记录回答中一个常见问题,如果是刚刚起步学习编程的小伙伴,统计数组中重复数及重复个数这个问题是很容易碰到,感觉大学中的任课老师也喜欢出此类型的题目让各位练习。虽然本人也是最近才开始回答问题的,但是我能担保我回答的每一个问题都很用心,即便是题主后续继续追问我也是会很耐心花时间给你们解答的,因为在回答过程中我自己也是收获满满,既是帮助各位小伙伴,也是让自己能够温故而知新,一举两得,何乐不为呢?......原创 2022-04-08 11:16:51 · 8578 阅读 · 0 评论 -
增强型for循环的使用,看这篇就够了
Java jdk5.0新增了foreach循环,用来遍历集合、数组,这就是所谓的增强for循环。原创 2022-03-29 16:59:42 · 10083 阅读 · 2 评论 -
Java之枚举类与注解
目录1. 枚举类与注解1.1 枚举类1.1.1 枚举类的使用1.1.2 如何定义枚举类1.1.3 enum类中的常用方法1.1.4 使用enum关键字定义的枚举类实现接口的情况1.2 注解(Annotation)1.2.11.2.21. 枚举类与注解1.1 枚举类1.1.1 枚举类的使用1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类;2.当需要定义一组常量时,强烈建议使用枚举类;3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。1.1.2 如何定义枚举类方式一:原创 2021-10-08 10:01:29 · 964 阅读 · 0 评论 -
Java之常用类
1 常用类1.1 字符串相关的类1.1.1 String的使用String:字符串,使用一对""引起来表示。1.String声明为final的,不可被继承。2.String实现了Serializable接口:表示字符串是支持序列化的;实现了Comparable接口:表示String可以比较大小。3.String内部定义了final char[ ] value 用于存储字符串数据。4.String:代表不可变的字符序列。简称:不可变性。体现"不可变性":(1)当对字符串重新赋值时,需要重新指原创 2021-09-27 12:18:41 · 847 阅读 · 0 评论 -
Java之多线程
多线程基本概念:程序、进程、线程●程序(program): 是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。●进程(process): 是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期♢如:运行中的QQ、微信等;♢程序是静态的,进程是动态的;♢打开我们的Windows任务管理器,就可以看到我们动态中的进程。●线程(thread): 进程可进一步细化为线程,是一个程序内部的一条执行路径。进程与线程的关原创 2021-09-09 20:40:18 · 386 阅读 · 0 评论 -
Java之异常处理
异常处理一、异常的概念●异常:在Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发中的语法错误和逻辑错误不是异常)●Java程序在执行过程中所发生的异常事件可分为两类:▷Error:Java虚拟机无法解决的严重问题。▷Exception:其他因为编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如:♢空指针访问♢试图读取不存在的文件♢网络连接中断♢数组角标越界●Exception又可以分为两类,分别是:编译时异常和运行时异常,如下图所示:●异常体原创 2021-09-01 16:56:17 · 1220 阅读 · 2 评论 -
Java抽象类的匿名子类
抽象类的匿名子类涉及到匿名的东西,都是只用一次,目的就是为了省事!(有时候不一定用,但是为了看得懂代码,这个还是要有所了解的)1.非匿名类的匿名对象2.匿名类的非匿名对象3.匿名子类的非匿名对象4.匿名子类的匿名对象匿名说到底就分为以上四种情况,下面将从程序中弄清楚这四种情况的用法:package com.java.oop5;/** * @description: 抽象类的匿名子类 * 涉及到匿名的东西,都是只用一次,目的就是为了省事! * 1.非匿名类的匿名对象 * 2.匿名类的原创 2021-08-11 11:15:29 · 838 阅读 · 4 评论 -
Java之抽象类与抽象方法
抽象类与抽象方法1.abstract可以用来修饰的结构:类、方法2、abstract修饰类:抽象类①此类不能实例化;②抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程);③开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作。3、abstract修饰方法:抽象方法①抽象方法只有方法的声明,没有方法体(比如:public abstract void run( ););②包含抽象方法的类,一定是一个抽象类。反之,抽象类中可以没有抽象方法;③若子类重写了父类中的原创 2021-08-11 09:42:43 · 205 阅读 · 0 评论 -
Java之接口(interface)的使用
接口的使用1、接口使用interface来定义2、Java中,接口和类是并列的两个结构3、如何定义接口中的成员3.1、JDK7及以前,只能定义全局常量和抽象方法①全局常量:public static final…但是书写的时候,可以省略不写;②抽象方法:public abstract…,也可省略不写。3.2、JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法①接口中定义的静态方法,只能通过接口来调用;②通过实现类的对象,可以调用接口中的默认方法,如果实现类重写了接口中的原创 2021-08-10 17:17:26 · 5633 阅读 · 0 评论 -
Java关键字---static
static关键字的使用:可以用来修饰:属性、方法、代码块、内部类1、修饰属性:静态变量(或类变量)(1)属性,按是否用static修饰,分为:静态变量 vs 非静态变量(实例变量)实例变量:创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性。当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性值的修改;静态变量:创建了类的多个对象,多个对象共享同一个静态变量。当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时,是修改过了的。(2)static修饰属性的说明:①原创 2021-08-10 08:43:39 · 196 阅读 · 0 评论 -
Java中Object类中equals()方法的使用
== 和equals()区别一、==的使用==:运算符:可以用在基本数据类型变量和引用数据类型变量中。①如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)②如果比较的是引用数据类型变量:比较两个对象的地址值是否相同。(即两个引用是否指向同一实体)二、equals()方法的使用①是一个方法,而非运算符;②只能适用于引用数据类型;③Object类(Java中的根父类)中equals()的定义:public boolean equals (Object objec原创 2021-08-02 16:30:54 · 3322 阅读 · 0 评论 -
Java多态性练习:调用方法和属性
一个程序搞懂Java多态性的使用Base base = sub,这是多态的使用,在下面的代码中已经对非多态和多态分别调用方法和属性进行了描述:package com.java.oop3;/** * @ClassName AttributeMethodTest * @Description: Java多态性的练习:调用方法和属性 * @Author Seven * @Date 2021/7/30 15:23 * @Version 1.0 **/public class Attribu原创 2021-07-30 15:40:04 · 413 阅读 · 0 评论 -
Java多态性
多态1.理解多态性:可以理解为一个事物的多种形态。2.何为多态性:对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)3.多态的使用:虚拟方法调用有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。★总结:编译,看左边;运行,看右边。Person person = new Man( );“看左边”:看的是父类的引用(父类中不具备子类特有的方法);“看右边”:看的是子类的对象(实际运行的是子类重写父类的方法)。4.多态原创 2021-07-30 10:56:17 · 118 阅读 · 0 评论 -
Java关键字——super
Java关键字——super(1)super理解为:父类的(2)super可以用来调用:属性、方法、构造器(3)super的使用:(调用属性、方法)①我们可以在子类的方法或构造器中,通过使用“super.属性”或“super.方法”的方式,显式的调用父类中声明的属性或方法。但是,通常情况下,我们习惯省略“super”;②特殊情况:当子类和父类中定义了同名的属性时,我们想要在子类中调用父类中声明的属性,则必须显式的使用“super.属性”的方式,表明调用的是父类中声明的属性;③特殊情况:当子类重原创 2021-07-29 16:55:07 · 167 阅读 · 0 评论 -
Java的继承性和方法重写
方法重写需要建立在继承之上,先讲继承性,再说方法重写:(一)继承(1)Java继承性的好处:①减少了代码的冗余,提高了代码的复用性;②便于功能的扩展;③为之后的多态性的使用,提供了前提。(2)继承性的格式:class A extends B { }A:子类 subclassB:父类 superclass①体现:一旦子类A继承父类B以后,子类A中就获取了父类B中声明的结构:属性、方法;特别的,父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私有的结构。只是因为原创 2021-07-29 11:09:42 · 776 阅读 · 0 评论 -
Java this关键字
用Account(账户)、Customer(客户)、Bank(银行)、BankTest(测试)四个类程序:讲述Java面向对象编程中this关键字、构造器、对象数组、方法调用等相互结合的使用本人以前的文章已经涉及过构造器、对象数组及方法调用的相关知识,这里讲述一下this关键字的使用: this关键字是用来调用属性、方法 、构造器 (1)它在方法内部使用 -->当前对象 (2)它在构造器内部使用 -->当前正在创建的对象 我们用this关键字来区分属性和局部变量代码如下:pack原创 2021-07-28 15:48:50 · 171 阅读 · 0 评论 -
Java构造器的使用
一、构造器的作用(1)创建对象(2)初始化对象的信息二、说明(1)如果没有显式的定义类的构造器的话,则系统默认提供一个空参构造器;(2)定义构造器的格式:权限修饰符 类名(形参列表){ };(3)一个类中定义的多个构造器,彼此构成重载;(4)一旦显式的定义了类的构造器之后,系统就不再提供默认的空参构造器;(5)一个类中,至少会有一个构造器。下面的程序是利用构造器的知识求解三角形的面积package com.java.oop;/** * @ClassName Triangle *原创 2021-07-27 15:17:21 · 170 阅读 · 0 评论 -
Java的封装思想
Java中通过将属性值声明为私有的(private),再提供公共的(public)方法:getXxx( )(获取)和setXxx( )(设置)实现对该属性的操作,实现以下的几个目的:(1)隐藏一个类中不需要对外提供的实现细节;(2)使用者只能通过事先定制好的方法来访问数据,可以方便加入控制逻辑,限制对属性的不合理操作;(3)便于修改,增强代码的可维护性。下面通过一小段代码体现其封装性的思想:package com.java.oop;import java.util.Scanner;/** *原创 2021-07-27 11:04:04 · 294 阅读 · 0 评论 -
Java递归方法求n的阶乘,n的数列和斐波那契数列
通过递归方法求:(1)n的阶乘;(2)n的数列;(3)斐波那契数列package com.java.oop;import java.util.Scanner;/** * @ClassName Recursion * @Description: 求n的阶乘。 * @Author Seven * @Date 2021/7/26 17:18 * @Version 1.0 **/public class Recursion { public static void main(Str原创 2021-07-27 09:39:20 · 420 阅读 · 0 评论 -
Java的值传递机制
Java方法的参数传递方式只有一种:值传递(1)形参是基本数据类型,实参将“数据值”传递给形参;(2)形参是引用数据类型,实参将“地址值”传递给形参。(1)基本数据类型在被创建时,在栈上给其划分一块内存,在数值存储在栈上。(栈用来存储局部变量,在作用域之中有效果)(2)引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。(堆用来存储new出来的东西,程序运行结束才销毁)package com.java.oop;原创 2021-07-26 16:23:30 · 235 阅读 · 0 评论 -
Java对象数组的使用;不同类与同类中属性和方法的调用;方法的封装
一个Java程序展示(1)对象数组的使用;(2)不同类、同类中属性与方法的调用;(3)方法的封装对象数组:数组中每一个元素为一个对象。为对象数组分配内存空间:Animal [] animal = new Animal[10];对象数组动态初始化并实例化:for(int i = 0; i< animal.length; i++){ animal[i] = new Animal();}对象数组的定义其实与一般数组类似,唯一的区别在于它需要为每一个元素进行实例化\color{Red}{对原创 2021-07-26 15:42:15 · 1658 阅读 · 0 评论 -
Java二分查找算法
二分法查找,数组需要为有序数组。下面将二分查找算法的思想简单用图展示一下(理解一下为本人粗糙的手工绘图)package com.java.arraysdemo;import java.util.Scanner;//二分法查找,数组需要是有序的。public class BinarySearch { public static void main(String[] args) { int [] array = new int[]{-99,-56,-45,-12,12,22,原创 2021-07-22 09:44:10 · 127 阅读 · 0 评论 -
Java求数值型数组中元素的最大值、最小值、总和与平均值
用随机数组求常用算法package com.java.arraysdemo;import java.util.Random;//求数值型数组中元素的最大值、最小值、平均数和总和等。public class ArrayExcise { public static void main(String[] args) { int [] array = new int[10]; for (int i = 0; i < array.length; i++) {原创 2021-07-21 17:36:21 · 2167 阅读 · 0 评论 -
Java实现(1~20)回形数方阵
从键盘输入一个任意正整数 (不要太大,不然控制台也装不下,哈哈),则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字2,则程序输出:1 24 3输入数字3,则程序输出:1 2 38 9 47 6 5 接触算法不算太久,拿这种题目练手,刚开始真的有点烧脑袋啊,看了许久别人的代码,最后还是自己悟出了这里面的(个人思想),自己用手画了一张图,还有通过自己的想法码出了一小段代码,还发现了一个小问题,就是遇到奇数的时候,数字是要多计算一个的,原创 2021-07-21 16:57:34 · 769 阅读 · 2 评论 -
Java创建int类型数组,数组元素之间互不相等
创建一个长度为6的int类型的数组,要求数组元素取值为1~30之间,并且两两之间不等。(用两种方法进行解决)方法一package com.java.arraysdemo;import java.util.Random;//创建一个长度为6的int类型的数组,要求数组元素取值为1~30之间,并且两两之间不等。//方法一public class ArrayDemo { public static void main(String[] args) { int [] array原创 2021-07-21 14:55:19 · 2227 阅读 · 0 评论 -
Java随机产生两位数正整数
使用random函数产生随机数package com.java.demo;import java.util.Random;public class RandomNumber { public static void main(String[] args) { int number = (int)(Math.random()*90 + 10); System.out.println("随机产生的二位数为:"+number); }}...原创 2021-07-21 11:40:46 · 7496 阅读 · 0 评论 -
Java写任意行的杨辉三角
使用二维数组打印任意行的杨辉三角package com.java.arraysdemo;import java.util.Scanner;//打印一个任意输入行的杨辉三角/*1. 第一行有 1 个元素, 第 n 行有 n 个元素2. 每一行的第一个元素和最后一个元素都是 13. 从第三行开始, 对于非第一个元素和最后一个元素的元素。*/public class ArrayDemo3 { public static void main(String[] args) {原创 2021-07-21 11:15:18 · 169 阅读 · 1 评论 -
Java输出int类型二维数组元素的总和
1.静态初始化二维数组2.借助.length获取二维数组的长度package com.java.arraysdemo;/** 获取二维数组中的总和* 使用array.length获取数组长度,也就是获取二维数组中的各个元素* */public class ArrayDemo2 { public static void main(String[] args) { int [][] array = new int[][]{{3,5,8},{12,9},{7,0,6,4}};原创 2021-07-21 10:01:11 · 807 阅读 · 0 评论 -
Java一维数组的使用
**从键盘读入学生成绩,找出最高分,并输出学生成绩等级。成绩>=最高分-10 等级为’A’成绩>=最高分-20 等级为’B’成绩>=最高分-30 等级为’C’其余 等级为’D**package com.java.arraysdemo;import java.util.Scanner;/** 从键盘读入学生成绩,找出最高分,并输出学生成绩等级。成绩>=最高分-10 等级为’A’成绩>=最高分-20 等级为’B’成绩>=最高分-30 等级为原创 2021-07-20 16:57:25 · 176 阅读 · 0 评论 -
Java辗转相除法求最大公约数和最小公倍数。
Java求最大公约数和最小公倍数(辗转相除法)package com.java.demo;import java.util.Scanner;public class CommonDivisor { /* 求最大公约数和最小公倍数 最小公倍数:两数相乘/最大公约数 最大公约数:辗转相除法 * */ //静态方法中不可以使用this关键字 //静态方法不能直接调用非静态方法 public static int gcd(int m, int n原创 2021-07-20 11:19:53 · 1328 阅读 · 0 评论 -
Java从键盘输入年、月、日,判断这一天是当年的第几天
仅用if,Switch-case语句实现,未涉及到算法,初学者的见解package com.java.demo;import java.util.Scanner; //导入Scanner类包,从键盘接收输入字符public class IsLeap { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入原创 2021-07-20 09:59:59 · 1416 阅读 · 0 评论 -
Java面向对象程序设计的三个特点
面向对象程序设计具有的特点1、封装性 封装是面向对象编程的核心思想,之前提及过类是作为封装对象属性和方法的载体。在实际生活中,类通常对客户隐藏了其实现的细节,这就是封装的思想。在Java中调用包或者Java已有的类,这些类都是封装好了的。 封装的思想能够保证类内部数据结构的完整性,应用封装好的类的用户只能够使用类允许公开的数据,这样能避免外部操作对内部数据的影响,提高了程序的可维护性。(其实我觉得这才是商业价值的体现之处吧,有了封装的概念才能有效地保护程序不受盗窃或攻击)图1便是封装的特性图示。原创 2021-05-14 16:40:54 · 1244 阅读 · 0 评论 -
Java中类、对象、属性和方法的认知
对Java中类,对象,属性和方法的简化理解(笔记)1.类:具有相同属性和方法的对象称之为类。类是抽象化的概念,例如:人类,鸟类等。public class Person{}public class Brid{}2.对象:世界上一切的事物都可以称之为对象。可以理解:对象是某一类中的某一个。在实际程序中,首先创建的是类,然后通过类创建对象,对象便是类的实例化。public class Person{ //创建Person类的对象 Person man = new Person();原创 2021-05-14 09:48:52 · 1574 阅读 · 4 评论