精华内容
下载资源
问答
  • java空指针异常是什么、怎么发生、如何处理

    千次阅读 多人点赞 2019-04-07 15:04:06
    java空指针异常是什么、怎么发生、如何处理 文章目录java空指针异常是什么、怎么发生、如何处理空指针是什么空指针怎么发生空指针怎么处理 如果看到本文,请立即右上角,因为写完之后发现有问题. 空指针是什么 打开 ...

    java空指针异常是什么、怎么发生、如何处理


    如果看到本文,请立即右上角,因为写完之后发现有问题.

    空指针是什么

    打开 NullPointerException源码 开头就写明出现 NullPointerException的原因:

    • Invoking a method from a null object.
    • Accessing or modifying a null object’s field.
    • Taking the length of null, as if it were an array.
    • Accessing or modifying the slots of null object, as if it were an array.
    • Throwing null, as if it were a Throwable value.
    • When you try to synchronize over a null object.

    空指针怎么发生

    通俗的讲,现在有一个未拆苹果max盒子(一个对象),但是盒子里并没有苹果手机(没有初始化分配内存,获得引用)

    如果你从商场买回家,然后闲鱼上转卖,然后买家继续转卖(方法调用),
    转卖了十几波,中间一直没人打开,第15个人,正好是刘德华,刘德华买到手之后,突然打开想看看手机什么样(使用对象),一看盒子里面是空的,什么都没有,然后刘德华就生气了,这个生气就是空指针异常.
    假如这个手机盒一直没人打开,只是在流转,那么就不存在空指针异常,只要打开,使用,修改就会空指针异常.

    那么什么时候你会打开盒子呢

    Invoking a method from a null object.
    调用空对象的方法

    刘德华: “哎呀,苹果手机听说好像可以上网,不知道是不是真的,我用手上这台试试”.

    那他必须要拆开盒子看手机咯,一看别说打电话(使用对象的方法)了,连手机(对象为空)都没有.

    直接生气,爆发空指针异常.

    Accessing or modifying a null object’s field.
    获取或者修改空对象的字段

    刘德华: 哎呀,苹果原装耳机我选择自己留下,我换个淘宝50的放里边(修改对象内容),没人会知道,嘿嘿.拆开盒子,空的(对象为空)!! 直接生气,爆发空指针异常.

    Taking the length of null, as if it were an array.
    获取一个空数组的长度

    刘德华: “老板,帮我用尺子量下我新买的苹果手机长度(获取空数组长度)”

    老板小心翼翼的接过这台隐形的手机.过了半天告诉大明星 “不好意思啊,华仔,手机长度是没有!!”

    “什么没有,再短也要有个长度吧,连0.00000000001纳米都没有??”
    “真的没有,比(1-∞)都不如,是根本没有”
    华仔发飙"你店别开了".

    爆发空指针异常,老板被打.

    Accessing or modifying the slots of null object, as if it were an array.
    获得或者修改空数组的一个位置上的内容

    刘德华: "老板娘,帮我把我这台手机侧面的 0.618黄金比例刻一个 华仔帅帅"(修改空数组上某位置内容).

    老板娘 瞅了瞅这台手机隐形的侧面(空数组) : “… emmm 人家做不到”

    刘德华: “算了,天天发飙累了,儿子你上”.

    刘德虎发飙,爆发空指针异常.老板娘被打.

    Throwing null, as if it were a Throwable value.

    TODO 不太明白,是指主动抛出吗

    When you try to synchronize over a null object.

    代码说话

    synchronized(obj1)  
    {  
        obj1 = null;  
    }  
    
    synchronized(obj1)  
    {  
        do something  
    }
    

    示意一下:

    
    public class NullExample {
        public static void print(String s, Exception e) {
            System.out.println(s + "  " + e.getClass());
        }
    
        public void useNullObjectMethod(User user) {
            try {
                user.getName();
            } catch (NullPointerException e) {
                print("useNullObjectMethod", e);
    
            }
        }
    
        public void modifyNullObjectProperty(User user) {
            try {
                user.name = "滴滴滴";
            } catch (NullPointerException e) {
                print("modifyNullObjectProperty", e);
            }
        }
    
        public void getNullArrayLength(List list) {
            try {
                int size = list.size();
            } catch (NullPointerException e) {
                print("getNullArrayLength", e);
            }
        }
    
        public void modifyNullArrayValue(List list) {
            try {
                list.remove(2);
            } catch (NullPointerException e) {
                print("modifyNullArrayValue", e);
            }
        }
    }
    
    
    public class ApplicationTests {
        private static NullExample example = new NullExample();
    
        private static User userNull = null;
        private static List listNull = null;
    
        @Test
        public void useNullObjectMethodTest() {
            example.useNullObjectMethod(userNull);
        }
        @Test
        public void modifyNullObjectPropertyTest() {
            example.modifyNullObjectProperty(userNull);
        }
        @Test
        public void getNullArrayLengthTest() {
            example.getNullArrayLength(listNull);
        }
    
        @Test
        public void modifyNullArrayValueTest() {
            example.modifyNullArrayValue(listNull);
        }
    
    }
    
    

    空指针怎么处理

    如果空指针异常出现,最好还是手动处理、调用前判断是否为空或者返回空字符串,空集合…

        return Optional.ofNullable(user).map(name -> user.getName()).orElse("空空空");
    
    
        return Optional.ofNullable(user).map(name -> user.getName())
            .orElseThrow(IllegalAccessException::new);
    
    

    使用代码检查工具,可以有效规避空指针异常

    展开全文
  • java空指针异常解决Java programming language provides the Null Pointer Exception type in order to handle object creation related errors and misuse. In this tutorial, we will learn what is Null Pointer ...
    java空指针异常解决

    java空指针异常解决

    Java programming language provides the Null Pointer Exception type in order to handle object creation related errors and misuse. In this tutorial, we will learn what is Null Pointer Exception, its causes and How To Fix it?

    Java编程语言提供了Null Pointer Exception类型,以处理与对象创建相关的错误和滥用。 在本教程中,我们将学习什么是空指针异常,其原因以及如何解决?

    空指针异常 (Null Pointer Exception)

    Java is an object-oriented programming language. Java provides different objects in order to create and use. In order to use an object, it should be initialized properly. If the object not initialized properly and try to be used it will throw a Null Pointer Exception.

    Java是一种面向对象的编程语言。 Java提供了不同的对象以便创建和使用。 为了使用对象,应正确初始化。 如果对象未正确初始化并尝试使用,则将抛出Null Pointer Exception。

    In the following code, we define an Integer object with the variable name num.  Then we initialize it with the new Integer(10) line. If we do not initialize the variable num and try to use it we will get a Null Pointer Exception.

    在下面的代码中,我们使用变量名num定义一个Integer对象。 然后,我们使用new Integer(10)行对其进行初始化。 如果我们不初始化变量num并尝试使用它,我们将得到一个Null Pointer Exception。

    class HelloWorld
    {
            public static void main(String args[])
            {
                    Integer num = null;
    
                    int new_var = num.intValue() ;
    
                    System.out.println(new_var);
            }
    }
    

    We can see that the following information about the null pointer exception is provided when the exception is thrown.

    我们可以看到抛出异常时提供了有关空指针异常的以下信息。

    • `Thread name` is the thread name where the exception occurred.

      “线程名”是发生异常的线程名。
    • `Exception type` is the exception name with the full class name which is `java.lang.NullPointerException` in this example.

      “异常类型”是具有完整类名的异常名称,在本示例中为“ java.lang.NullPointerException”。
    • `The class name` where the name of the class where the exception occurred which is `HelloWorld` in this example.

      “类名”是发生异常的类的名称,在此示例中为“ HelloWorld”。
    • `The function name` is the function name where the exception occurred which is `main` in this example.

      “函数名”是发生异常的函数名,在本示例中为“ main”。
    • `The line number` is the source code line number where the exception occurred which is 9 in this case.

      “行号”是发生异常的源代码行号,在这种情况下为9。

    空指针异常的原因 (Causes Of Null Pointer Exception)

    Null pointer exception can occur in different ways with different causes. But we can list them like below in general.

    空指针异常可能以不同的方式以不同的原因发生。 但是我们可以像下面一般列出它们。

    • Calling the instance method of a null object.

      调用空对象的实例方法。
    • Accessing or modifying the field or a null object.

      访问或修改字段或空对象。
    • Taking the length of the null as if it were an array.

      以null的长度作为数组。
    • Accessing or modifying the slots of null as if it were an array.

      访问或修改null插槽,就好像它是一个数组一样。
    • Throwing null as if it were a Throwable value.

      将null视为Throwable值。
    LEARN MORE  Python "with" Statement By Examples
    通过示例了解更多Python“ with”语句
    Causes Of Null Pointer Exception
    Causes Of Null Pointer Exception
    空指针异常的原因

    空指针异常的解决方案(Solutions For Null Pointer Exception)

    The null pointer exception can be fixed or solved just by properly initializing the given object which will set an instance for the object. So the object will have an instance and will not null which is the cause of the Null Pointer Exception. In the following example, we will initialize the variable named num which is an Integer type.

    空指针异常可以通过适当地初始化给定对象(该对象将设置该对象的实例)来解决或解决。 因此,该对象将具有一个实例,并且不会为null,这是Null Pointer Exception的原因。 在下面的示例中,我们将初始化名为num的变量,它是一个Integer类型。

    class HelloWorld
    {
            public static void main(String args[])
            {
                    Integer num = 10;
    
                    int new_var = num.intValue() ;
    
                    System.out.println(new_var);
            }
    }
    

    翻译自: https://www.poftut.com/what-is-null-pointer-exception-in-java-and-how-to-fix/

    java空指针异常解决

    展开全文
  • public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Students1[] stus = new Students1[3]; Students1Biz biz = new Students1Biz();... 不能接受输入数据 报空指针异常
  • android项目中从一个Activity跳转到另外一个Activity发生空指针异常是什么原因造成的
  • 被列入经营异常名录的原因是什么? 想要解除公司的异常经营情况,首先需要知道为什么会被列入异常名单,只有了解了原因之后,才能更有效的解决问题。公司会被列入经营异常名录的原因有以下几点: (1)公司提供的联系...

    公司在发展的过程中会有各种各样的情况出现,可能一不小心就被列入了经营异常名录,企业一旦被列入经营异常名录,就会有各种的不方便,那么,公司被列入不正常名录该怎么办?掌握这两点可以帮你解除。

    3916b0182ba8710f736c689783ff8e5a.png

    1.被列入经营异常名录的原因是什么?

    想要解除公司的异常经营情况,首先需要知道为什么会被列入异常名单,只有了解了原因之后,才能更有效的解决问题。公司会被列入经营异常名录的原因有以下几点:

    (1)公司提供的联系方式不正确,工商局多次尝试后仍旧无法联系的;

    (2)公司地址变更但是未向工商局办理公司地址变更申请,随意变更公司地址的;

    (3)公司地址、名称、经营范围等发生了变化,但是营业执照未办理变更的;

    (4)公司在规定的年报时间内未按要求办理年报的;

    (5)工商局规定的其他情况。

    2.被列入经营异常名录该怎么办?

    搞清楚被列入经营异常名录的原因后,就可以从原因入手解决了。不同的原因导致的,也有不一样的解决办法。

    (1)公司无法正常联系的,需带上公司章程等相关资料到工商局报备,并重新提交公司正确的联系方式,申请移出异常名录;

    (2)公司地址异常的,需带新地址的相关材料到工商局申请公司地址变更,并申请工作人员实地核实,经过实地核实后地址无异常的,可以申请移出异常名录;

    (3)公司营业执照未办理变更的,需带办理营业执照变更相关材料办理变更,并重新核实之后,即可申请移出异常名录;

    (4)公司未进行正常年报的,则需将之前未年报的年度部分补报完成,补报完成后即可申请移出异常名录。

    展开全文
  • 引起柴油机润滑系统异常的原因是什么?包丹丹发动机的工作原理是把热能转变为机械能,把活塞的往复运动转变为曲轴的旋转运动,这需要许多零件来完成。相互接触零件的运动,必然会导致接触位置摩擦磨损,为了减少摩擦...

    引起柴油机润滑系统异常的原因是什么?

    包丹丹

    发动机的工作原理是把热能转变为机械能,把活塞的往复运动转变为曲轴的旋转运动,这需要许多零件来完成。相互接触零件的运动,必然会导致接触位置摩擦磨损,为了减少摩擦等无用功的消耗,降低零件的磨损速度和动配合件的摩擦热量,保证发动机能够正常地工作,发动机的润滑系统要不断地向各运动件的摩擦表面供给润滑油(下称机油)。机油的主要作用是:润滑、密封、冷却、清洗、减振、防锈蚀,可见机油的重要性,但在使用过程中常发生一些不正常的工作现象,现对此进行分析。

    1 机油压力过高或过低

    柴油机在工作时正常的机油压力,一般应该维持在0. 2 ~0. 3 MPa 之间。机油压力过高或过低均不好,因为此时均不能起到良好的润滑作用。S195 柴油机机油压力靠汽缸盖罩上的指示器来显示,新机在刚启动时,机油压力往往较大,有时达1 MPa以上。当调整不当时,机油压力往往高达 2 ~4 MPa。拖拉机用 S195 柴油机,在驾驶室内用仪表或灯光指示机油压力。如机油压力过高,极易冲坏机油压力表的感应塞和灯光报警指示器,另外还会使转子泵早期损坏。机油压力过低,机油无法到达需要润滑的零件表面,造成润滑不良,各摩擦表面会因得不到足够的润滑而磨损加快。

    引起机油压力过高的原因:①限压阀弹簧压力调整过大。②机油牌号不合要求。③因机温较低而使机油黏度过大(大多在刚启动时会出现这种情况,以后随着机温的升高,机油黏度将逐渐降低至正常)。④机油油道堵塞。⑤主轴瓦或连杆轴瓦与轴颈的装配间隙过紧。此时除造成机油压力过高外,还可能导致机油温度过高。引起机油压力过低的原因:①机油量不够。机油未及时添加,或油管破裂至管路严重漏油,或机油细滤器破损漏油,或机油窜入燃烧室烧掉。②机油黏度低质量差。由于季节的变化,没有及时更换相应牌号的机油,或添加的机油牌号与机油盆中的机油牌号不一致时,亦会使内燃机的机油压力降低。③机油未及时更换,润滑系统内部机械杂质、油泥等过多,造成机油泵的浮式滤网严重堵塞、机油滤清器堵塞,无法吸油。④限压阀弹簧压力调整得过低,或限压阀的弹簧折断或弹性减弱。⑤机油泵磨损,机油泵内泄增加,导致机油泵吸力不足。⑥机油压力表失灵(此时如松开连接机油压力表的油管接头后有机油喷出,就说明该机油压力表不起作用)。⑦机油泵驱动轴上的键被剪断或其它驱动元件损坏,致使机油泵无法运转正常。⑧轴瓦与轴颈、凸轮轴轴颈与轴瓦(衬套)、摇臂轴与摇臂的装配间隙太大,供入的机油很容易泄漏出去,使得机油压力升不高。

    2 机油压力一直下降不稳定

    机油压力表上所反映出的机油压力发生波动、不稳定的情况一般是由于刚启动不久机油压力较高,当转速一定而机温逐渐升高时,机油压力逐渐下降,有时甚至降到零的位置。在刚启动不久,机油压力能够较高的原因主要是各油路及轴瓦间隙中的机油尚无温度,黏度较大。此时虽各处的配合间隙较大或某处泄漏,但还能暂时保持油压。以后随着机温的升高,使得机油黏度下降而引起机油压力也随着降低。造成机油压力一直下降不稳定的具体原因虽然多种多样,但是我认为主要的原因大致有下述几点:①限压阀密封不严密,有泄漏现象。此时可能是限压阀中的钢球(或圆形端面)与其阀座密封不严密,压力调节螺钉配合松动,阀门弹簧的弹力减弱。②机油滤清器上的回油阀关闭不严。③主轴瓦与轴颈或凸轮轴与轴承座的装配间隙过大。④ 有时还会因机油压力表油管内壁积存很多杂质,而使机油压力逐渐下降。

    3 机油消耗量过大

    技术性能良好的柴油机,机油的实际消耗量并不多,每燃烧 100 L 柴油,机油实际消耗量在1. 0 L 以内,允许量为 1. 5 L,达到 2. 0 L 时应该确定为极限量。发动机的技术状况随使用时间的延长而变差时,其机油消耗量随之增加。机油消耗增加量越大,标志着发动机的性能下降得越严重。引起机油消耗量比预定量增加的原因通常是:①油底壳内的机油油面过高,机油被带到燃烧室参与燃烧,这通常表现为柴油机排气时冒蓝烟。②机油油路有漏油的地方,如曲轴后轴承油封漏油、正时齿轮盖油封损坏或安装不当而漏油、凸轮轴后端盖密封不严以及其他衬垫损坏或油管接头松动破裂而漏油等。③因连杆弯曲变形而引起活塞在汽缸内偏斜,从而使汽缸发生偏磨,造成缸塞配合间隙增大,导致机油窜入燃烧室参与燃烧。④活塞环磨损过度或活塞与汽缸套之配合间隙过大或汽缸套上有拉痕,使机油沿着间隙过大处进入汽缸内燃烧,表现为柴油机冒蓝烟。转速在处于低速状态下时,柴油机中的排气管冒出蓝烟,这说明柴油机中的机油进入了燃烧室参与了燃烧,出现这一现象的主要原因是柴油机内部汽缸与活塞之间的间隙太大;如果在对柴油机进行维修之后产生这一现象,则说明柴油机活塞环口没有得到有效的错开,或者是油环倒角装反导致的。⑤进气门杆与其配合的气门导管磨损松旷间隙过大或气门油封损坏。气门油封的作用是控制气门导管上部的润滑油经气门杆和气门导管之间的间隙流到进、排气道内。气门油封失效、气门杆和气门导管之间的配合面磨损,形成较大的间隙时,机油消耗将大量增加,排气管冒蓝烟,积碳严重。

    6257fd96962f058118dec6c18140045f.png
    展开全文
  • 每年都会有大量企业进入经营异常名录,当公司出现经营异常时,可能会有人并不清楚是什么原因?今天深圳前海郭大侠,就给大家介绍几种比较常见的情形。一、公司年度报告未做深圳所有企业需要在自成立周年之日起两个月...
  • 1、大龄生育,减数分裂异常导致染色体不分离2、辐射,导致染色体确实、易位或断裂3、病毒,如German measles 风疹4、自体免疫性疾病5、化学药品 如化疗药物最常见的21三体唐氏综合症(即21号染色体有三条,也称...
  • 对於冷水机,工业冷水机,低温冷水机等这样的一种新型节能环保的制冷设备,大家越来越熟悉了,工业冷水机与多数的温控设备一样,一种先向机内水箱注入一定量的水,通过工业冷水机制冷系统将水冷却,再由水泵将...
  • 什么原因会引起水量异常?01正常的“水量异常”用水人口增加、夏季用水高峰、节假日用水增多等,属正常用水,不用担心。02表后管道出现漏水1出现明显漏点 如生活用水器具(水龙头、淋浴器等)、太阳能、外墙管、或内部...
  • 不要觉得睡觉个很平常的事情,就不去注重,有时候睡觉出现的异常,也可能身体的警示。若想要身体健康,就要学会多关心身体。有人也会对自己的睡眠有所关注,只是关注点有点不同,有很多网友在网上讨论过这样一个...
  • 引起燃油系故障引起的柴油机排烟异常的原因是什么?王秀芬柴油机长期在烟色异常的情况下工作,会使燃烧室大量积碳,造成气门漏气、活塞环卡死,导致柴油机启动困难、功率不足,不仅会造成油料浪费,还会污染环境。...
  • 舌苔颜色、形态的不同也代表着不同的疾病,结合自身的状况来考虑舌头厚黄是怎么回事,舌头厚黄又是什么原因引起的呢!1、舌苔颜色由浅逐渐变黄,证明患者有内热的症状,中医上认为引起此症状的原因是胃气和食物味道...
  • 大纲如下:1、抓取异常是什么?百度抓取异常又是什么?2、百度抓取异常的原因有哪些?3、网站抓取异常的原因有哪些?4、百度抓取异常对网站有什么影响?5、网站出现抓取异常的解决方法抓取异常是什么?百度抓取异常...
  • [img=https://img-bbs.csdn.net/upload/201810/23/1540265951_83041.png][/img]
  • 有一位朋友老是出现腹痛...这个例子告诉我们,当大便不成形的时候,可以有很多种原因的,可以生理性的也可以病理性的,但是对于绝大部分人来说,一般都轻型到中重型之间,所以不需要过多的担心,但是还是要...
  • 空指针异常是什么意思?        这里我们首先要明确什么是指针,指针指的是什么? 指针:我所理解的指针指的是java程序中的对象 那什么是空?      &...
  • 小编典典当我们创建一个引用类型的变量时,实际上创建了一个指向该变量的一个指针,...例如,我们声明了一个Person对象tom,而没有给tom赋值(初始化),这样再调用tom的方法就会出现空指针异常。package com.co...
  • 你这个问题的解决问题定位:在堆栈异常信息的第一行就可以定位到哪里出了...Java 空指针异常的若干解决方案Java 中任何对象都有可能为空,当我们调用空对象的方法时就会抛出 NullPointerException 空指针异常,这...
  • 什么是空指针异常

    2019-11-17 20:02:39
    所谓的空指针异常,就是一个指针空指针,你还要去操作它,既然它指向的空对象,它就不能使用这个对象的方法。比如 S s=new S() 上面的s假如为null,你还要用s的方法,比如s.equals( String x);那么就会产生...
  • 1、什么是空指针异常当我们声明一个引用类型的变量,实际上创建一个指向对象的指针。看一下下面代码,声明了一个原始类型(值类型)的int变量:int y;y=110;在上面代码中,声明的int型变量y,Java会将它初始化为0。第...
  • 当我们创建一个引用类型的变量时,实际上创建了一个指向该变量的一个指针,例如:...例如,我们声明了一个Person对象tom,而没有给tom赋值(初始化),这样再调用tom的方法就会出现空指针异常。package com.coding...
  • 什么是空指针异常

    千次阅读 2019-02-18 12:13:03
    空指针异常,就是一个指针空指针,你还要去操作它,既然它指向的空对象,它就不能使用这个对象的方法。比如上面的s假如为null,你还要用s的方法,比如s.equals( String x);那么就会产生空指针异常。 1)?当一个...
  • 所以抽点打游戏的时间来查询一下什么是空指针异常一:空指针异常产生的主要原因如下:(1)当一个对象不存在时又调用其方法会产生异常obj.method() // obj对象不存在(2)当访问或修改一个对象不存在的字段时会产生异常...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,305
精华内容 522
关键字:

空指针异常是什么