为什么我需要初始化一个变量来使用" toUpperCase"方法?

时间:2017-07-19 18:59:26

标签: java

仅当我使用方法String convert;

初始化变量toUpperCase();时才有效
public class Conversion {
   String convert;

   public String convertString(String t){
       convert = t;
       convert = convert.toUpperCase();  //MY QUESTION RELATES TO THIS LINE
       return convert;
   }
}

当我设置代码时:

convert.toUpperCase();
return convert;

它不起作用。为什么?为什么我必须先初始化convert

3 个答案:

答案 0 :(得分:4)

你应该写

convert = t.toUpperCase();

因为convert变量可能未初始化。毕竟,您应该使用t参数对其进行初始化。如果没有它,你会得到一个NullPointerException,编译器可以推断出这个并且只是拒绝编译代码。

但是整个convert变量是可疑的。您也可以将方法编写为return t.toUpperCase(),但这会使您的整个班级无用,除非您的目的是跟踪您转换的最后一个字符串。

答案 1 :(得分:1)

声明String时,其默认值为null。这与所有引用类型的行为相同。

您不能在空值中使用toUpperString()等函数。

convert = t; //Here, convert is not null anymore
convert = convert.toUpperCase();

但是,你的功能非常简单,如果你不做任何转换,除了调用toUpperString()之外,最好更改返回

return t.toUpperString

答案 2 :(得分:0)

您必须初始化“convert”,因为在您的方法中没有名为convert的局部变量。你的方法没用,因为你可以转换你想要的每一个字符串。

但是你的代码:

        public class YourClass {
           public static void main(String[] args){
              String convert = "Which string you prefere";
              convert.toUpperCase(); // You just finished
    }
}

您的代码错误,因为方法大写已经存在!你只使用更多的内存与程序,它是没用的!下面的这个问题是错误的。

    public class Conversion {
       String convert = "Your String here";
       convert = convertString(convert);

       public String convertString(String t){
// In any case if you want a variable convert in here(local), you have to declare it again.. But inside this method.
           t.toUpperCase();  // Your "t" is the string you passed over (convert)
           return t;
       }