Java总结
江七7
智者顺时而谋,愚者逆时而动
展开
-
i++,++i,i--和--i的区别和实现
后置运算:i++ 表示先运算,后自加。意思是遇到 i++了,我先把当前的 i 的值拿来参加运算,后面再去管它的自加。那么,【“后面”后到什么程度呢?要后到当前的语句执行完,即遇到分号 ; 表示语句执行完了,所以 i 才自加1。】如:int i=5,j=0;j=i++;的意思就是,先算 j=i(即 j=5),遇到分号 ;表示语句结束,i 才自加1,即 i 变为6。前置运算:++i 表示先自加,后运算这个意思就是遇到 ++i 了,先把 i 的值加 1,再往后执行别的。如:int i=5,.原创 2021-10-26 15:27:59 · 2333 阅读 · 0 评论 -
与、或、异或
与、或、异或的运算都是将两个数字转化为二进制数后,按位比较的,具体如下图:与 ( & )0 & 0 = 01 & 0 = 00 & 1 = 01 & 1 = 1或(|)0 | 0 = 01 | 0 = 10 | 1 = 11 | 1 = 1异或( ^ )0 ^ 0 = 01 ^ 0 = 10 ^ 1 = 11 ^ 1 = 0与、或 操作符合日常逻辑,异或操作大家只要记住,相同为 0 ,不同为 1 即可。PS原创 2021-09-23 09:53:49 · 1354 阅读 · 0 评论 -
java读写Excel工具类
本项目采用maven工程,使用poi技术去读取excel表格。所需jar包为:<!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>5.0.0</versio原创 2021-09-09 09:55:30 · 4775 阅读 · 5 评论 -
常见异常产生原因及解决方法
NullPointerException:空指针异常。产生原因:当应用试图在要求使用对象的地方使用了 null 时,抛出该异常。譬如:调用 null 对象的实例方法、访问 null 对象的属性、计算 null 对象的长度等等。解决的办法:先找出出现的所有引用类型,判断哪个对象是没有 new 的元素或者方法或者属性,如果没有就创建该对象ArrayIndexOutOfBoundsException:数组索引越界异常。产生原因:当对数组的索引值为负数或大于等于数组大小时抛出此异常。解决的办法:在索引 .原创 2021-08-27 10:39:05 · 368 阅读 · 0 评论 -
实现Runnable接口比继承Thread类所具有的优势
适合多个相同的程序代码的线程去共享同一个资源。可以避免java中的单继承的局限性。增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和数据独立。线程池只能放入实现 Runable 或 Callable 类线程,不能直接放入继承Thread的类。...原创 2021-08-27 10:14:46 · 428 阅读 · 0 评论 -
Thread类中的start()方法与run()方法的区别
线程对象调用 run() 方法不开启线程,仅是对象调用方法。线程对象调用 start() 方法开启线程,并让 jvm 调用 run() 方法在开启的线程中执行。原创 2021-08-27 10:03:19 · 203 阅读 · 0 评论 -
Comparable 和 Comparator 比较器
Comparable :自然排序(自己即可)自然排序的定义Comparable 接口强行对实现它的每个类的对象进行整体排序实现过程实现 Comparable 接口的类必须实现 compareTo(Object obj) 方法,两个对象通过 compareTo 方法的返回值来比较大小 。如果当前对象 this 大于形参对象 obj 则返回正整数;如果当前对象 this 小于 形参对象 obj 则返回 负整数;如果当前对象 this 等于 形参对象 obj 则返回零 。实现 ..原创 2021-08-26 17:40:49 · 2059 阅读 · 0 评论 -
HashSet 去除重复元素的原理
先调用被添加元素的 hashCode(),和 HashSet 中已有元素的 hashCode 比较是否相同如果不相同,直接存储该元素如果相同,再调用 equals 方法比较元素是否相同如果不相同,直接存储该元素如果相同,认为是同一元素,不存储HashCode方法:根据一套特殊的计算方法返回一个整形值,此值被 HashSet 用来定位对象的存储地址。equals方法:判断两个对象的内容是否相等。...原创 2021-08-26 15:16:59 · 889 阅读 · 0 评论 -
List和Set的特点对比
1、List接口的特点它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的)。它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。集合中可存储重复的元素(包括 null 值),通过元素的 equals 方法,来比较是否为重复的元素。list 支持 for 循环,也就是通过下标来遍历,也可以用迭代器2、Set接口的特点它是一个元素存储无序的集合。但是元素虽然无放入顺序原创 2021-08-26 15:05:03 · 1230 阅读 · 0 评论 -
数组转List集合
对于给定的数组,如何将其转换为List集合?例如:String[] arr={"a","b","c","d"};使用 for() 循环遍历数组,并将元素逐一添加到List集合中 public static void main(String[] args) { //定义 String 数组 String[] arr={"a","b","c","d"}; //定义集合 ArrayList<String> list=new A原创 2021-08-25 17:15:48 · 2882 阅读 · 0 评论 -
Java多线程
1、程序.进程.线程程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。进程是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位。通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程是CPU调度和执行的单位。小贴士: 很多多线程是模拟出来的,真正的多线程是指有多个CPU,即多核,如服务器。如果是模拟出来的多线程,即在一个CPU的情况下,在同一个时间点,CPU只能执行一个代码,因为切换的很快,所以就有同时执行的错觉。原创 2021-07-27 10:22:06 · 132 阅读 · 1 评论 -
Java-IO
IO 框架1、流的概念内存与存储设备之间传输数据的通道小贴士: 水借助管道传输; 数据借助流传输2、流的分类2.1 按方向【重点】输入流:将存储设备中的内容读到内存中输出流:将内存中的内容写到存储设备中2.2 按单位字节流:以字节为单位,可以读写所有数据字符流:以字符为单位,只能读写文本数据2.3 按功能节点流:具有实际传输数据的读写功能过滤流:在节点流的基础之上增强功能3、字节流3.1 字节流的父类(抽象类)// InputStream 字节输入流p原创 2021-07-27 10:20:32 · 89 阅读 · 0 评论 -
Windows下安装JDK11(详细)
一、简介因为JDK1.8版本已经不维护且比较老,故选用下一个稳定的版本,即JDK11。第一步:下载JDK11官方下载地址拉至页面到底部,选择如下版本下载,然后它可能要Oracle帐号才能下载,所以自己注册一个吧,反正也不麻烦。第二步:安装点击下一步2. 更改安装路径【不建议在C盘下】3. 关闭即可第三步:设置环境变量进入设置中,点击系统,进入关于页面,点击高级系统设置2. 点击环境变量3. 可在用户变量下新建,也可以在系统变量下新建,然后点击确定4. 选中P原创 2021-08-03 17:12:11 · 30521 阅读 · 6 评论 -
concat和+的区别
concat只能接收字符串,而+可以是字符串或者数字及其他基本类型数据。+左右可以为null,concat会报空指针 public static void main(String[] args) { String str1="hello"; String s="java"; int i=2; char c='g'; // concat String str2 = str1.concat(s); .原创 2021-08-01 18:12:20 · 721 阅读 · 0 评论