仅当我使用方法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
?
答案 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;
}