Tag: nullpointerexception

在Java中取消引用“null”时是否可能产生未定义的行为?

我刚刚了解到在C和C ++中取消引用null有时会产生未定义的结果 。 这对我来说非常有趣,就像所有离奇的编程行为一样(我曾经有人告诉我他们调试了“损坏的RAM – 程序在合法的生产环境中不能像运行一样运行”)。 因为我主要是一名Java开发人员,所以我想知道这种语言是否有可能以这种语言发生? JLS并没有具体说明如何实现null引用( 3.10.7,4.1,15.8.1 ),所以我不太确定。 但我认为通过使用Unsafe API直接操作内存地址可能是可能的。 不幸的是,我对JVM的内部工作原理知之甚少,无法知道这是否可行。 如果可能,那么恶意程序也可能这样做,这将开启一个有趣的安全问题。 那么:当解除引用null ,Java是否有可能具有未定义的行为,而不是简单地抛出NullPointerException ?

使用Java三元运算符时的奇怪行为

当我写这样的java代码时: Map map = new HashMap() Long number =null; if(map == null) number = (long) 0; else number = map.get(“non-existent key”); 应用程序按预期运行但当我这样做时: Map map = new HashMap(); Long number= (map == null) ? (long)0 : map.get(“non-existent key”); 我在第二行得到一个NullPointerException。 调试指针从第二行跳转到java.lang.Thread类中的this方法: /** * Dispatch an uncaught exception to the handler. This method is * intended to be […]

为什么将三元语句中的空值赋给布尔变量会抛出NPE?

我有一部分代码如下: public static void main(String[] args) throws Exception { String trueValue = Boolean.TRUE.toString(); String fieldValue = null; Boolean defaultValue = null; Boolean value = (fieldValue != null ? trueValue.equalsIgnoreCase(fieldValue) : defaultValue); System.out.println(value); } 当defaultValue不等于null ,代码工作正常,但是当defaultValue为null ,JVM会抛出NullPointerException 。 此代码使用jdk 1.6.45编译。 为什么我得到这个例外?

为什么在NullPointerException中使用默认值的Java Integer结果?

我是Java新手。 我刚刚读到Java中的类变量有默认值。 我尝试了以下程序,并期望得到输出为0 ,这是一个整数的默认值,但我得到NullPointerException 。 我错过了什么? class Test{ static Integer iVar; public static void main(String…args) { System.out.println(iVar.intValue()); } }

jAudio Feature Extractor:Null Exception

我的项目是创建一个Android应用程序,可以执行音频文件的function提取和分类。 首先,我正在创建一个Java应用程序作为测试运行。 我正在尝试使用jAudio的function提取程序包从音频文件中提取音频function。 作为入门者,我想输入.wav文件并对该文件运行特征提取操作,然后将结果存储为.ARFF文件。 但是,我从项目中的包中得到以下NullPointerexception错误: Exception in thread “main” java.lang.NullPointerException at java.io.DataOutputStream.writeBytes(Unknown Source) at jAudioFeatureExtractor.jAudioTools.FeatureProcessor.writeValuesARFFHeader(FeatureProcessor.java:853) at jAudioFeatureExtractor.jAudioTools.FeatureProcessor.(FeatureProcessor.java:258) at jAudioFeatureExtractor.DataModel.extract(DataModel.java:308) at Mfccarffwriter.main(Mfccarffwriter.java:70) 最初我认为这是一个文件权限问题(即,由于缺少权限,程序不允许编写文件),但即使在向Eclipse 4.2.2授予各种权限之后(我正在运行Windows 7, 64位版本),我仍然得到NullException错误。 以下给出了违规exception源自的包裹代码: /** * Write headers for an ARFF file. If saving for overall features, this must * be postponed until the overall features have been calculated. If this a * […]

将blob转换为图像流并将其分配给jLabel

我只是尝试将数据库中的blob字符串转换为字节数组,然后转换后转换为缓冲的图像,然后将其分配给标签这是我的代码 package ims.project; import java.sql.*; import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import javax.imageio.ImageIO; public class readingdata extends JFrame { readingdata() { JPanel pane = new JPanel(); JLabel label1 = new JLabel(“help”); JLabel label2 = new JLabel(“33”); pane.add(label1); pane.add(label2); setVisible(true); add(pane); try { Class.forName(“com.mysql.jdbc.Driver”); Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/ims1”, “root”, “root”); Statement st = con.createStatement(); […]

在没有外部SD卡的情况下缓存位图

没有外部SD卡,图像不会在内部存储器上缓存并在设备上崩溃。 我尝试过我所知道的,没有任何效果。 这是ImageCache.java package com.minecraftpix.android.bitmapfun.util; import com.minecraftpix.BuildConfig; import android.annotation.TargetApi; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.CompressFormat; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.os.Environment; import android.os.StatFs; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.util.LruCache; import android.util.Log; import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.lang.ref.SoftReference; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.HashSet; import java.util.Iterator; […]

带静态变量的NullPointerException

我只是打了很奇怪(对我来说)java的行为。 我有以下课程: public abstract class Unit { public static final Unit KM = KMUnit.INSTANCE; public static final Unit METERS = MeterUnit.INSTANCE; protected Unit() { } public abstract double getValueInUnit(double value, Unit unit); protected abstract double getValueInMeters(double value); } 和: public class KMUnit extends Unit { public static final Unit INSTANCE = new KMUnit(); private KMUnit() […]

Java:在equals检查中避免NullPointerException的干净方法

我有一个地址对象,我想为其创建一个equals方法。 我可以通过做类似下面的事情(缩短一点)使这变得非常简单: public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Address other = (Address) obj; return this.getStreet().equals(other.getStreet()) && this.getStreetNumber().equals(other.getStreetNumber()) && this.getStreetLetter().equals(other.getStreetLetter()) && this.getTown().equals(other.getTown()); } 问题是,其中一些可能是空的。 换句话说,如果此地址中没有街道字母,我将获得NullPointerException 。 如何在考虑空值的情况下以干净的方式编写此文件?

在VIewPager(Android)中的两个片段之间传递数据(NullPointerException)

所以基本上我有2个片段 – FragmentConverter和FragmentFavourites ,我有一个MainActivity 。 我正在尝试使用名为Communicator的接口将第一个片段中的4个数组传递给第二个数组。 具体片段如下所示: public interface Communicator { public void respond(String[] names, String[] codes, String[] symbols, int[] images); } 这是FragmentFavourites一个方法: @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub String[] checkedNames = new String[counter]; String[] checkedCodes = new String[counter]; String[] checkedSymbols = new String[counter]; int[] checkedImages = new int[counter]; comm […]