JAVA
俱往矣_wpt
这个作者很懒,什么都没留下…
展开
-
传值和传引用
首先,不要纠结于 Pass By Value 和 Pass By Reference 的字面上的意义,否则很容易陷入所谓的“一切传引用其实本质上是传值”这种并不能解决问题无意义论战中。更何况,要想知道Java到底是传值还是传引用,起码你要先知道传值和传引用的准确含义吧?可是如果你已经知道了这两个名字的准确含义,那么你自己就能判断Java到底是传值还是传引用。这就好像用大学的名词来解释高中的题目...原创 2020-06-22 10:16:50 · 772 阅读 · 0 评论 -
SpringBoot+JPA+Mybatis+多数据源(MySQL/PostgreSQL)
开始公司主要使用的是Springboot+JPA后来要对接一个其他系统,然后加了一个数据库,就成了Springboot+JPA+多数据源,但是后面随着业务发现JPA有时候用着太难受,就想着加个Mybatis,然后去网上搜如何整合JPA+Mybatis,但是网上的教程都是单数据源整合的,没有发现多数据源整合的案例。想着之前整合过Mybatis+多数据源,然后就把配置文件复制一份,开始踩坑之路。一...原创 2020-03-13 12:19:22 · 1187 阅读 · 1 评论 -
Java中通过Stream对list集合中对象的一些常用操作
import java.util.*;import java.util.concurrent.ConcurrentHashMap;import java.util.function.Function;import java.util.function.Predicate;import java.util.stream.Collectors;class StringAndString ...原创 2019-11-19 10:02:19 · 2959 阅读 · 1 评论 -
Java实现几种常见的排序算法
1、冒泡排序从前往后让相邻位置的两个数字比较,这样可以把最大的或最小的放到末尾位置,如果最大的数字是在第一个位置,那么这个数字每次比较都会往后移动一位,直到末尾位置,其他数字同理。 public void bubbleSort(int a[]) { int i, j, t; for (i = 0; i < a.length - 1; i++) { for (j ...原创 2019-06-10 17:42:21 · 250 阅读 · 0 评论 -
浅谈Java中的equals和==
浅谈Java中的equals和== 当需要知道两个基本数据类型是否相等时,用 == 运算符就可以;想要知道两个引用变量是否引用到堆上的同一个对象时也可以使用 == ,但当判断两个对象是否真的相等的时候就需要使用equals()方法了。 在初学Java时,可能会经常碰到下面的代码:String str1 = new String("hello");String str2...转载 2019-06-21 10:24:46 · 169 阅读 · 0 评论 -
hashCode()和equals()方法
Java对象的eqauls方法和hashCode方法是这样规定的:➀相等(相同)的对象必须具有相等的哈希码(或者散列码)。➁如果两个对象的hashCode相同,它们并不一定相同。String str1 = "hello";String str2 = "hello";System.out.println(str1.equals(str2)); //trueSystem.out.p...原创 2019-06-21 11:14:34 · 185 阅读 · 0 评论 -
前端用c:forEach同时遍历两个list的方法
假设从后台传到界面两个list,一个tempList、一个rainList。一个的时候没有什么特别的,但是两个的时候就需要借助varStatus这个属性。varStatus是<c:forEach>jstl循环标签的一个属性,varStatus属性。varStatus="status"事实上定义了一个status名的对象作为varStatus的绑定值。该绑定值也就是status...原创 2019-06-17 09:25:21 · 5441 阅读 · 3 评论 -
Java 集合 HashMap
Hashmap主要用哈希表(也叫散列表)实现,而哈希表的实现主要用到数组和链表(红黑树),先说哈希表。哈希表的功能主要是方便查找,大概原理就是通过一系列的计算得到一个数字作为物理存储地址,查找的时候只需要对查找元素进行hash然后去得到的地址查找元素是否存在,如果该地址有元素代表查找成功,没有代表查找的这个集合中不存在这个元素。但是哈希值通过一个设定的表达式计算出来的,在某些情况下不同元素...原创 2019-06-26 15:52:59 · 254 阅读 · 0 评论 -
抽象类和接口有什么区别
首先看二者的区别参数 抽象类 接口 默认的方法实现 它可以有默认的方法实现 接口完全是抽象的。它根本不存在方法的实现 实现 子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现 构造器 抽象类可以有构造器...转载 2019-06-28 17:51:06 · 224 阅读 · 0 评论 -
hashCode及HashMap中的hash()函数
原帖地址:https://www.cnblogs.com/NathanYang/p/9427456.html一、hashcode是什么要理解hashcode首先要理解hash表这个概念1. 哈希表hash表也称散列表(Hash table),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映...转载 2019-07-13 16:03:31 · 228 阅读 · 0 评论 -
JVM阅读笔记
程序计数器:每个线程都需要一个独立的程序计数器Java虚拟机栈:生命周期与线程相同,每个方法在执行的同时都会创建一个栈帧(一个虚拟机栈中包含多个栈帧,对应的是一个线程中包含的多个方法),栈帧中主要存储方法(方法中又包含局部变量,对象引用(不是对象本身,可能是一个指向对象起始地址的引用指针,也可能是指向一个代表对象的句柄或其他与此对象相关的位置),returnAddress类型(指向了一条字节码...原创 2020-04-13 15:53:29 · 664 阅读 · 0 评论 -
实例变量(成员变量)、局部变量、静态变量(类变量)的区别
一、实例变量1、实例变量是声明在类中,而不是方法中的。2、实例变量有默认值,可以之间使用。二、局部变量1、局部变量声明在方法中。2、局部变量没有默认值,在使用之前必须初始化。三、静态变量1、静态变量是共享的,同一个类所有的实例共享一份静态变量。2、静态变量会在类的任何静态方法执行之前就初始化。成员变量(实例变量)&局部变量区别:(1)作用域成员变量...原创 2019-06-30 14:23:33 · 2240 阅读 · 0 评论 -
Java 垃圾回收 GC
在Java中内存空间分为两个区域:对象的生存空间堆和方法调用及变量的生存空间栈。对象放在堆中(对象中的实例变量放在对象中,也就相当于放在堆中),方法调用和局部变量放在栈中。在栈中方法会被堆在一起,栈顶上的方法就是当前正在执行的方法,当一个栈顶方法(方法A)在执行的过程中调用其他方法(方法B)时,会将调用的B放在栈顶(入栈),当方法B执行完毕后,它的堆栈块会被释放(出栈),接着执行未完成...原创 2019-07-06 11:51:08 · 204 阅读 · 0 评论 -
Java 异常处理
try/catch:用来运行可能出现异常的语句,如果没有出现异常会在try块运行完之后,跳过catch块运行catch块后面的内容;如果出现异常则会在异常发生的语句停止try块的运行,跳到catch块运行。finally:无论如果都要执行的部分。就像做饭的时候,中间可能出现异常,但是无论最后把饭做成什么样子,都需要把火关了。如果try块失败了,抛出异常,流程会马上转移到catch块。当...原创 2019-07-06 16:10:10 · 206 阅读 · 0 评论 -
List用add添加数据覆盖前面的数据
一般出现这种情况是在list存储对象的时候,比如说下面的代码会输出10个9。因为对象Number实例话一次,也就是说堆中只创建了一个对象,在最后一次循环的时候n.setA(i)将对象number中的属性a修改为9,此时ns中的前9个对象(其实在堆中就是一个对象n)中的 a 也就变成了9。解决方法就是在每次add之后将对象初始化new,这样就是创建了多个对象,每个对象之间不会互相影响。cl...原创 2019-08-09 18:09:31 · 1855 阅读 · 0 评论 -
int和Integer的区别
int和Integer的区别1、Integer是int的包装类,int则是java的一种基本数据类型2、Integer变量必须实例化后才能使用,而int变量不需要3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值4、Integer的默认值是null,int的默认值是0延伸:关于Integer和int的...转载 2019-06-19 17:14:48 · 4251 阅读 · 0 评论 -
Array和ArrayList
1)精辟阐述:可以将ArrayList想象成一种“会自动扩增容量的Array”。2)建议:基于效率和类型检验,应尽可能使用Array,无法确定数组大小时才使用ArrayList!不过当你试着解决更一般化的问题时,Array的功能就可能过于受限。对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。3)Array和...转载 2019-06-20 09:26:42 · 562 阅读 · 0 评论 -
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方案
在写一个简单的连接数据库程序时出现以下错误 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) at java.base/j...原创 2018-08-08 15:25:51 · 10006 阅读 · 3 评论 -
ubuntu16 配置jdk环境
一、去jdk官网下载对应的压缩包二、解压缩然后移动到对应的文件夹sudo tar -zxvf /home/wpt/下载/jdk-8u181-linux-x64.tar.gzsudo mv '/home/wpt/下载/jdk1.8.0_181' /java三、配置环境变量sudo vim ~/.bashrc打开.bashrc 在里面加上如下内容# The PATH of...原创 2018-09-12 13:10:26 · 215 阅读 · 0 评论 -
JAVA八种基本数据类型
一、字符串与字符数组字符串是类,字符数组是数组,字符数组是char类型的,字符串是String类型的。"hello".equals("hello") 返回true一个字符串确实可以调用String类中的方法,也就证明了一个字符串就是一个String类的匿名对象。字符串属于引用类型,整型、浮点型、字符型属于基本类型。基本类型就是一个空间存储数。引用类型比较特别,需要两块内存...原创 2018-10-23 16:43:44 · 179 阅读 · 0 评论 -
JAVA八种数据类型之间的相互转换
1、字符串转换为字符数组char[] ch = str.toCharArray();2、字符数组转化为字符串String str = String.valueOf(char);3、字符串转换为数字 int b = Integer.valueOf(str).intValue(); int a = Integer.parseInt(str); ...原创 2018-10-23 16:50:15 · 332 阅读 · 0 评论 -
JAVA类与对象
一、类与对象类是用来创建对象的模型。对象是靠类的模型塑造出来的。类不是对象,类是对象的蓝图,而java中的绝大多数东西都是对象,类会告诉虚拟机如何创建某种类型的对象。根据某类创建出的对象都会有自己的实例变量。对象本身已知的事物被称为:实例变量对象可以执行的动作称为:方法所有的java程序都定义在类中对象自治,你无需在意它如何完成任务二、引用变量:Dog m...原创 2018-10-23 17:01:30 · 174 阅读 · 0 评论 -
JAVA中的static与final
一、static静态标识符:1、使用static声明属性 static声明全局属性,静态变量为该变量所属类的成员所共享. 静态变量只会有一份.而不是每个实例都有自己的一份.2、使用static声明方法 静态的方法应该用类的名称来调用,而不是用对象引用变量. 静态的方法可以直接调用而不需要堆上的实例...原创 2018-10-23 17:20:06 · 150 阅读 · 0 评论 -
JAVA中的集合
JAVA集合Java的集合类主要由两个接口派生:Collection和Map,二者各自有多个实现类。Collection接口是List、Set、Queue接口的父接口,该接口的方法适用于它的子接口。Collection的接口:void clear() : 清除集合中的所有元素,将集合的长度变为0。boolean contains(Object o) :查找集合中是否包...原创 2018-10-27 11:59:53 · 269 阅读 · 0 评论 -
JAVA基础IO流
InputStream / Reader :所有输入流的基类,前者是字节输入流,后者是字符输入流。输入流:只能从中读取数据,而不能向其写入数据。OutputStream / Writer :所有输出流的基类,前者是字节输出流,后者是字符输出流。输出流:只能向其写入数据,而不能从中读取数据。此处的输入、输出是以程序运行所在内存的角度划分的。如果从硬盘的角度来考虑,二者应...原创 2018-10-30 18:16:29 · 231 阅读 · 0 评论 -
JAVA播放背景音乐
播放音乐方法大致分为两类:1、只能播放.wav格式的,Java自带的。package com.snow;import java.applet.Applet;import java.applet.AudioClip;import java.io.File;import java.net.URI;import java.net.URL;public class Music e...原创 2018-11-26 17:04:51 · 6790 阅读 · 2 评论 -
JAVA @Override报错处理 和 @Override的作用
一、@Override报错处理有时在打开一个新的项目时会出现@Override报错,这是由于jdk版本的问题,@Override是JDK5就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override 而JDK6修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Override。首先要确保安装了jdk 1.6以上的版本,然后,在eclipse中修改配置...原创 2019-05-30 19:39:34 · 1354 阅读 · 0 评论 -
&(长路与)和&&(短路与)的区别
&:按位与运算(长路与)&&:逻辑与运算(短路与)无论 长路与 还是 短路与两边的运算单元都是 布尔值都为真时,才为真任意为假,就为假区别:长路与 两侧都会被运算,无论左边结果如何,右边都会继续运算短路与 只要左边是false,右边就不会进行运算了大多数时候用&&,例如在验证用户登录时判定用户名不是nul...原创 2019-06-05 19:13:56 · 1833 阅读 · 0 评论 -
|和||的解释和区别
|:长路或||:短路或无论长路或还是短路或两边的运算单元都是布尔值都为假时,才为假任意为真,就为真区别:长路或 两侧都会被运算短路或 只要第一个是true的,第二个就不进行运算了...原创 2019-06-05 19:14:56 · 841 阅读 · 0 评论 -
Java中如何跳出当前的多重嵌套循环
一、带有标签的breakstop: for (int i = 1; i <= 4; i++) { for (int j = 1; j <= 4; j++) { if (2 == j & 2 == i) { break stop; } }}System.out.println(i+" "+j);//i=2 j=2 brea...原创 2019-06-19 17:07:28 · 711 阅读 · 1 评论 -
Java中的String,StringBuilder,StringBuffer三者的区别
这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String String最慢的原因: String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但...转载 2019-06-19 17:51:12 · 175 阅读 · 0 评论 -
JAVA连接MySQL数据库
首先需要安装MySQL(安装流程),创建一个数据库,下面代码中使用的是mysql中一个名为“wpt”的数据库,数据库的账号密码都为“root”。代码如下:import java.sql.*;public class ConnectMysql { public static void main(String[] args) throws SQLException { Connect...原创 2018-08-09 15:34:43 · 557 阅读 · 0 评论