![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础语言
xiaoshijiu333
farewell
展开
-
一文了解BigDecimal全部
以前就有想法花一点时间学习一下Java中用于表示高精度运算的类BigDecimal了解之后,总结一下以示学习1. BigDecimal是什么先看一组例子:public static void main(String[] s) { double a = 0.1, b = 0.2; System.out.println(a + b); }输出结果:0.30000000000000004事与愿违,结果并不是我们想象的0.3;原因很简单,计算机在做运算的原创 2020-06-17 17:56:34 · 343 阅读 · 0 评论 -
java.security.NoSuchAlgorithmException:Cannot find any provider supporting AES/CBC/PKCS7Padding
最近在做AES-128解密的时候,遇到了这个问题java.security.NoSuchAlgorithmException:Cannot find any providersupporting AES/CBC/PKCS7Paddingprivate byte[] decrypt(byte[] ts) { try { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");原创 2020-06-16 16:44:31 · 3426 阅读 · 0 评论 -
Could not connect to SMTP host: smtp.126.com, port: 25
使用javamail发送邮件的时候,我使用的是网易126邮箱126邮箱的SMTP服务器地址:smtp.126.com(端口:25)注:这个链接可以查到各个邮箱的SMTP服务器地址常用邮箱SMTP服务器地址大全然后出现这个错误的原因是 Could not connect to SMTP host: smtp.126.com, port: 25默认端口25,是不需要进行SSL安全连接认证的...原创 2019-04-24 13:00:20 · 6096 阅读 · 1 评论 -
Serializable接口、序列化反序列化以及serialVersionUID解读
1. Serializable接口简单地说,就是可以将一个对象(标志对象的类型)及其状态转换为字节码,保存起来(可以保存在数据库,内存,文件等),然后可以在适当的时候再将其状态恢复(也就是反序列化)。serialization 不但可以在本机做,而且可以经由网络操作。它自动屏蔽了操作系统的差异,字节顺序等。比如,在 Windows 平台生成一个对象并序列化之,然后通过网络传到一台 Unix 机...原创 2019-05-19 17:31:15 · 845 阅读 · 0 评论 -
新特性Optional的使用,以及集合长度为0的踩坑
使用Java8的新特性Optional,再取属性的时候避免NullPointException,代替判空操作如return Optional.ofNullable(user).map(User::getName).orElse(null));代替if(user!=null){ return user.getName();}else{ return null;}提高代码的可读性...原创 2019-05-28 00:38:53 · 9023 阅读 · 2 评论 -
Stream流中间操作之map和flatMap的区别
可以这么说,Stream流几乎可以完成对集合的任意操作,过滤、限流、跳过、映射、排序、分组等下面讲一下其中比较难理解的两个映射操作map和flatMap的区别推荐直接从源码开始看:map源码 <R> Stream<R> map(Function<? super T, ? extends R> mapper);参数:传入一个Function函数式接...原创 2019-06-12 22:13:58 · 3969 阅读 · 0 评论 -
Stream流中间操作举例
过滤、截断、跳过、去重代码中都有注释 @Test public void test() { Student[] students = new Student[] { new Student("a", 1), new Student("b", 2), new Student("c", 3), new Student("d", 4), n...原创 2019-06-12 22:57:19 · 731 阅读 · 0 评论 -
函数式接口、Lambda表达式浅析
Java8之前,Java中的一切都是围绕着“对象“展开的,将”面向对象编程“的理念贯彻到底,但是随着python、scala等拥有函数式编程风格的语言兴起,Java为了维护自己强大的生态圈,于是在Java8引入了函数式接口和Lambda表达式来进行一定程度的函数式编程开发。- 函数式接口函数式接口是Java8的一个非常重要的新特性,函数式接口是指有且必须只能有一个抽象方法的接口(默认方法个数没...原创 2019-06-09 19:36:08 · 332 阅读 · 0 评论 -
Lambda表达式和方法引用浅析
之前说了,Lambda表达式就是函数式接口实例方法引用其实就是Lambda表达式的另一个写法,所以方法引用也就是函数式接口实例来看几个Lambda表达式和方法引用的例子对象::实例方法 @Test public void test() { List<Integer> list = new ArrayList<>(); li...原创 2019-06-10 22:10:38 · 600 阅读 · 0 评论 -
使用阿里巴巴的fastjson进行集合中对象的转换,属性拷贝
业务需求: 需要将一个List< Employee > 转成 List< EmployeeModel >其中 Employee 与 EmployeeModel 对应属性名称一致方法一:使用Spring提供的工具,BeanUtils.copyProperties();进行对象的属性拷贝,然后循环遍历。比较简单,也比较麻烦,这里不推荐。BeanUtils.copyPr...原创 2019-06-22 14:15:49 · 1892 阅读 · 0 评论 -
InputStream、InputStreamReader、BufferedReader用法区别
今天回顾总结了一下,Java IO里面的InputStream、InputStreamReader、BufferedReader用法区别字节流InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等OutputStream是字节输出流的所有类的超类,一般我们使用它的子类,如FileOutputStream等字符流InputStream...原创 2019-08-02 23:09:35 · 936 阅读 · 0 评论 -
为什么StringBuilder是线程不安全的
通常我们都知道说StringBuilder是线程不安全的,那如果继续追问下去,为什么StringBuilder是线程不安全的,该怎么回答呢?首先需要明确地知道StringBuilder它内部的组织结构来看源代码中,StringBuilder的抽象父类AbstractStringBuilder的两个重要的成员变量/** * The value is used for character ...原创 2019-08-30 14:40:12 · 5853 阅读 · 0 评论 -
String的split方法注意,空字符串问题
String的split方法返回的是一个String数组意为 按照 “关键字” 分割 String字符串注意的是:分割之后的数组,会自动省略后面的空字符串,而不会省略前面的空字符串代码: @Test public void test() { // a前面有两个空格,example后面有三个空格 // split方法,要是数组末尾都是 空字符串:"" 则舍...原创 2019-10-06 20:50:51 · 1856 阅读 · 0 评论 -
javamail发送邮件,日志显示成功,但最后却没有收到邮件 —— QUIT 221 Bye
昨天在使用javamail发送邮件的过程中,最后运行,控制台记录、日志等都没有报错,但是收件人就是没有收到邮件控制台信息如下DEBUG SMTP: Found extension "STARTTLS", arg ""DEBUG SMTP: Found extension "8BITMIME", arg ""DEBUG SMTP: Attempt to authenticate using ...原创 2019-04-24 12:34:55 · 4950 阅读 · 4 评论 -
java.lang.ClassNotFoundException: com.sun.mail.util.MailLogger
使用javamail过程中报了这个错java.lang.ClassNotFoundException: com.sun.mail.util.MailLogger原本pom依赖<dependency> <groupId >javax.mail </groupId > <artifactId >javax.mail- api<...原创 2019-04-24 12:18:04 · 3451 阅读 · 0 评论 -
org.xml.sax.SAXParseException;报错! 必须具有偶数个 URI
启动日志报错:org.xml.sax.SAXParseException......必须具有偶数个 URI多数是spring相关的配置文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http:...原创 2019-04-21 22:05:44 · 1433 阅读 · 0 评论 -
Integer a = 128, Integer b = 128, a==b ; Integer c = 100 , integer d =100 , c==d
public void Test(){ Integer a=128; Integer b=128; Integer c=100; Integer d=100; System.out.println(a==b); System.out.println(c==d); }记录一下平时学习中...原创 2018-11-04 16:43:26 · 1155 阅读 · 1 评论 -
静态变量与实例变量
静态变量只会被加载一次,是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;...原创 2018-11-04 17:22:30 · 142 阅读 · 0 评论 -
Integer、int、Integer.valueOf()、new Integer()
这样一个问题Integer i1=59;int i2=59;Integer i3=Integer.valueOf(59);Integer i4=new Integer(59);System.out.println(i1 == i2);System.out.println(i1 == i3);System.out.println(i3 == i4);System.out.print...原创 2018-11-15 21:31:42 · 798 阅读 · 1 评论 -
子类和父类都有成员变量i, A a = new B(),a.i的值以及多态方法调用机制
这样一个问题import org.junit.Test;public class B extends A { int i=200; @Test public void test(){ A a = new B(); a.p(); System.out.println(a.i); }}class A { ...原创 2018-11-21 15:19:08 · 1039 阅读 · 1 评论 -
Java网络编程—http请求的两种形式
Java网络编程的程序可以通过输入和输出流拿到http的响应结果和发送请求,为了测试Java网络编程中的http请求,在Tomcat服务器运行Struts2框架,定义了一个action,然后Java程序访问这个action。Action代码import com.opensymphony.xwork2.ActionSupport;import org.apache.struts2.Servle...原创 2018-12-13 00:00:44 · 627 阅读 · 0 评论 -
JsonObject与JsonArray
JsonObject与JsonArrayJSONObject Json = new JSONObject(); JSONArray JsonArray = new JSONArray(); Json.put("key", "value");//JSONObject对象中添加键值对 JsonArray.add(Json);//将JSONObject对象添加到Json数组中 ...原创 2018-12-29 21:33:32 · 250 阅读 · 0 评论 -
java.nio.file.InvalidPathException
当程序使用类加载器加载文件的时候发生了这样的异常:java.nio.file.InvalidPathException: Illegal char <:> at index 2: 使用类加载器加载资源文件代码String path = Label.class.getClassLoader().getResource("model.pb").getPath();运行一下Deb...原创 2018-12-29 22:19:02 · 23862 阅读 · 7 评论 -
Java for循环执行顺序 案例加解析
如下表达式:for(expression1;expression2;expression3){ expression4;}执行的顺序应该是:第一次循环,即初始化循环。首先执行表达式expression1 (一 般为初始化语句) ;再执行expression2 (一般为条件判断语句),判断expression1是否符合ex...原创 2019-03-19 14:43:46 · 412 阅读 · 0 评论 -
hashcode()与equals(),对象是否相等的比较
什么是hashcode()通俗一点:Java中的hashCode方法就是根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值,这个数值称作为散列值。什么是equals()判断两个对象的内存引用是否是同一块地址hashcode()与equals()注意点不能根据hashcode()来判断对象是否相等,因为不同的对象可能会生成相同的hashcode值。虽然不...原创 2019-03-25 20:43:47 · 2099 阅读 · 4 评论 -
为什么set集合或者map集合中的key为自定义对象时,要重写该对象的equals和hashcode方法
首先我们都知道hashSet中的数据和hashMap中的key都不允许有重复值,那它是怎么判断插入一个数据时,集合中是否已经有该对象了呢?也许大多数人都会想到调用equals方法来逐个进行比较,这个方法确实可行。但是如果集合中已经存在一万条数据或者更多的数据,如果采用equals方法去逐一比较,效率必然是一个问题。此时hashCode方法的作用就体现出来了,当集合要添加新的对象时,先调用这个...原创 2019-03-25 22:17:31 · 2314 阅读 · 0 评论 -
ArrayList、LinkedList、Vector的区别
Java集合框架继承关系图1. ArrayList 底层是依据动态数组实现的,它允许所有元素,包括null。ArrayList没有同步,线程不安全。 数组是连续的内存空间,在数组的任意位置插入(删除)元素,必然导致该位置及其后所有元素要重新排列(数组复制),所以如果处理大量数据且插入(删除)元素的位置越靠前,性能影响就越大。但是数组可以直接通过查找序号(下标)索引元素,非常快。2....原创 2019-03-26 23:24:16 · 155 阅读 · 0 评论 -
Java位运算符和移位运算符详解
位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。移位运算符包括,“左移运算符”,“有符号右移运算符”、“无符号右移运算符”。位运算异或 ^异或运算符是用符号“^”表示的,其运算规律是:两个操作数的位中,相同则结 果为0,不同则结果为1 简单实例/** * @function: 异或位运算 */@Testpublic void test(){ ...原创 2019-03-27 11:48:40 · 1287 阅读 · 0 评论 -
字符串的==null,.equal(“”),==“”三者的区别
==null表示这个字符串是空对象,没有分配任何的内存空间.equal(“”)表示将这个字符串跟空字符串在外观形式上比较“”表示将这个字符串跟空字符串在形式和内存上比较.equal(“”)和“”的前提要是一个空字符串。...原创 2018-10-17 20:32:43 · 2165 阅读 · 0 评论