Small details to pay attention to

String A = null;

Integer.parseInt(A); If the value of variable A is null, an exception will occur, so when calling the Integer.parseInt() method, you must first determine whether A is empty, and you can call this method if it is not empty.

    public static int parseInt(String s) throws NumberFormatException {
        return parseInt(s,10);
    }

Then, as you can see below, it will first determine whether the parameter is null, and if it is null, an exception will be thrown

    public static int parseInt(String s, int radix)
                throws NumberFormatException
    {
        /*
         * WARNING: This method may be invoked early during VM initialization
         * before IntegerCache is initialized. Care must be taken to not use
         * the valueOf method.
         */

        if (s == null) {
            throw new NumberFormatException("null");
        }

        if (radix < Character.MIN_RADIX) {
            throw new NumberFormatException("radix " + radix +
                                            " less than Character.MIN_RADIX");
        }

        if (radix > Character.MAX_RADIX) {
            throw new NumberFormatException("radix " + radix +
                                            " greater than Character.MAX_RADIX");
        }

        int result = 0;
        boolean negative = false;
        int i = 0, len = s.length();
        int limit = -Integer.MAX_VALUE;
        int multmin;
        int digit;

        if (len > 0) {
            char firstChar = s.charAt(0);
            if (firstChar < '0') { // Possible leading "+" or "-"
                if (firstChar == '-') {
                    negative = true;
                    limit = Integer.MIN_VALUE;
                } else if (firstChar != '+')
                    throw NumberFormatException.forInputString(s);

                if (len == 1) // Cannot have lone "+" or "-"
                    throw NumberFormatException.forInputString(s);
                i++;
            }
            multmin = limit / radix;
            while (i < len) {
                // Accumulating negatively avoids surprises near MAX_VALUE
                digit = Character.digit(s.charAt(i++),radix);
                if (digit < 0) {
                    throw NumberFormatException.forInputString(s);
                }
                if (result < multmin) {
                    throw NumberFormatException.forInputString(s);
                }
                result *= radix;
                if (result < limit + digit) {
                    throw NumberFormatException.forInputString(s);
                }
                result -= digit;
            }
        } else {
            throw NumberFormatException.forInputString(s);
        }
        return negative ? result : -result;
    }

Similarly String.valueOf(A); the parameter here also cannot be empty

    public static String valueOf(char data[]) {
        return new String(data);
    }
    public String(char value[]) {
        this.value = Arrays.copyOf(value, value.length);
    }

By looking at the source code, you can see that the value is null, and value.length is called here, so a null pointer exception will be reported!

Small details to pay attention to! ! !


Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325963454&siteId=291194637