![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA基础
JAVA基础SE
时间不会赖着不走
这个作者很懒,什么都没留下…
展开
-
浅谈序列化与transient关键字
1,Java中如果需要对象在网络中传输,那么就需要序列化,对应实现就是实现Serializable接口。2,一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。3, 被static关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。静态变量不是对象状态的一部分,因此它不参与序列化。🔥一个人可以掌握知识,但只有与他人交流才能形成智慧。原创 2024-03-21 13:28:42 · 922 阅读 · 3 评论 -
Java快速导出数据(List)到CSV文件
🔥一个人可以掌握知识,但只有与他人交流才能形成智慧。📝 欢迎大家关注博主公众号 Rockey小何同学 添加博主微信:he18339193956进群,一起学习,一起成长,一起提高认知。🏆 我坚信人与人之间的差距是表面上是财富的差距,本质上是大脑中认知的差距,我们下期再见。原创 2023-06-07 12:00:42 · 3427 阅读 · 2 评论 -
Java中float,double科学计数法问题
说明浮点数,小数点前面超过7位,就是说8位之后就会用科学计数法表示。原创 2023-03-23 23:29:02 · 344 阅读 · 1 评论 -
IDEA热部署不生效解决方案(亲测有效)
热部署原创 2023-02-15 16:21:34 · 841 阅读 · 0 评论 -
JAVA中函数式接口-------Function ,BiFunction计算转换接口
Function和BiFunction属于函数式接口,那么什么是函数式接口呢?原创 2023-02-12 23:17:12 · 819 阅读 · 0 评论 -
JAVA函数式编程-Stream流学习
Lambda是JDK8中一个语法糖。他可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。 Java8的Stream使用的是函数式编程模式,如同它的名字一样,它可以被用来对集合或数组进行链状流式的操作。可以更方便的让我们对集合或数组操作。 我们在编写代码的时候出现最多的就是空指针异常。所以在很多情况下我们需要做各种非空的判断。if(author!= null) { 尤其是对象中的属性还是一个对象的情况下。原创 2023-02-12 22:02:24 · 922 阅读 · 0 评论 -
一个微小的调优去掉嵌套的if,else
精简代码。原创 2023-01-07 18:45:36 · 147 阅读 · 0 评论 -
Java中数组和集合输出不一致的问题
为什么可以读取list 是因为调用了List的toString方法,下面就是查看源码发现在AbstractCollection类型可以看到重写了 toString 方法。查询得知 List的构造方法是ArrayList(),toString调用的是ArrayList中的toString方法。那么就有疑问,list 怎么会调用ArrayList中方法,后来调用反射得到其类型的姓名发现。过程如下: 下面是一个配置文件yml,里面配置了多个属性。进而发现调用的是toString方法。原创 2023-01-07 16:58:14 · 297 阅读 · 0 评论 -
JAVA中substring()方法和indexOf()方法 以及lastIndexOf
indexOf()方法用于在String类的对象中查找子字符串,方法返回一个整数值,为子字符串的开始位置。字符串world最后一次出现的位置:37。Java查找字符串最后一次出现的位置。原创 2022-08-21 18:16:04 · 629 阅读 · 1 评论 -
Java 获取当前日期并且实现日期的格式化
实现当前事件减去100天并且格式化为下图所示。原创 2022-08-21 17:16:30 · 2379 阅读 · 0 评论 -
Java中访问权限修饰符(public , private , protected)
public表示全局的,可以公共访问权限,如某个字段/方法,使用了public修饰,则可以在当前项目中任何地方访问.不写(缺省)表示包私有,表示包访问权限.访问者的包必须和当前定义类的包相同才能访问.(两个类在同一个包下)protected表示子类访问权限,同包中的可以访问,即使不同包,但是有继承关系,也可以访问.private表示私有的,表示类访问权限.只能在本类中访问,离开本类之后,就不能直接访问....原创 2022-07-16 19:25:34 · 8477 阅读 · 0 评论 -
Java集合与数组的区别
数组和集合的定义一、数组数组是java语言内置的数据类型,他是一个线性的序列,所有可以快速访问其他的元素,数组和其他语言不同,当你创建了一个数组时,他的容量是不变的,而且在生命周期也是不能改变的,还有JAVA数组会做边界检查,如果发现有越界现象,会报RuntimeException异常错误,当然检查边界会以效率为代价。二、集合JAVA还提供其他集合,list,map,set,他们处理对象的时候就好像这些对象没有自己的类型一样,而是直接归根于Object,这样只需要创建一个集合,把对象放进去,取出时转原创 2022-05-23 12:36:27 · 665 阅读 · 0 评论 -
Java 字符串数组定义_「string数组」string 数组怎么定义
string数组的定义有三种:String arr[] = new String[10]; //创建一个长度为10的String 类型数组。String arr[] = {“张三”,“李四”};这个是最常用的 String[] arr = new String[10];原创 2022-05-23 07:18:18 · 17902 阅读 · 0 评论 -
IDEA中遍历数组快捷键
快捷键就是itar String[] arr = new String[lastCellNum]; for (int i = 0; i < arr.length; i++) { String s = arr[i]; }原创 2022-05-21 15:17:13 · 2155 阅读 · 0 评论 -
List集合中 中contains方法的使用详解
import java.util.ArrayList;import java.util.List; public class Test { public static void main(String[] args) { List<String> listString = new ArrayList<String>(); listString.add("张三"); listString.add("李四"); listString.add("王五");原创 2022-05-20 21:07:39 · 2079 阅读 · 0 评论 -
IntelliJ IDEA 删除当前行快捷键
Ctrl+Y原创 2022-05-19 13:29:32 · 625 阅读 · 2 评论 -
java遍历List常用的两种方式
如对一个String类型的列表List<String> stringList = new ArrayList<>();stringList.add("张三");stringList.add("李四");stringList.add("王五");遍历方式一:for循环,以索引获取元素for (int i = 0; i < stringList.size(); i++) { String str = stringList.get(i); System.原创 2022-05-09 18:57:06 · 660 阅读 · 0 评论 -
Java里面的GC(垃圾回收机制)
一、如何确定某个对象是“垃圾”?这一小节先了解一个最基本的问题:如果确定某个对象是“垃圾”?既然垃圾收集器的任务是回收垃圾对象所占的空间供新的对象使用,那么垃圾收集器如何确定某个对象是“垃圾”?通过什么方法判断一个对象可以被回收了。在java中是通过引用来和对象进行关联的也就是说如果要操作对象,必须通过引用来进行。那么很显然一个简单的办法就是通过引用计数来判断一个对象是否可以被回收。不失一般性,如果一个对象没有任何引用与之关联,则说明该对象基本不太可能在其他地方被使用到,那么这个对象就成为可被回收的对象原创 2022-04-20 14:18:17 · 2833 阅读 · 0 评论 -
Java接口与抽象类的区别
相同点:都不能被实例化。都能包含抽象方法。不同点抽象类与接口紧密相关。然接口又比抽象类更抽象1.类可以实现无限个接口,但仅能从一个抽象类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问的。2.抽象类当中可以存在非抽象的方法,可接口不能且它里面的方法只是一个声名必须用public来修饰没有具体实现的方法。接口里面的方法全是抽象方法3.抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static fainl)。4.抽象类是对象的抽象,然接原创 2022-04-19 20:31:50 · 342 阅读 · 0 评论 -
Intellij IDEA--取消双击shift搜索的方法
ctrl+shift+alt+/ => registry=> 勾选“ide.suppress.double.click.handler”即可原创 2022-04-09 12:52:31 · 441 阅读 · 0 评论 -
创建实现Java的接口类的对象
接口是不能实例化的,即不能new一个接口出来,但是可以创建一个接口实现类的对象;public interface Jiekou {undefined public void s();}//实现接口的classpublic class Jiekouimple implements jiekou{undefined public void s();}public class Test( public static void main(String[] args) {unde原创 2022-04-08 11:29:14 · 2930 阅读 · 2 评论 -
Java中为什么要将对象的属性私有化
封装封装的概念就是属性私有化,提供公有的方法访问私有的属性。为了隐藏对象的细节,让使用者不能随意访问数据,只能通过设计好的set/get方法来访问和修改数据。保证了数据的安全性,同时也确保了代码的可维护性。过程为了实现良好的封装性,我们通常将类的成员变量声明为private,再通过public的方法来对这个变量进行访问。对一个变量的操作,一般都有读取和赋值操作,我们分别定义两个方法来实现这两种操作,一个是getXxx()(Xxx表示要访问的成员变量的名字),用来读取这个成员变量操作,另外一个是原创 2022-04-07 18:31:37 · 2929 阅读 · 0 评论 -
数据库中的约束
概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。分类:主键约束:primary key非空约束:not null唯一约束:unique外键约束:foreign key非空约束:not null,值不能为null创建表时添加约束CREATE TABLE stu(id INT,NAME VARCHAR(20) NOT NULL – name为非空);创建表完后,添加非空约束ALTER TABLE stu MODIFY NAME VARCHAR(2..原创 2022-04-01 20:37:25 · 248 阅读 · 0 评论 -
Java中的网络编程
TCP通信程序TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分为客户端(Client)与服务端(Server)。两端通信时步骤:服务端程序,需要事先启动,等待客户端的连接。客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。在Java中,提供了两个类用于实现TCP通信程序:客户端:java.net.Socket 类表示。创建Socket对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信。服务端:java.net.ServerSocket 类原创 2022-03-31 13:18:38 · 112 阅读 · 0 评论 -
Java中的序列化
概述Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。对象的数据、对象的类型和对象中存储的数据信息,都可以用来在内存中创建对象。看图理解序列化:ObjectOutputStream类java.io.ObjectOutputStream ` 类,将Java对象的原始数据类型写出到文件,实现原创 2022-03-31 11:41:19 · 182 阅读 · 0 评论 -
Java中的IO缓冲流
概述缓冲流,也叫高效流,是对4个基本的FileXxx 流的增强,所以也是4个流,按照数据类型分类:字节缓冲流:BufferedInputStream,BufferedOutputStream字符缓冲流:BufferedReader,BufferedWriter缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。字节缓冲流构造方法public BufferedInputStream(InputStream in)原创 2022-03-31 11:13:36 · 157 阅读 · 0 评论 -
Java中的IO(字节流和字符流)
什么是IOJava中I/O操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。IO的分类根据数据的流向分为:输入流和输出流。输入流 :把数据从其他设备上读取到内存中的流。输出流 :把数据从内存 中写出到其他设备上的流。格局数据的类型分为:字节流和字符流。字节流 :以字节为单位,读写数据的流。字符流 :以字符为单位,读写数据的流。IO的流向顶级父类们字节流一切文件数据(文本、图片、视频等)在存储时,都是以二进制数字的形式保原创 2022-03-31 10:50:17 · 257 阅读 · 0 评论 -
Java中的File类
概述java.io.File` 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。构造方法public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。public File(File parent, String child) :从父抽象路径名和子路径名字符原创 2022-03-30 15:59:07 · 1224 阅读 · 0 评论 -
Java中的Lambda表达式
函数式编程思想概述在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情”。相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做。面向对象的思想: 做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情.函数式编程思想: 只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程冗余的Runnable代码传统写法当需要启动一个线程去完成任务时,通常会通过java.原创 2022-03-30 15:45:40 · 131 阅读 · 0 评论 -
Java中的线程池
线程池思想概述我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这样的效果。今天我们就来详细讲解一下Java的线程池。线程池概念**线程池:**其实就是一个容纳多个线程的容器,其中的线程可以反复原创 2022-03-30 11:36:21 · 154 阅读 · 0 评论 -
Java中的线程状态总结
线程状态概述当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,有几种状态呢?在API中 java.lang.Thread.State 这个枚举中给出了六种线程状态:这里先列出各个线程状态发生的条件,下面将会对每种状态进行详细解析Timed Waiting(计时等待)Timed Waiting在API中的描述为:一个正在限时等待另一个线程执行一个(唤醒)动作的线程处于这一状态。单独的去理解这句话,真是玄之又玄,其实我们在之前的操作中已经接触过这个原创 2022-03-30 11:03:13 · 239 阅读 · 0 评论 -
Java中的多线程安全问题及解决方法
线程安全如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。我们通过一个案例,演示线程的安全问题:电影院要卖票,我们模拟电影院的卖票过程。假设要播放的电影是 “葫芦娃大战奥特曼”,本次电影的座位共100个(本场电影只能卖100张票)。我们来模拟电影院的售票窗口,实现多个窗口同时卖 “葫芦娃大战奥特曼”这场电影票(多个窗口一起卖这100张票)需要窗口,采用线程对象来模拟;需要票,Runnab原创 2022-03-30 10:51:32 · 2265 阅读 · 0 评论 -
Java中的多线程创建方式
线程与进程进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程创建线程类方式一(继承Thread类)Java使用j原创 2022-03-29 22:15:36 · 91 阅读 · 0 评论 -
Java中异常
异常概念异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是:异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。异常体系异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable,其下有两个子类:java.lang.Err原创 2022-03-28 19:41:43 · 90 阅读 · 0 评论 -
Java中的泛型
泛型泛型:可以在类或方法中预支地使用未知的类型。使用泛型的好处将运行时期的ClassCastException,转移到了编译时期变成了编译失败。避免了类型强转的麻烦。什么叫ClassCastExceptionpublic class GenericDemo { public static void main(String[] args) { Collection coll = new ArrayList(); coll.add("abc"); coll.add("itcast"原创 2022-03-28 11:11:44 · 126 阅读 · 0 评论 -
Java中的包装类及其作用
Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:装箱与拆箱基本类型与对应的包装类对象之间,来回转换的过程称为”装箱“与”拆箱“:装箱:从基本类型转换为对应的包装类对象。拆箱:从包装类对象转换为对应的基本类型。基本类型与字符串之间的转换除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本原创 2022-03-26 20:59:11 · 968 阅读 · 0 评论 -
Java中的Object类Date类Calendar类System类StringBuilder类
Object类java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。如果一个类没有特别指定父类, 那么默认则继承自Object类。日期时间类Date类java.util.Date`类 表示特定的瞬间,精确到毫秒public long getTime()` 把日期对象转换成对应的时间毫秒值。DateFormat类java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通原创 2022-03-26 20:56:20 · 167 阅读 · 0 评论 -
Java中的final finally finalize关键字
final关键字修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值finallyfinally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。finalizefinalize是一个方法,属于Object类的一个方法,而Object类是所有类的父类,该方法一般由垃圾回收器来调用,当我们调用System.gc() 方原创 2022-03-26 19:02:49 · 830 阅读 · 0 评论 -
Java中的接口
接口的定义它与定义类方式相似,但是使用 interface 关键字。它也会被编译成.class文件,但一定要明确它并不是类,而是另外一种引用数据类型。接口的使用,它不能创建对象,但是可以被实现( implements ,类似于被继承)。一个实现接口的类(可以看做是接口的子类),需要实现接口中所有的抽象方法,创建该类对象,就可以调用方法了,否则它必须是一个抽象类。定义格式public interface 接口名称 { // 抽象方法 // 默认方法 // 静态方法 // 私有方法}实现原创 2022-03-26 18:53:10 · 75 阅读 · 0 评论 -
Java中的抽象类
抽象类父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有意义,**而方法主体则没有存在的意义了。我们把没有方法主体的方法称为抽象方法。**Java语法规定,包含抽象方法的类就是抽象类。定义抽象方法 : 没有方法体的方法。抽象类:包含抽象方法的类。抽象方法使用 abstract 关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。public abstract void run();抽象类abstract clas原创 2022-03-26 17:56:00 · 157 阅读 · 0 评论