展示java.lang.nullpointerexception的因为及处置本领

展示java.lang.nullpointerexception的因为及处置本领

java.lang.nullpointerexception因为: 1、字符串变量未初始化 2、接口典型的东西没有效简直的类初始化,比方: Map map // 会报错 Map map = new Map(); //则不会报错了 3、当一个东西的值为空时,你没有确定为空的情景。 4、字符串与笔墨的比拟,笔墨不妨是一个字符串或Enum的元素,如次会展示特殊 String str = null; if(str.equals(“Test”)){ //这边的代码将不会被触发,由于会抛出java.lang.NullPointerException特殊。 } 5、优先运用String.valueOf()本领包办toString() 当步调代码须要东西的字符串表白情势时,请制止运用该东西的toString本领。即使你的东西的援用即是null,NullPointerException则会抛出,运用静态String.valueOf本领,该本领不会抛出任何特殊并打字与印刷”null” 6、class被声领会典型, 默许 class = null; 如许在挪用class中本领的功夫体例只能给你个空南针特殊, 给本来例化就好了:class = new Class(); 7、归来null,本领的归来值不要设置变成普遍的典型,而是用数组。如许即使想要归来null的功夫就能制止很多不需要的NullPointerException 处置方法: NullPointerException由RuntimeException派生出来,是一个运转时特殊。其意指大概会在运转的功夫才会被抛出,一个变量是null,及惟有其名,没有实值实质,也没调配外存,当你要去取他的长度,对他举行操纵就会展示NullPointException,以是证明变量时最佳给它调配好外存空间,赋予赋值,比方拿该变量与一个值比拟时,要么先做好该特殊的处置要么给它举行确定先: if (str !=null && str “”){ …} 确定一个String的范例s能否即是“a”时,不要写成s.equals(“a”),如许简单抛NullPointerException,而写成”a”.equals(s)就不妨制止这个题目,然而对变量进步行判空后再举行操纵更好,尽管制止归来null,本领的归来值不要设置变成普遍的典型,用数组。如许即使想要归来null的功夫,就归来一个没有元素的数组。就能制止很多不需要的NullPointerException
Java beanutils.copyproperties的用法

Java beanutils.copyproperties的用法

BeanUtils供给对Java曲射和内省API的包装。其重要手段是运用曲射体制对JavaBean的属性举行处置。咱们领会,一个JavaBean常常包括了洪量的属性,很多情景下,对JavaBean的处置引导洪量get/set代码积聚,减少了代码长度和观赏代码的难度。 提防:属性复制,各别jar中的本领,用法不一律。 1、package org.springframework.beans;中的 BeanUtils.copyProperties(A,B); 是A中的值付给B FinCpDocDO finCpDoc = finCpDocService.selectByDocNo(orderNo); FinCpDocDto finCpDto = new FinCpDocDto(); if (finCpDoc == null){ throw new ServiceException("查无该订单" + "orderNo:" + orderNo); } try{ BeanUtils.copyProperties(finCpDoc, finCpDto); 2、package org.apache.commons.beanutils;(常用) BeanUtils.copyProperties(A,B); 是B中的值付给A for(OboFeeDO feeDO : oboFeeList){ if(feeDO.getPayTime()!=null){ ErpOboFeeDto feeDto = new ErpOboFeeDto(); BeanUtils.copyProperties(feeDto, feeDO);...
java stringbuilder清空的本领

java stringbuilder清空的本领

java stringbuilder清空的三种本领 1、新天生一个,旧的由体例机动接收 2、delete 本领 builder1.delete(0, builder.length()); 3、Length StringBuilder val = new StringBuilder(); val.Append(“….”); val.Length = 0;//清空 StringBuilder builder = new StringBuilder(); long time = System.currentTimeMillis(); for(int i=0;i<10000000;i++){ builder = new StringBuilder(); builder.append("aa"); builder.append("bb"); builder.append("cc"); builder.append("dd"); builder.append("ee"); } System.out.println("new 耗费时间:" + (System.currentTimeMillis() - time)); long time1...
Java中字符串排序

Java中字符串排序

Java中字符串排序 package com.fs.test; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Listdemo { public void m1() { List<String> list = new ArrayList<String>(); list.add("a"); list.add("c"); list.add("b"); list.add("w"); list.add("s"); list.add("a"); list.add("b"); list.add("s"); list.add("d"); list.add("c"); list.add("a"); System.out.println("排序前:" + list); Collections.sort(list); System.out.println("排序后:" + list); } public static void main(String[] args)...
java三种基本的日期格式相互转换代码示例

java三种基本的日期格式相互转换代码示例

java三种基本的日期格式相互转换代码示例 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class HelloWorld {          public static void main(String[] args) throws ParseException {                  // 使用format()方法将日期转换为指定格式的文本         SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");         SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd...
java.util.Scanner next()、nextLine()、nextInt()的辨别

java.util.Scanner next()、nextLine()、nextInt()的辨别

java.util.Scanner 是 Java5 的新特性,咱们不妨经过 Scanner 类来获得用户的输出。 next()、nextLine()、nextInt()是scanner内置的本领。 运用nextLine()本领时,不将空格看做是两个字符串的间隙,而是看作字符串的一局部,归来时,它动作String典型一并归来 运用next()本领时,将空格看作是两个字符串的间隙 运用nextInt()本领时,与next()本领一致,不过它的归来值是int典型的,保持将空格看作是两个输出的数据的间隙 (当运用nexInt()本领时,只能输出int典型的数据。) next() 与 nextLine() 辨别 next(): 1、确定要读取到灵验字符后才不妨中断输出。 2、对输出灵验字符之前遇到的空缺,next() 本领会机动将其去掉。 3、惟有输出灵验字符后才将后来面输出的空缺动作分割符大概中断符。 next() 不许获得带有空格的字符串。 nextLine(): 1、以Enter为中断符,也即是说 nextLine()本领归来的是输出回车之前的一切字符。 2、不妨赢得空缺。 即使要输出 int 或 float 典型的数据,在 Scanner 类中也有扶助,然而在输出之前最佳先运用 hasNextXxx() 本领举行考证,再运用 nextXxx() 来读取: String n=sc.nextLine(); String n=sc.next(); int n=sc.nextInt(); Scanner a=new Scanner(System.in);...
Java 内置特殊类 Java非查看性特殊与查看性特殊类

Java 内置特殊类 Java非查看性特殊与查看性特殊类

Java 谈话设置了少许特殊类在 java.lang 规范包中。 规范运转时特殊类的子类是最罕见的特殊类。因为 java.lang 包是默许加载到一切的 Java 步调的,以是大局部从运转时特殊类接受而来的特殊都不妨径直运用。 Java 按照各个类库也设置了少许其余的特殊,底下的表中列出了 Java 的非查看性特殊。 特殊 刻画 ArithmeticException 当展示特殊的演算前提时,抛出此特殊。比方,一个平头”除以零”时,抛出该类的一个范例。 ArrayIndexOutOfBoundsException 用不法索引考察数组时抛出的特殊。即使索引为负或大于即是数组巨细,则该索引为不法索引。 ArrayStoreException 试图将缺点典型的东西保存到一个东西数组时抛出的特殊。 ClassCastException 当试图将东西强迫变换为不是范例的子类时,抛出该特殊。 IllegalArgumentException 抛出的特殊表白向本领传播了一个不对法或不精确的参数。 IllegalMonitorStateException 抛出的特殊表白某一线程仍旧试图等候东西的监督器,大概试图报告其余正在等候东西的监督器而自己没有指定监督器的线程。 IllegalStateException 在不法或不符合的功夫挪用本领时爆发的旗号。换句话说,即 Java 情况或 Java 运用步调没有居于乞求操纵所诉求的符合状况下。 IllegalThreadStateException 线程没有居于乞求操纵所诉求的符合状况时抛出的特殊。 IndexOutOfBoundsException 引导某排序索引(比方对数组、字符串或向量的排序)胜过范畴时抛出。 NegativeArraySizeException 即使运用步调试图创造巨细为负的数组,则抛出该特殊。 NullPointerException 当运用步调试图在须要东西的场合运用 null 时,抛出该特殊 NumberFormatException 当运用步调试图将字符串变换成一种数值典型,但该字符串不许变换为符合方法时,抛出该特殊。 SecurityException 由安定处置器抛出的特殊,引导生存安定侵吞。 StringIndexOutOfBoundsException...
Java Pattern.compile因变量的语法以及参数

Java Pattern.compile因变量的语法以及参数

Pattern结构器是独占的,不许经过new创造Pattern东西,不妨经过Pattern挪用静态本领compile归来Pattern范例。 // Pattern.compile因变量语法 Pattern Pattern.compile(String regex, int flag) Pattern.compile因变量中两个参数 1、regex 表白设置的准则 2、flag 表白树立的参数典型,重要包括以次几种情景: (1)Pattern.CASE_INSENSITIVE(?i) 默许情景下,巨细写不明感的配合只实用于US-ASCII字符集。让表白式忽视巨细写举行配合。 (2)Pattern.COMMENTS(?x) 此种形式下,配合时会忽视表白式中空格字符(表白式里的空格,tab,回车)。解释从#发端,从来到这行中断。 (3)Pattern.UNIX_LINES(?d) 此种形式下,惟有’\n’才被认作一条龙的遏止,而且与’.’,’^’,以及’$’举行配合。 (4)Pattern.MULTILINE(?m) 此种形式下,上箭镞和单引号辨别配合一条龙的发端和中断。其余,’^‘仍旧配合字符串的发端,’’也配合字符串的中断。默许情景下,这两个表白式只是配合字符串的发端和中断。 (5)Pattern.DOTALL:此种形式下,表白式’.‘不妨配合大肆字符,囊括表白一条龙的中断符。默许情景下,表白式’.’不配合行的中断符。 范例 //须要截取的字符串 String splitStr = “[user:name] = select name from user”; // 设置准则 String pattern = "(\\[+)(\\w+)\\:(\\w+)(\\]+)"; //Pattern.compile因变量 Matcher matcher = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE).matcher(splitStr); while (matcher.find()) { //表白往下遍历 //截掏出来的字符串 [user:name] String...
Java Switch Case Syntax

Java Switch Case Syntax

switch case 语句确定一个变量与一系列值中某个值能否十分,每个值称为一个分支。 switch case 语句语法方法如次: switch(expression){ case value : //语句 break; //可选 case value : //语句 break; //可选 //你不妨有大肆数目的case语句 default : //可选 //语句 } switch case 语句犹如下准则: switch 语句中的变量典型不妨是: byte、short、int 大概 char。从 Java SE 7 发端,switch 扶助字符串 String 典型了,同声 case 标签必需为字符串恒量或字面量。 switch 语句不妨具有多个 case 语句。每个...
Java 16正式发布 Java 16有哪些新特性

Java 16正式发布 Java 16有哪些新特性

前言 就在2021/03/16,官方正式发布了Java 16。我们可以下载使用Java 16了。 特性 向量API(孵化) 在运行期,Vector 表示向量计算可以可靠地编译成支持CPU架构上的最佳矢量硬件指令,从而实现优于等效标量计算的性能。提升了Java在CPU向量计算的性能。 启用c++ 14 语言特性 允许在JDK中C++源代码中使用 C ++ 14的新特性,并给出哪些特性可能在热点代码中使用的具体指导。 从Mercurial迁移到Git 将OpenJDK社区的源代码库从Mercurial (hg)迁移到Git。 迁移到GitHub 在GitHub上托管OpenJDK社区的Git仓库。与JEP 357(从Mercurial迁移到Git)一起,这将把所有存储库OpenJDK项目迁移到GitHub上,包括JDK特性版本和版本11及以后的JDK更新版本。 ZGC 并发线程堆栈处理 将ZGC线程堆栈处理从安全点移动到并发阶段。 Unix-Domain 套接字通道 在java.nio.channels包中,为socket channel和server-socket channel api增加Unix-domain(AF_UNIX)套接字支持。 Alpine Linux Port 在x64和AArch64架构上,将JDK移植到Alpine Linux和其他使用musl作为主要C库的Linux发行版上。 Elastic Metaspace 更及时地将未使用的热点类元数据(即metaspace元空间)内存返回给操作系统,减少元空间的占用,并简化元空间代码,以减少维护成本。 Windows/AArch64 Port 将 JDK 移植到 Windows / AArch64。随着新的消费者级和服务器级AArch64...