Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我能';不要以第二种方式使用这个程序_Java_Static_Byte_Non Static - Fatal编程技术网

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()
是非静态的):

但是调用static
getBytes()
看起来很奇怪,不是吗?静态上下文对实例变量一无所知,也没有获取字节的源信息。

概念:只能使用类名直接调用类的静态成员。但如果它是类的非静态成员,则必须使用引用变量调用它

信息:
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();