
【JavaSE基础】
Java基础
晓风残月一望关河萧索
志存高远,脚踏实地。
路漫漫其修远兮,吾将上下而求索。
展开
-
【详解】Arrays.copyOf() 的使用
数组的复制:返回的是一个新的数组对象Arrays.copyOf(int[] array, int length):第一个变量表示原来的数组对象第二个变量表示新的数组的长度,如果新数组的长度超过原数组的长度,保留数组元素的默认基本类型的值。 int[] arr1 = {1, 2, 3, 4, 5}; int[] arr2 = Arrays.copyOf(arr1, 5); int[] arr3 = Arrays.copyOf(arr1, 10); for(i.原创 2022-03-26 20:51:17 · 3926 阅读 · 0 评论 -
【详解】为什么HashMap的长度是2的整数次幂?
为了加快哈希计算、以及减少哈希冲突。1、为什么可以加快计算?& 运算更快!我们都知道为了找到 KEY 的位置在哈希表的哪个槽里面,需要计算 hash(KEY) % 数组长度但是!% 计算比 & 慢很多所以用 & 代替 %,为了保证 & 的计算结果等于 % 的结果需要把 length 减 1也就是 hash(KEY) & (length - 1)这个 hash(KEY) 没什么可说的,调用 Object 里面的 native 方法完成计算,原创 2022-03-14 13:13:44 · 964 阅读 · 0 评论 -
【详解】map.getOrDefault(num, 0) + 1;map.put(num,map.getOrDefault(num, 0) + 1)
map.getOrDefault(Object key, V defaultValue);①map中存在key,value返回key对应的value即可。②map中不存在key,value则返回defaultValue(默认值)。map.put(num,map.getOrDefault(num, 0) + 1)①map中含有num的话,就将num对应的value值+1②map中不含有num的话,num对应的value对应的默认值赋值为0,然后再+1...原创 2021-12-18 20:32:19 · 1731 阅读 · 0 评论 -
【详解】位运算符:位逻辑运算符,位移运算符(<<左移,>>右移)
位运算符包括位逻辑运算符、位移运算符。最近做算法的时候经常用到,现在来总结下。重点掌握的是 左移 << ,右移 >> 。1.位逻辑运算符那么位逻辑运算符怎么计算的呢?先看下位逻辑运算参照表:0代表假,1代表真。A&B:只有A、B同时为1的时候,结果为1。A、B其中一个为0,或都为0的时候,结果为0A|B:A、B其中一个为1,或者都为1的时候,结果为1;A、B都为0的时候,结果为0A^B:A、B的值相同的时候,则...原创 2021-11-17 20:37:09 · 11828 阅读 · 2 评论 -
【详解】Arrays.fill(type[] a,type val),替换数组中的每一个元素
做算法的时候遇到过这个工具类方法。遇到用到的就总结下。1.Arrays.fill(type[] a,type val):将数组中的元素全部替换成val2.看下底层:使用for循环替换数组a中的每一个元素。3.举例说明 int[] a = new int[]{1,2,3,4,2,2,24,5,6}; Arrays.fill(a,520); for (Integer r:a) { System.out.print...原创 2021-11-15 12:05:06 · 632 阅读 · 0 评论 -
【小结】Map的key是否可以重复,不可以。
Map集合的键是不可以重复的。当Map集合有相同key的时候,key是不可以重复的。后面的key对应的值value会覆盖前面key对应的值value。原创 2021-11-01 22:05:14 · 9189 阅读 · 0 评论 -
【总结】字符串的遍历,replace(),replaceAll()方法的使用
①字符串的遍历:// 方法一:使用charAt(i):遍历字符串的每个元素,每个元素是字符的形式for(int i=0;i < str.length();i++) { System.out.println(str.charAt(i)); }//方法二:截取字符串种的每个字符for(int i=0;i < str.length();i++) { System.out.println(str.substring(i,i+1)); }//方法三.原创 2021-10-30 21:52:47 · 2976 阅读 · 2 评论 -
【详解】二维数组的长度问题。int[][] arr = new arr[3][4];arr.length;arr[0].length;
二维数组可以看成一个一维数组。二维数组的行可以看成一维数组的元素,列可以看成具体其中的元素。1、arr.length代表的是二维数组的行2、arr[0].length是二维数组的列。具体看下面测试代码:...原创 2021-10-27 21:05:56 · 4934 阅读 · 0 评论 -
【详解】快速输入输出函数:BufferedReader、BufferedWriter
在笔试的时候,一般使用的平台有:牛客,AcmCode,OJ系统一定注意:类名一定要使用Main,这几天有笔试就是因为编译器不会用,还有输入函数要直接使用Scanner,所以,很遗憾。public class Main{}BufferedReader 和 BufferedWriter 都在 java.io.*包内。(1)BufferedWriter①创建输入函数BufferedReader对象:BufferedReader in = new BufferedReader(new原创 2021-09-02 19:05:55 · 574 阅读 · 0 评论 -
Integer类型和String类型相互转化
1、Integer转StringString s = String.valueOf(i);String s = Integer.toString(i);2、String 转Integerint i = Integer.parseInt(s);int i = Integer.valueOf(s).intValue();原创 2021-09-02 18:35:07 · 836 阅读 · 0 评论 -
【详解】Scanner输入函数
笔试的时候,往往会有输入内容,输出内容,基本上借助Scanner输入函数来操作。一、Scanner简介 Java5添加了java.util.Scanner类,这是一个用于扫描输入文本的新的实用程序。借助于Scanner,可以针对任何要处理的文本内容编写自定义的语法分析器。小结: Scanner是控制台输入函数,键盘输入内容通过Scanner类的相管方法接受,然后赋值给变量。二、Scanner用法(1)接收控制台单个元素的输入 ① Scann...原创 2021-09-02 17:44:22 · 1886 阅读 · 0 评论 -
【细节】listToString:集合元素之间添加分隔符
List集合中的元素之间默认分隔符是逗号 “,” 怎么编程想要的分隔符呢?直接看代码,一目了然。其实自己做个例子就行了。我看listToString有很多用法,我们没有办法完全都记住,在工作中用的多了自然就记住了。不会的去查一下就行了。List<String> platformSort = new ArrayList<>();// 代表的是List集合之间的元素以、分割String hajxMarket = listToString(platformSort, "原创 2021-08-01 15:56:06 · 1640 阅读 · 0 评论 -
【代码】获取日期所在月份的 月初、月末的日期
当做月报的时候,会有一个从输入日期的月1号开始,到输入的日期,或者月末比如:求2021.05.26的月初,也就是2021.05.01,,月末:2021.05.31代码如下:public class Test {// 测试代码 public static void main(String[] args) throws ParseException { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM原创 2021-08-01 15:49:40 · 1089 阅读 · 0 评论 -
Java实现字符串的截取和替换
1、字符串截取1、substring(x):将字符串从索引号为2开始截取,一直到字符串末尾。(索引值从0开始)2、substring(startIndex,endIndex):左闭右开 [)从索引号startIndex开始到索引好endIndex结束(并且不包含索引endIndex截取在内,也就是说实际截取的是startIndex和endIndex-1号字符)2、字符串截取str.replaceAll("abcdddasw","d","");将第一个字符串中的d,替换成空结原创 2021-07-14 14:51:12 · 4154 阅读 · 3 评论 -
String.format()用法详解
这篇文章写的不错:https://blog.youkuaiyun.com/anita9999/article/details/82346552转载 2021-07-07 15:50:44 · 162 阅读 · 0 评论 -
Java 8 新特性,Lambda
最近在写代码的过程中,发现Lambda是真的好用。简化开发。但是又有一些缺点,可读性差。但是只要学通了。运用起来灵活自如。1、基本概念 Lambda表达式,本质上是一个匿名函数。因此在写Lambda表达式的时候,不需要关心方法名是什么,不需要关心方法的返回值是什么。只需要关注两方面的内容:参数列表、方法体。Lambda表达式的基础语法:(参数)->{ 方法体}参数部分:方法的参数列表,要求和实现接口中的方法参数部分一致,包括参数的数量和类型。方法...原创 2021-07-07 15:32:29 · 160 阅读 · 0 评论 -
什么是哈希表、哈希冲突?
哈希表是基于数组的一种存储方式.它主要由哈希函数和数组构成。当要存储一个数据的时候,首先用一个函数计算数据的地址,然后再将数据存进指定地址位置的数组里面。这个函数就是哈希函数,而这个数组就是哈希表。哈希表的优势在于:相比于简单的数组以及链表,它能够根据元素本身在第一时间,也就是时间复杂度为0(1)内找到该元素的位置。这使得它在查询和删除、插入上会比数组和链表要快很多。因为他们的时间复杂度为o(n)。哈希冲突是指哈希函数算出来的地址被别的元素占用了,也就是,这个位置有人了。好的哈希函数会尽量避免哈转载 2021-05-21 20:12:34 · 583 阅读 · 0 评论 -
【最全经典】Java中的集合总结List,Set,Vector,Map,HashMap等(包含底层源码分析)
1、Java集合框架概述 随着数据量的增大,临时存储的容器数组越来越不能满足现代的开发要求。比如数组初始化以后,长度就确定了,不便于扩展;数组声明的时候,就决定了元素初始化的类型且添加、删除操作效率低下。由于数组的这一些的弊端不能满足现代开发的要求,于是促进了集合的产生。 Java集合可以看做一个容器,可以动态的把多个对象昂如容器中。Java集合可以存储数量不等的多个对象,还可以保存具有映射关系的关联数组。2、Collection接口方法3、Iterator迭代器接...原创 2021-04-18 16:11:22 · 842 阅读 · 1 评论 -
【详细清晰】Java中比较器:Comparable和Comparator接口
1、前言 在Java中经常遇到数组和对象的排序问题,那么就涉及到对象之间的比较问题。 Java中的对象,正常情况下,只能进行比较:== !=。不能用 > < 号比较对象,使用以下方式比较对象的大小。 在Java中实现对象排序的两种方式: ①自然排序:java.lang.Comparable ②定制排序:java.util.Comparator2、方式一:自然排序,自定义类实现Comparable接口 一个类实现C...原创 2021-04-11 23:54:08 · 1085 阅读 · 0 评论 -
【大总结】Java中的多线程
1、基本概念 什么是程序?线程?进程? 程序:程序是为了完成特定的任务,用某种预压编写的一组指令的集合,即指的是一段静态的代码,静态对象。 进程:进程通俗的讲就是运行中的程序,是一个动态的过程,进行的声明周期包括:进行的产生、存在和消亡的过程。程序是静态的,进程是动态的,进程作为资源分配的基本单位。 线程:进程可以进一步的细化成线程,是一个程序内部的一条执行路径。线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器。具体线程和进程之间的区别和联系,请转到:https:...原创 2021-04-09 14:29:30 · 185 阅读 · 0 评论 -
JDK8新特性,map.forEach((key,value)->)的使用
JDK8对Map集合的遍历方式进行了简化。foreach()方法对HashMap中的每个映射指定执行的操作。foreach()的语法为:注意:这里面的key,value是随意起的,也可以是kk,cc; ff,xx;map.foreach((key,value)->{action})遍历如下:public static void main(String[] args) { Map<Integer, String> map = new HashM.原创 2021-04-04 19:05:50 · 6774 阅读 · 4 评论 -
【最全】Java中Map集合遍历的方式
Map集合的遍历方式 先看下Map集合的部分源码:package java.util;import java.util.function.BiConsumer;import java.util.function.BiFunction;import java.util.function.Function;import java.io.Serializable;public interface Map<K,V> { /** * Returns .原创 2021-03-31 22:29:11 · 282 阅读 · 1 评论 -
对C#三层模式的理解:
三层模式: 举一个简单的例子:顾客去饭店吃饭 顾客去饭店吃饭,需要知道吃什么。饭店里面的服务员提供菜单,并且接收顾客点菜的信息,服务员收到点菜信息将此信息传递到后厨,大厨对点菜信息进行处理,需要什么食材等。知道需要什么食材之后,大厨将信息传给后勤的买食材的工作人员,买食材的人通过大厨所给的菜单到菜市场去买所需要的食材,将买来的食材给后厨,让大厨进行处理。...原创 2018-09-18 23:41:23 · 565 阅读 · 0 评论 -
【详解】使用Java计算类中对象的个数,实现每次new一个对象,计算对象的个数
先看代码:代码解释: 因为static修饰变量的时候是属于全局变量,在内存里面只有一个副本,static修饰的变量不可以使用this关键字来获取值,这边的this代表当前类的对象或者属性,而且static修饰的变量是共享的,只有一个本体。每次创建一个对象的时候,类的无参构造方法就会执行一次,所以初始值private static int count = 0,每多new一个对象,count就会 +1。而使用private int count 中的count是非静态变量,通过对象来获取...原创 2021-03-24 20:04:28 · 3390 阅读 · 1 评论 -
【区别】for循环中i<array.length;i<array.length-1;i<=array.length;i<=array.length-1
最好的方法就是自己去编辑器测试一遍注意点: ① 数组下标是从0开始,数组下标的范围是[0,arr.length-1],比如数组int[] arr = {1,2,3,4},数组的长度,arr.length=4,则数组下标的范围是[0,3] ② 关于for循环中的解释:int[] arr = {1,2,3,4} for(i = 0;i<array.length;i++):从数组的第一个元素开始,到数组的最后一个元素,遍历元素范围:arr[0]到arr[...原创 2021-03-15 12:37:51 · 3934 阅读 · 0 评论 -
深入理解hashcode和equals
hashcode详解equals详解hashcode和equals的区别和联系hashcode和equals的使用原理原创 2020-12-22 18:44:19 · 757 阅读 · 1 评论 -
JavaSE——基础知识01(注释、起名规范、关键字保留字、变量、基本数据类型)
使用MyEclipse软件 src:源程序路径 jre:存放使用的jar包,.class文件 bin:生成.class文件,编译文件,存储在bin目录中 Ctrl + F11: 运行控制台程序 注释: // :单行注释 /* … */ :多行注释 /** … */ :文档注释 起名字的规范: 标识符必须以字母,下划...原创 2019-12-26 15:15:48 · 291 阅读 · 0 评论 -
深入理解:持久化、序列化,引用变量(超值知识点,通俗易懂)
一. 持久化 最早的时候听说持久化是JDBC,数据库的连接,老师说JDBC是一个持久层的框架。当时听的一知半解。 现在我们一起去探讨吧! 个人总结,凡是编程语言:大方向只有两个:输入和输出,中间的什么库啊,框架啊等都是为其服务的。(如果错误,请大神指正!) 拿下它 ! 一定要搞懂!这是基础!!还不会!!心慌!! 不放过一个技术积累的机会!① 什么是持久化 ? 将程序数据从瞬时状态装换为永久状态的机制过程或者是说装换结...原创 2020-09-24 19:34:57 · 331 阅读 · 0 评论 -
1024快乐!
勿忘初心,坚持积累,坚持敲代码!原创 2020-10-24 09:38:36 · 1505 阅读 · 0 评论 -
【最详解,陆续更新】总结Java中常见的异常,出现异常的原因,解决方法
1、数组下标越界异常:java.lang.ArrayIndexOutOfBoundsException当你使用不合法的索引访问数组时会报数组越界这种错误,数组arr的合法范围是[0, arr.length-1];当你访问这之外的索引时会报这个错。比如:public class Test { public static void main(String[] args) { int[] arr = {1, 2, 3}; for (int i = 0; i &l.原创 2020-11-28 22:12:04 · 313 阅读 · 0 评论 -
详解instanceof 运算符
instanceof运算符的前一个操作数通常是一个引用类型变量,后一个操作数通常是一个类,也可以是接口,用于判断前面的对象是否是后面的类,或者是其子类、实现类的实例。如果是,则返回的是true,否则返回的是false。注意:在使用instanceof的时候需要注意,instanceof运算符前面的操作数编译的时候类型,要么与后面的类相同,要么与后面的类具有父子继承关系,否则会引起编译错误。举例:String str = "abc";if(str instanceof Str...原创 2020-11-28 22:00:55 · 569 阅读 · 0 评论 -
【经典详解】<T> T 和 T的用法和区别,public <T> List<T> f(T a){}的详解
<T> T 表示返回值是一个泛型,传递什么,就返回什么类型的数据。 T 表示传递的参数类型。下面依次举例:<T> T返回值是一个T类型,这个T是<T> T中的第二个T,告诉编辑器,我传递什么你就给我返回什么样的数据类型。/* <T> T可以传入任何类型的list 关于参数T的说明: 第一个T表示<T>是一个泛型 第二个T表示方法返回的是T类型的数据 第三个T表示...原创 2020-11-26 15:39:21 · 14808 阅读 · 9 评论 -
深入理解泛型(经典详解):<T> T 和 T的使用以及public <E> List<E> get()泛型方法详解、类型擦除、通配符的使用、泛型类的应用、泛型之间的继承
一、为什么要使用泛型? 泛型意味着编写的代码可以被很多不同类型的对象重用。例如集合ArrayList,如果集合不添加泛型,里面可以存储任何类型也就是Object,当添加泛型的时候,提高了代码的重用。 泛型提供了类型参数,比如ArrayList类有一个类型参数来指示元素的类型,使得代码具有更好的可读性,一看就知道数组列表中包含的是String对象。ArrayList<String> list = new ArrayList<String>()...原创 2020-11-26 15:36:22 · 61122 阅读 · 2 评论 -
Java中转换为字符串的方法,字符串连接运算符+,““ + a,通过““空字符串将任意类型值转换为字符串值。
Java中转换为字符串的方法① toString()方法是Java中转换为字符串的方法② Java在连接字符串的时候会自动将任意类型转换为字符串: 通过""空字符串将任意类型值转换为字符串值。如果加号(+)的一个参数是字符串,那么Java会自动将其他参数都转化为字符串。 比如: a是int类型。String s = "" + a;那么现在的类型是String类型。...原创 2020-11-23 18:57:42 · 945 阅读 · 0 评论 -
【简单易懂】array == null || array.length == 0的区别
array== null || array.length == 0的区别 int[] array= new sequence[0];是分配了地址空间,但是里面没有存储东西 int[] array== null; 没有分配地址空间,就是空的。原创 2020-11-19 13:41:34 · 546 阅读 · 0 评论 -
Java基础知识:(经典全解)Iterator迭代器实现原理,增强for循环实现原理
1. Iterator迭代器 迭代器为容器而生,为容器服务,遍历容器里面的元素。迭代器提供了一种方法访问一个容器对象中的各个元素,而不需要暴露该对象的内部细节。类似于“公交车上的售票员”,“火车上的乘务员”。 Iterator仅仅用于遍历集合,迭代器Iterator本身并不具备承载对象的能力,如果需要创建Iterator对象,必须有一个被迭代的集合。集合对象每次调用iterator()方法都会得到一个全新的迭代器对象,默认的游标元素都在第一个元素之前。迭代器的执行原理:...原创 2020-11-03 15:49:04 · 658 阅读 · 2 评论 -
【经典】对static关键字深入理解
提到static关键字,相信大家都不陌生,这是相对比较难以理解的一个关键字,相信各位也都能深深感受的到!本篇文章将好好总结一下static这个关键字。文章目录1、static存在的主要意义 2、static的独特之处 3、static应用场景 4、静态变量和实例变量的概念 5、静态变量和实例变量区别【重点常用】 6、访问静态变量和实例变量的两种方式 7、static静态方法 8、static静态代码块 9、static变量与普通变量区别 10、静态内部类 11、静态导...转载 2020-10-14 13:02:19 · 455 阅读 · 0 评论 -
【经典】Java工程师必读书籍,计算机基础资料推荐
对与做技术的人,总是感觉时间不够用。1. 为什么学Java呢? 大概问一下,我们为什么学习Java呢?我思考了下,大概有以下几个原因:热爱技术,对计算机编程非常感兴趣 因为Java的优势:Java语言摆脱了硬件平台的束缚,实现了一次编程,到处运行的效果,,也就是Java是跨平台的优势;提供了一种相对安全内存管理和访问机制,吸收了C++的优点,避免了绝大部份的内存泄漏和和指针越界的问题;实现了热点代码检测和运行时编译及优化,使得Java随着运行时间的增长而获得更高的性能;Java有一套完整..原创 2020-10-13 11:42:10 · 767 阅读 · 2 评论 -
【最全理解】方法返回值函数,return关键字的用法
一. return关键字的理解:首先,一个方法有返回值return ……, 代表已经做完,离开此方法。 其次,如果此方法产生一个值,这个值要放在return 语句的后面。代表通过执行该方法,能得到的数据 如果不想有返回值,想退出该方法,返回值的写法是:return;(后面返回值为空,直接在renturn后面添加分号)二. 举例① 方法有返回值public String addStudent(){ String username = "张三"; return usern..原创 2020-09-26 09:34:30 · 4214 阅读 · 0 评论