小编dry*_*hip的帖子

为什么Java编译器不会为无法访问的语句生成无法访问的语句错误?

如果我尝试编译

for(;;)
{

}
System.out.println("End");
Run Code Online (Sandbox Code Playgroud)

Java编译器产生错误说Unreachable statement.但是,如果我添加另一个" 无法访问 "(根据我)break声明并使其成为:

for(;;)
{
    if(false) break;
}
System.out.println("End");
Run Code Online (Sandbox Code Playgroud)

它汇编.为什么它不会产生错误?

java if-statement unreachable-code unreachable-statement

58
推荐指数
3
解决办法
2053
查看次数

为什么Java中的HTTP URL会编译?

如果您有这样的程序:

public class ABC
{
    public static void main(String args[])
    {
        System.out.println("1");
        http://example.com
        System.out.println("2");
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意在http://example.com两个输出语句之间写入的URL .

为什么程序编译没有任何错误?

java

22
推荐指数
2
解决办法
793
查看次数

Java蜂鸣声:产生某些特定频率的声音

我正在尝试使用Java生成蜂鸣声.我在SO上找到了这个答案.

我正在使用该答案的代码来产生哔哔声.代码是:

import javax.sound.sampled.*;
public class Sound
{
    public static float SAMPLE_RATE = 8000f;
    public static void tone(int hz, int msecs) 
    throws LineUnavailableException 
    {
        tone(hz, msecs, 1.0);
    }

    public static void tone(int hz, int msecs, double vol)
    throws LineUnavailableException 
    {
        byte[] buf = new byte[1];
        AudioFormat af = new AudioFormat(SAMPLE_RATE,8,1,true,false);     
        SourceDataLine sdl = AudioSystem.getSourceDataLine(af);
        sdl.open(af);
        sdl.start();
        for (int i=0; i < msecs*8; i++) {
              double angle = i / (SAMPLE_RATE / hz) * 2.0 * Math.PI;
              buf[0] = …
Run Code Online (Sandbox Code Playgroud)

java audio javasound beep

12
推荐指数
2
解决办法
3270
查看次数

如何使用memoization来计算大量的矩阵

我得到了一个程序,它要求我计算矩阵先前状态的数量.

给定矩阵是布尔矩阵.我将使用1true0false解释程序.

矩阵中单元格的下一个状态是1,考虑到这四个单元格:

  • 细胞本身
  • 正确的单元格
  • 它下面的细胞
  • 它下面的细胞,右边的细胞,

1在所有这4个细胞中只有一个,即在这4个细胞中恰好有3个0,正好是1 1个.

如果给定矩阵(M)是:
1 1 0 0 0 0 0 1 0 0 1 0

然后对于第一个小区(M [0] [0]),要考虑的四个小区是M [0] [0],M [0] [1],M [1] [0]和M [1] [1].因此,第一个细胞的下一个状态是0,因为我们1在这4个细胞中有2 个.

对于第二个小区(M [0] [1]),要考虑的四个小区是M [0] [1],M [0] [2],M [1] [1],M [1] [ 2].所以这个细胞的下一个状态是1因为1这四个细胞中只有1 个.

这样,这个矩阵(M)的下一个状态就是矩阵(N):

0 1 1 0 1 0

显然,下一个状态将比前一个状态少1行1列.因此,矩阵的给定状态可以具有许多先前的状态,例如,除了矩阵M之外,给定的矩阵:

1 …

java performance matrix memoization dynamic-programming

9
推荐指数
1
解决办法
368
查看次数

\ u65549是一个有效的Java标识符吗?

我有这些陈述:

int \u65549 = 9;
System.out.println(\u65549);
Run Code Online (Sandbox Code Playgroud)

这完全编译.和输出

9
Run Code Online (Sandbox Code Playgroud)

但是:

System.out.println(Character.isJavaIdentifierStart(\u65549));
Run Code Online (Sandbox Code Playgroud)

输出

false
Run Code Online (Sandbox Code Playgroud)


我做了一些关于这个主题的研究.我阅读了文档,并说:

此方法无法处理补充字符.要支持所有Unicode字符(包括增补字符),请使用该isJavaIdentifierStart(int)方法.

然后我这样做了:

int x = \u65549;
System.out.println(Character.isJavaIdentifierStart(x));
Run Code Online (Sandbox Code Playgroud)

但即使这样打印:

false
Run Code Online (Sandbox Code Playgroud)

那么,这是否意味着,Java是\u65549一个标识符?

java identifier

8
推荐指数
1
解决办法
222
查看次数

Java:space在编译方面有所不同?

我正在制作一个程序(A Piglatin有点......),我无意中错过了声明中的一个变量:

String a = "R"++'a';
Run Code Online (Sandbox Code Playgroud)

它实际上应该是String a = "R"+text+'a';.编译器产生了错误.但是,当我做到时:

String a = "R"+ +'a';
Run Code Online (Sandbox Code Playgroud)

该计划编制.

我想知道为什么把一个空间变得与众不同,即使Java不关心你是否在某些陈述中放置一个空格,例如:String a="ABCD";就像String a = "ABCD";

有人可以解释一下这种行为吗?

java string

5
推荐指数
1
解决办法
78
查看次数

在前缀和数字之间使用下划线时没有错误

以下代码:

int i = 0_10;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)

产生输出:

8

javadocs中,写道我们不能将下划线放在数字的开头,如示例所示int x5 = 0x_52;,这会产生错误illegal underscore.

但是,在这段代码中,0是八进制数的前缀,因为我们可以看到输出是8.但是没有产生错误.

  • 的值i8,这意味着0_10是一个八进制数,0是前缀.
  • 但是0_10不会产生非法的下划线错误,这意味着它0不是前缀,而是数字的一部分.

为什么不产生错误?java是否将其部分视为八进制,部分不是?

java octal

5
推荐指数
1
解决办法
100
查看次数

java.lang.NoClassDefFoundError:org/apache/http/concurrent/FutureCallback

我正在尝试使用Unirest-Mashape来构建java应用程序.

这是我的代码:

import com.mashape.unirest.http.*;
public class PAskMe
{
  public static void main(String args[]) throws Exception
  {
        HttpResponse<JsonNode> response = Unirest.get("https://montanaflynn-dictionary.p.mashape.com/define?word=irony").
                                                                                header("X-Mashape-Key", "KEY").
                                                                                asJson();
        System.out.println(response.toString());
  }
}
Run Code Online (Sandbox Code Playgroud)

当我编译我的代码时,它没有显示错误.但是当我运行它时,它显示以下运行时错误:

java.lang.NoClassDefFoundError: org/apache/http/concurrent/FutureCallback
at com.mashape.unirest.request.BaseRequest.asJson(BaseRequest.java:68)
at PAskMe.PAskMe.main(PAskMe.java:14)
at PAskMe.__SHELL0.run(__SHELL0.java:6)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at bluej.runtime.ExecServer$3.run(ExecServer.java:725)

Caused by: java.lang.ClassNotFoundException: org.apache.http.concurrent.FutureCallback
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 8 more
Run Code Online (Sandbox Code Playgroud)

我已将这些罐子包含在我的项目中:

我已将这些罐子包含在我的项目中

但我仍然得到错误.请帮我.

java unirest mashape

3
推荐指数
1
解决办法
7105
查看次数

为什么Java编译器会给出不连贯的".class expected"编译错误?

如果我有一段这样的代码:

public class ABC {
    public static void main(String[] args) {
        if (true)
            int a = 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

编译时,Java编译器会产生错误

.class预期.

  • 我知道当我们不使用大括号时,我们之后只能使用一个语句if.
  • 而且我也知道我将无法使用int变量a,因为一旦;遇到变量,程序就会出现if,并且变量a会失去它的范围.

我对此代码发出错误并不感到惊讶,但为什么错误消息".class"会出现

什么是Java编译器试图说的?

编译器错误的屏幕截图

java if-statement

1
推荐指数
1
解决办法
325
查看次数

Math.random() v/s Random 类

Java 中的类Math有一个方法,Math.random()它返回 0 到 1 之间的伪随机数。
还有一个类java.util.Random有各种方法,如nextInt()nextFloat()nextDouble()nextLong()

我的问题是,如果我想获得一个范围内的随机数(比如 30-70),那么我应该走哪条路?考虑的因素是速度随机性

java random

1
推荐指数
1
解决办法
1万
查看次数

Java语言的计算不准确?

我尝试了以下for循环:

for(double i = 0.0; i<=0.001; i+=0.0001)
    System.out.println(i);
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

0.0
1.0E-4
2.0E-4
3.0000000000000003E-4
4.0E-4
5.0E-4
6.000000000000001E-4
7.000000000000001E-4
8.000000000000001E-4
9.000000000000002E-4

我的问题是:

  • 这些额外.000000000000001的东西怎么来的?
  • 这些额外的数字总是会出现,还是我的代码中有问题?
  • 这些错误是仅在Java语言或任何其他编程语言中发生的吗?
  • double适合for循环?

java

1
推荐指数
1
解决办法
189
查看次数

为什么(int i = 0 ;; i ++)被认为是无限循环?

为什么以下循环被认为是无限循环?

for(int i=0;;i++)
{
    //
}
Run Code Online (Sandbox Code Playgroud)

i达到最大值2147483647,然后当它增加后,程序应该显示一个错误,指出"整型数过大"或类似的东西.因此,程序应该终止.尽管达到该值需要一些时间,但它肯定不是无限的.那为什么它是无限循环?

java infinite-loop

-3
推荐指数
1
解决办法
4468
查看次数

不太明白我们如何在这个程序中传递对象作为参数(Java)

public class PassingObjects {

    double height;
    double width;
    double length;

    public PassingObjects(double height, double length, double width) {
        this.height = height;
        this.width = width;
        this.length = length;
    }

    public PassingObjects(PassingObjects obj) {
        height = obj.height;
        length = obj.length;
        width = obj.width;
     }

    public void calculateVolume() {
        System.out.println(this.length * this.width * this.height);
  }

    public static void main(String[] args) {
         PassingObjects obj = new PassingObjects(30, 40, 10);
         PassingObjects obj2 = new PassingObjects(obj);

         obj.calculateVolume();
         obj2.calculateVolume();


  }

}
Run Code Online (Sandbox Code Playgroud)

当我calculateVolume()从两个对象运行方法时,为什么我得到相同的值?

我不明白如何传入obj构造函数参数允许编译器知道我希望30,40和10作为参数传入.

java constructor

-3
推荐指数
1
解决办法
57
查看次数