![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java基础入门
文章平均质量分 56
Java基础入门
极光雨雨
“芝士”与你分享 ———纳西妲
展开
-
Java String format 字符、数字、浮点数、符号等使用案例
Java中的方法允许你使用特定的格式化字符串来创建新的格式化字符串。这种方法非常灵活,可以用于控制数字、日期等的显示方式。下面是一些使用。原创 2024-07-02 14:31:54 · 190 阅读 · 0 评论 -
调用方返回文件流,获取文件流 inputstream 并转换为MultipartFile 或一般文件输出流下载,案例 inputstream 转 byte[]
然而,如果你的应用程序不需要直接与Spring的文件上传功能集成,直接处理原始的输入流并将其保存到文件系统或其他存储服务上可能更为直接有效。通常用于处理HTTP请求中的文件上传部分,而并非直接用于处理HTTP响应中的文件流。实例,并在一个try-with-resources块中使用它,确保即使发生异常也能正确关闭输出流。的行为,以便在后续操作中使用它,比如通过Spring框架的文件处理机制进行处理。以下是一个简化的示例,展示如何将获取的输入流包装成一个模拟的。的内容到缓冲区,并将缓冲区的内容写入。原创 2024-05-23 16:49:42 · 847 阅读 · 0 评论 -
bytes 字节数组,指定编码格式转换为一般的字符串
前提部分数据存储或者转换为字节(通过getBytes方法)后,一般获取出来的都是字节数组的数据形式转化使用string构造方法,注意导包路径(这里使用UTF-8做示例)string为java.lang包下,不是其他的同名String.// StandardCharsets来源package java.nio.charset;String columnMappingStr = new String(columnMapping, StandardCharsets.UTF_8);...原创 2021-08-20 17:50:02 · 1442 阅读 · 0 评论 -
读锁和写锁(共享锁和排他锁)介绍 以及相关类 ReentrantReadWriteLock 学习总结,使用场景
构造方法public ReentrantReadWriteLock():默认构造方法,非公平锁public ReentrantReadWriteLock(boolean fair):true 为公平锁常用APIpublic ReentrantReadWriteLock.ReadLock readLock():返回读锁public ReentrantReadWriteLock.WriteLock writeLock():返回写锁lock():加锁unlock():解锁。原创 2024-03-20 16:18:17 · 804 阅读 · 0 评论 -
Java i++ 是原子性的吗?多线程i++的结果
多线程操作i++ 的结果,结果最低 i 的值和单线程的结果一致(相当于假使了所有现场大家每次操作的时机和赋值都是一摸一样的),最大值相当于所有线程的执行结果总和,即 线程数 * 单线程的结果。i++ 操作在大多数编程语言中,包括 Java 和 C/C++ 等,并不是原子性的。AtomicInteger 提供了诸如 getAndIncrement() 方法,该方法保证了递增操作的原子性。i++ 和 ++i 都是一步完成的,只不过写法简化了而已。来实现线程安全的递增操作。i++ 不是原子性的!原创 2024-03-15 11:39:50 · 378 阅读 · 0 评论 -
synchronized底层原理 以及 公平锁和非公平锁的基本概念
如果对象的锁状态为偏向锁状态,但记录的Thread ID与当前线程的Thread ID不同,则需要撤销偏向锁,并升级为轻量级锁状态。这种情况下,锁的开销非常小。如果对象的锁状态为无锁状态(标记为01),则该线程可以获取到锁,并将锁状态标记为偏向锁状态(标记为01)。锁的升级是指在多个线程竞争同一个monitor时,锁的状态会从偏向锁升级为轻量级锁,再升级为重量级锁。如果对象的锁状态为偏向锁状态,并且记录的Thread ID与当前线程的Thread ID相同,则该线程可以直接获取到锁,并继续执行同步代码。原创 2024-03-14 17:09:56 · 1037 阅读 · 0 评论 -
Java IDEA设置环境变量 以及环境变量代码获取
1.进入如图设置,一般的 java 程序和 spring Boot ,还是tomcat 都可以从这里进入2.可以在如下地方手动添加3. tomcat 类4.spring boot 类。原创 2023-10-31 09:48:01 · 1052 阅读 · 0 评论 -
Java基础 自定义异常 自我学习以及总结和个人理解
在大部分业务系统中都有定义自己的异常类型,用于区分于一般的Exception 以及 RunntimeException。截止目前为止我认为这个自定义异常的作用更多的是可以用于将自己业务系统中的错误更明显的区分出来。通过识别异常类型为自己定义的异常来做一些特别的异常信息处理和返回,或者当出现某个自定义的业务异常后针对某个或者某些异常做额外的代码处理。原创 2023-07-11 10:56:13 · 212 阅读 · 0 评论 -
Java List集合中的 removeIf 使用及效果
可以直接对集合中的元素执行删除元素的操作,返回值为 boolean 值,当有删除符合条件的元素时 返回 true ,没有删除时返回 false。可以直接在List或Set 集合后使用;设置一个整数集合如下。原创 2023-06-06 15:35:33 · 1139 阅读 · 0 评论 -
JAVA Stream 中 Function<T, R> 中 apply,compose, andThen 方法学习总结
Stream 中的 Function 实际上解决了一个简单的问题,那就是我们在实际书写代码的时候,一个方法一般只能作为代码中的某一行函数,用于处理里面的数值,但是并不能将一个方法作为一个参数,将方法以参数的形式将方法传递到下一个方法中继续使用。compose 看内部实现,这个方法的入参也为 Function 类型,当调用时会先执行 作为入参的 Function 中的apply 方法,再将计算的结果作为原有方法的 apply 入参。apply 的作用为执行当前方法函数,t 为入参,R 为返回值类型。原创 2023-06-06 10:56:45 · 2216 阅读 · 0 评论 -
@Nullable 与 @NotNull注释大的意义以及使用
可以用于属性,方法等说明当前方法可能返回是 null 需要注意NPE(null pointer exception 空指针异常)一个方法不应该返回 null 或者变量(如字段、局部变量和参数)不能为 null 值。原创 2022-12-12 15:50:04 · 986 阅读 · 1 评论 -
JSON Feature.OrderedField 作用
fastJson 中提供的 将字符串转为某些对象时,为了保证对象内部的顺序保持不变。这样使得解析后的结果依旧可以保证顺序不发生变化。原创 2022-11-10 15:27:22 · 4540 阅读 · 0 评论 -
堆内存,栈内存联系 , == 与equals之间判别
栈内存用于执行方法,每个方法单独分配一段空间,称为栈帧,把给方法分配内存空间称为进栈和出栈,栈,特点为先进后出。堆内存用于存储数组,对象等数据量较大的数据,一般都是引用类型。这里的引用即指向该引用数据类型的地址也就是指针的使用。联系方法入栈,在方法中声明变量以及new对象时, 一般的常量将会放入常量区,new的引用类型对象将会在栈内存中存放该对象的地址,该地址指向堆内存中为该对象开辟的空间的地址,相当于另类的Java中的指针形如String str1 = "string str";Strin原创 2021-07-16 10:44:01 · 84 阅读 · 0 评论 -
JVM ,JRE,JDK 以及框架和开源概念
JVM英文名称(Java Virtual Machine),就是我们耳熟能详的 Java 虚拟机。它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统上的 API 完成动作。JRE英文名称(Java Runtime Environment),我们叫它:Java 运行时环境。它主要包含两个部分,jvm 的标准实现和 Java 的一些基本类库。它相对于 jvm 来说,多出来的是一部分的 Java 类库.JDK英文名称(Java Developm原创 2021-04-05 11:51:51 · 525 阅读 · 1 评论 -
Java专题 基础篇 位移运算符<< ,>> 使用案例(更快的运算速度)
位移运算符案例优点:比一般的运算快很多// 要计算的整数例子int integerNumber = 10; // 注意,位移运算符的对象只能是整数,结果当然也是整数 // 将这个整数左移一位 可以得到这个数翻倍的结果 这里的 1 就是要移动的结果 System.out.println(integerNumber << 1); // 左移两位 数值翻两倍 System.out.println(integerNumber << 2);原创 2020-11-07 17:01:36 · 372 阅读 · 0 评论 -
Java基础专题 Jvm内存划分
jvm是执行Java程序的容器。空间很大,需要划分不同的区域,不同的功能使用不同的特点的区域完成,分为 栈内存,堆内存,方法区,本地方法区,程序计数器栈内存用于执行方法,每个方法单独分配一段空间,称为栈帧,把给方法分配内存空间称为进栈和出栈,栈,特点为先进后出。堆内存用于存储数组,对象等数据量较大的数据,一般都是引用类型。这里的引用即指向该引用数据类型的地址也就是指针的使用。方法区用于存储类的字节码对象,存储常量,存储静态变量。本地方法区用于执行本地方法,C,C++方法就是本地方法。程序原创 2020-10-17 16:22:21 · 136 阅读 · 1 评论 -
Java专题 UDP发送消息的简单案例
这里与TCP有些相同,有接收端和发送端,但不需要建立链接,只负责发送,接受没接收到不管为了接收到可以先启动接收端receiver,在启动发送端sendreceiver DatagramSocket ds = new DatagramSocket(231); //接收端创建端口 byte[] b1 = new byte[1024]; //创建接收数据的包 DatagramPacket dp1= new DatagramPacket(b1, 0,b1.length);//接收长度个数原创 2020-08-02 11:00:48 · 117 阅读 · 0 评论 -
Java专题 TCP编程的两种简单案例
第一种注意两份代码要放到不同的Java文件main中执行,并且要运行server端,再开clientserver //建立连接 ServerSocket ss = new ServerSocket(8021); //这一句就已经建立了服务端 System.out.println("Connect successful."); Socket server = ss.accept(); //转到socket类型为了下面的输入输出流 InputStream isInputStr原创 2020-08-02 10:50:50 · 118 阅读 · 0 评论 -
Java专题 lambda表达式以及Stream的总结及使用 +二者综合案例
直接看代码和注释基本写的比较详细了,还有自己的理解也有 //lambda 表达式 //针对于接口只有一个方法的做法 //是匿名内部类的一种简写方法 //语法格式// 方法的参数列表->{方法体}// ()->{方法体}:没有返回值,方法中没有参数// (x)->{方法体}:无返回值,如果是一个参数,小括号可以省略// X->方法体// (x,y)->{方法体} 没有返回值,多个参数// (x,y)->{方法体} 有返回值// (x,y)原创 2020-08-02 10:39:29 · 284 阅读 · 0 评论 -
Java专题 Class反射获取class的三种方法,暴力反射,泛型擦除 总结+案例
//反射// java反射:在程序运行过程中,可以对任意一个类型进行任意的操作。例如:加载任意类型、// 调用类型的任意方法、获取任意的成员变量、构造方法,可以创建该类型的对象。// 对于任意一个对象,都能调用这个对象的任意一个方法【不知道要使用什么类型】// 如果要获取一个类型的各种内容,首先要获取这个类的字节码对象// 解剖这个类型,获取类中的成员,需要使用Class类型中定义的方法// 这种【动态】获取信息以及【动态】访问成员的这种方式,称为:反射 //获取字节码对象的三个方法 .原创 2020-08-02 10:21:25 · 524 阅读 · 0 评论 -
Java专题 网络编程基础类的使用 + 注释
//网络编程 //在开始栏内输入cmd,进入命令提示框 输入 ipconfig/all 可以查看本地网络配置信息 //ping 192.168.11.191 检测是否可以互相通话 换成用户名也可以 //上面的ping同样在cmd中输入 后面加另一台电脑的ip地址,ip一般是ipv4类型的 //获取方法 InetAddress localHost = InetAddress.getLocalHost(); //直接得到本地的主机名和地址的组合 Sy.原创 2020-08-02 10:18:15 · 91 阅读 · 1 评论 -
Java专题 单例模式与枚举总结
单例简单来说 一个类只有能创建一个对象,因为一般类可以创建多个对象。将一个类的构造函数变为私有化,而创建的对象的方法固定为私有化构造方法创建出来的单个对象。简单一点,不对外提供构造方法,提前将对象创建好,每次可以通过其他方法获得这个类的对象,但是这个对象每次都是同一个,也只有一个。 //单例模式// 在当前系统中,某个类型的对象,最多只能有一个,就需要使用单例设计模式// 单例模式的设计原则:// 构造方法私有化// 提供公有的方法创建对象 //单例中的饿汉式 Ehan原创 2020-08-02 10:09:28 · 184 阅读 · 0 评论 -
Java专题 Thread线程生命周期 线程池开启+简单案例
//Thread 生命周期// 从诞生,到活跃状态,再到最后的消亡状态 //线程中关于状态的描述 Thread thread = new Thread() { //匿名创建线程 @Override public void run() { String s1 = ""; for (int i = 0; i < 10; i++) { s1+=i; try { Thread.sleep(1); } catch (InterruptedExc.原创 2020-08-02 09:56:01 · 145 阅读 · 0 评论 -
Java专题 多线程详解+四种实现方式+ 守护线程+优先级+死锁+案例
//Thread //多线程实现的三种方法 //第一种方法// 继承Thread// 步骤:// 1.新建线程类继承Thread// 2.重写里面的run方法// 3.新建线程类对象// 4.调用start()方法 Fir fir = new Fir(); //主次参杂运行 运行的顺序也与语句顺序有关 fir.start(); //调用start方法开启子线程 for (int i = 0; i < 50; i++) { //在ma.原创 2020-08-01 15:51:44 · 334 阅读 · 0 评论 -
Java专题 内存IO流,对象IO流,properties类,IO 中保证流对象关闭的标准格式 使用+总结案例
//内存输出流 ByteArrayOutputStream// 作用:当从某个文件中,读取了一部分不完整的字节信息的时候,需要找个一个容器缓存这些// 不完整的信息,ByteArrayOutputStream就可以充当这个容器,因为这个容器可以自动增长。 //将读入得暂时存入内存中 然后从内存中写出 File file = new File("a.txt"); InputStream is = new FileInputStream(file); ByteArrayOutputStream原创 2020-08-01 15:42:49 · 109 阅读 · 0 评论 -
Java专题 IO字节流文件读取+实现(复制文件,计算同类文件数量,计算文件大小,删除某一路径下所有文件)
较为高效的复制文件案例public static void copy(String d1,String d2) throws IOException { File file = new File(d1); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStrea原创 2020-08-01 15:37:49 · 184 阅读 · 0 评论 -
Java专题 IO字节流,高效缓冲流总结 +拷贝文件多情况案例详解
//IO字节流 操作 //在操作流对象的时候,要处理解决异常 .io 包 //在操作完流对象之后,需要关闭资源 //InputStream OutputStream是顶层接口 //初始化 和 构造方法 File file = new File("xxxx.xxx"); File file2 = new File("yyy.yyy"); InputStream inputStream = new FileInputStream(file); InputStream inputS.原创 2020-08-01 15:26:35 · 188 阅读 · 0 评论 -
Java专题 IO字符流 高效缓冲字符流 +文件拷贝案例,倒序写入另一文件,编码转化
当字符流读取到一个字节信息之后,需要查询编码表转成字符信息,如果是非纯文本文件,就可能读取到的字节信息无法转成对应的字符,因为这个字节信息在编码表中没有对应的字符,就只能使用英文的?接下来将篡改之后的?字符信息,通过编码表转成字节信息(这一步虽然正确,但是已经没有意义),转成的字节信息,就和当初字符输入流读取的字节信息不一致了,写出到目标文件,就是错误信息。没有必要使用字符流来进行拷贝,因为字符流会先将字节信息转成字符,读取到内存中,最后还要再把字符信息转成字节信息,写出到另外一个文件中。原创 2020-08-01 15:24:32 · 747 阅读 · 1 评论 -
Java专题 File常用方法总结
//File 文件操作类 //文件路径构造方法 //绝对路径 相对路径之分 File file = new File("a/b/c.txt"); //直接创建文件目录相当于是在当前JAVA项目文件目录下 File file2 = new File("a/b","c.txt"); //父级目录在前 子文件路径在后 File file3 = new File(new File("a/b"),"c.txt"); //将路径封装再放入 File file4 = new File(".原创 2020-08-01 15:20:56 · 126 阅读 · 0 评论 -
Java专题 异常处理和finally处理的理解 +详解以及案例
这里使用算数的流程来做样例,注意事项使用注释来说明 Scanner reader = new Scanner(System.in); System.out.println("Input the number: "); try { int num = reader.nextInt(); //try 中捕获到第一个异常后 后面的不会执行直接跳出try块 System.out.println(5/num); //直接执行try块后面的正常语句 int[] aa = {1,2原创 2020-08-01 15:18:46 · 263 阅读 · 0 评论 -
Java专题 Map方法 斗地主发牌案例编写
List<String> list = new ArrayList<String>(); String[] SE = {"♥","♠","♣","♦"}; //若两副牌 SE 再加一边 大小王再加一遍 String[] pValue = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; for (int i = 0; i < SE.length; i++) { //组合花和值 并添加 f.原创 2020-08-01 15:00:32 · 139 阅读 · 0 评论 -
Java专题 Map,hashMap 多种遍历方式 总结+统计字符出现次数案例
总结 //Map 与Collection同级 键值对 数据按一对为单位存储 python中的字典// Map 双列集合的顶层接口 // HashMap 哈希表存储 没有固定顺序// LinkedHashMap //Map中常用方法 Map<String, Integer> map = new HashMap<String, Integer>(); map.put("123qwe", 1原创 2020-08-01 14:58:04 · 248 阅读 · 0 评论 -
Java专题 Collection工具类的简单使用及总结
//Collections 工具类 //例 List<String> list = new ArrayList<String>(); list.add("das"); list.add("123"); list.add("f4"); list.add("rhy"); list.add("677"); Collections.sort(list); //排序 Collections.binarySearch(list, "das");//在一个有升序顺.原创 2020-08-01 14:51:20 · 116 阅读 · 1 评论 -
Java专题 Collection下list,set关系 hashset去重原理 总结+案例
//Collection 对象数组不能扩展和修改,每一次添加元素都必须重新建立一个新的对象 // Collection 单列集合的顶层接口// List 有序的子接口// ArrayList 顺序存储,查询修改快// LinkedList 链式存储,增加删除快// Vector 顺序存储,都慢// Set 无序的子接口// .原创 2020-07-26 17:11:52 · 270 阅读 · 0 评论 -
Java专题 Calendar常用方法总结 + Date与Calendar转化,平闰年判断,随机获取一个时间案例
//Calendar //精确的时间信息 包含很多有关时间的字段 //构造方法 Calendar calendar = Calendar.getInstance(); //获取当前的一个时间信息来初始化 //其中星期和月的设定与中国不同 要自行修改 星期日为周一 月0-11 //常用方法 //get 获取 //set 设定时间 //add 使发生偏移 //getTimeInMills //获得对象描述的毫秒数 //get calendar.ge...原创 2020-07-26 15:48:54 · 300 阅读 · 0 评论 -
Java专题 Date类 使用及方法总结 +从你出生到现在过了多少天案例
//Date //构造方法 Date date = new Date(); //获取当前时间 CST格式 //.util 下的date Date date2 = new Date(0); //填入毫秒数 获得对应时间 long型 //成员方法 date.before(date2); //比较是否在2之前 date.after(date2); //比较是否在2之后 date.getTime(); //获得当前date对应的毫秒值 date.setT...原创 2020-07-26 15:33:49 · 374 阅读 · 0 评论 -
Java专题 System的几个方法
//System System.currentTimeMillis(); //获取当前毫秒值,从1970年1月1日开始 System.err.println(); //用红色字体显示 System.gc(); //垃圾(内存)回收 但有时并不管用 System.exit(0); //终止虚拟机 参数通常为0 System.out.println(); System.out.print("内容"); System.err.println(); System...原创 2020-07-26 15:26:19 · 76 阅读 · 0 评论 -
Java专题 Math类的使用以及方法总结
//Math Math.abs(123); //取绝对值 Math.cbrt(8); //开立方根 Math.sqrt(9); //开平方根 正的 Math.ceil(4.6); //向上取整 Math.floor(4.6); //向下取整 Math.log10(100); //求以10为底的对数 Math.max(3, 5); //求最大值 Math.min(2, 78); //最小值 Math.pow(2, 7); /.原创 2020-07-26 15:21:31 · 227 阅读 · 0 评论 -
Java专题 正则表达式的使用以及方法总结
//正则表达式 就是一个字符串 但能表示某一类的字符串或者规则 //字符串也是一个正则表达式 但只能表达自己 String string = ""; string.matches("[]"); //引用方式,string的matches方法 //[]表示单个字符 //[abc]:a或者b或者c中的一个 //[^abc]:除了a、b、c以外的任何单个字符 //[a-zA-Z]:a~z和A~Z中的任意单个字符 // . 表示任意字符,\\.表示一个确.原创 2020-07-26 15:16:43 · 161 阅读 · 0 评论 -
Java专题 包装类的使用及方法总结
// byte Byte //基本类型包装类// short Short// int Integer// long Long//// float Float// double Double//// char Character//// boolean Boolean //Integer 构造方法 Integer integer = new Integer(23); //直接传入 Integer integer2 = new Integer原创 2020-07-26 15:07:38 · 110 阅读 · 0 评论