小编Jav*_*107的帖子

没有它的代码需要"同步"才能正常工作

这是来自Herbert Schildt的Java Fundamentals的程序,用于演示同步.该方法sumArray(int[])synchronized,并且这是程序正常工作的要求.但是,当我synchronized意外删除关键字时,程序显示几乎相同的输出,仍然给出了正确的结果.这是该计划.

class SumArray {
        private int sum;

        int sumArray(int[] nums) {
            sum = 0; // Reset sum.
            for(int i = 0; i < nums.length; i++) {
                sum += nums[i];
                System.out.println("Running total for " + Thread.currentThread().getName() + " is " + sum);
            }
            return sum;
        }
    }

    class SumThread implements Runnable {
        static SumArray sa = new SumArray();
        Thread thrd;
        int[] a;
        int answer;

        public SumThread(String name, int[] nums) {
            thrd = new …
Run Code Online (Sandbox Code Playgroud)

java multithreading synchronization

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

什么是空文字?

我写了以下程序.

public class StringTest {
    public static void main(String[] args){
        String x = "\0";
        String y = " ";
        System.out.println("This is x - "+x+".");
        System.out.println("This is y - "+y+".");
        System.out.println(x.equals(y));
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,x.equals(y)应该清楚false,因为它们完全不同String.然而,输出让我感到惊讶.

This is x -  .
This is y -  .
false
Run Code Online (Sandbox Code Playgroud)

如果这两个String不相等,那么他们怎么能产生相同的输出呢?

java string

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

组件本身可以用作监听器吗?

我尝试在Java中使用这个代码,我使用JFrame作为它自己的ActionListener.现在,它在理论上是可行的,因为在Java中,类可以实现许多接口扩展另一个类.

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;

/*
 * This is an example of the strangeness of the syntax of Java. In this example, I am using the JFrame itself as the listener for its component, namely a JButton which, on clicking, ends the program. 
 * Warning : This is just an example, and I would never recommend this syntax, …
Run Code Online (Sandbox Code Playgroud)

java user-interface swing jframe actionlistener

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

我可以将ActionListener添加到JPanel

我正在创建一个基本上有很多按钮的swing程序,而且我在考虑不是单独向每个按钮添加监听器,如果我可以将监听器添加到其中JPanel,并使用.getSource()函数读取事件,那么事情将是一个整个很容易?可能吗?

java user-interface swing jpanel actionlistener

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

我不能在Eclipse Juno中使用调试器

我正在使用Eclipse Juno.每当我尝试在任何程序上使用调试器时,编辑器窗格中会出现一个新窗口,标题为红色,URLClassLoader$1.run() line: not available并显示一条消息"Source not found".有帮助吗?提前致谢!

这是图片

在此输入图像描述

java eclipse

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

我应该更喜欢代码重复以获得更好的性能吗?

假设我有两个重载方法,void foo(int arg)并且void foo(int[] args).两者都对整数参数进行相同的处理.现在,我已经以这种方式实现了它们

void foo(int arg){
    // Some processing.
}

void foo(int[] args){
    for(int i : args)
        //The same processing as above.
}
Run Code Online (Sandbox Code Playgroud)

现在,我知道避免代码重复是一个更好的设计原则,所以第二种方法也可以实现为:

void foo(int[] args){
    for(int i : args)
        foo(i);
}
Run Code Online (Sandbox Code Playgroud)

但是,由于我多次调用该方法,并且由于方法调用会增加开销,因此这种方法会使速度变慢.所以,我的问题是:我应该使用哪种方法?

java design-patterns

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

在这段代码中,为什么第二个循环的执行速度比第一个循环慢?

我有这个Java代码,使用两种不同类型的循环.

public class Test {
    public static void main(String[] args){
        long fl = 0, wl = 0; 
        int i = 0;
        int a = 0;
        long start = 0, stop = 0;

        start = System.currentTimeMillis();
        while(i<2000000000){
             if(i%2 == 0)
                a++;
            else
                a--;
            i++;
        }
        stop = System.currentTimeMillis();
        wl = stop-start/2;
        System.out.println("\nWhile loop = "+wl);

        i = 0;
        a = 0;
        start = 0;
        stop = 0;

        start = System.currentTimeMillis();
        for(;i<2000000000;){
            if(i%2 == 0)
                a++;
            else
                a--;
            i++;
        }
        stop = …
Run Code Online (Sandbox Code Playgroud)

java loops for-loop while-loop execution-time

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

如何知道循环如何结束

在编写程序时,我遇到了一个奇怪的情况.我需要知道一个for loop是正常结束还是正常结束break.有没有办法知道这个?

java for-loop break

-7
推荐指数
1
解决办法
496
查看次数