Java 为什么我能';不要以第二种方式使用这个程序
有人能解释一下为什么不能用第二种方法声明字节数组吗。 他们两个有什么不同 有人能解释一下为什么不能用第二种方法声明字节数组吗 不能使用第二种方法,因为在Java 为什么我能';不要以第二种方式使用这个程序,java,static,byte,non-static,Java,Static,Byte,Non Static,有人能解释一下为什么不能用第二种方法声明字节数组吗。 他们两个有什么不同 有人能解释一下为什么不能用第二种方法声明字节数组吗 不能使用第二种方法,因为在String类中没有名为getBytes的静态方法 但如果需要第二种方法,您可以编写自己的变体: String word = "coding"; /*first way*/ byte[] code = word.getBytes(); /*second way*/ byte[] code2 = String.getBytes(word);
String
类中没有名为getBytes
的静态方法
但如果需要第二种方法,您可以编写自己的变体:
String word = "coding";
/*first way*/
byte[] code = word.getBytes();
/*second way*/
byte[] code2 = String.getBytes(word);
他们两个有什么不同
存在,是一个非静态方法,不接受任何参数instance.getBytes()
是一个String.getBytes(String s)
方法,采用1静态
参数,不存在String
似乎您不理解静态方法和非静态方法之间的区别。非静态方法只能通过引用实例来调用。它们不能由类名使用。例如(
getBytes()
是非静态的):
但是调用staticgetBytes()
看起来很奇怪,不是吗?静态上下文对实例变量一无所知,也没有获取字节的源信息。概念:只能使用类名直接调用类的静态成员。但如果它是类的非静态成员,则必须使用引用变量调用它
信息:getBytes()
不是String类的静态函数。因此,只能使用引用变量调用它。你可以找到它
说明:第一种方法正确,第二种方法不正确,因为这里您直接使用类名来调用它。可能是因为String类没有静态getBytes方法?为什么需要另一种方法?所以我只能使用第二种方法,如果getBytes方法是静态的?@ukaszKrzyżakFranczyk,不,如果是静态的,可以在实例上使用此方法too@DavidWallace,究竟什么是正确的?
public static byte[] getBytes(String s) {
return s.getBytes();
}
byte[] bytes = instance.getBytes();
byte[] bytes = ClassName.getBytess();
byte[] bytes = instance.getBytes(); // think twice before use
byte[] bytes = ClassName.getBytess();