我发现compareTo方法的java.lang.Integer实现如下所示: public int compareTo(Integer anotherInteger) { int thisVal = this.value; int anotherVal = anotherInteger.value; return (thisVal<anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1)); } 问题是为什么使用比较而不是减法: return thisVal – anotherVal;
好,所以我知道Set , List和Map是接口,但是什么使第一行代码比第二行更好呢? List myArr = new ArrayList(); ArrayList myArr = new ArrayList();
为了改变这个问题:我应该避免共享在不同线程之间实现java.sql.Connection的类的实例吗?
我正在使用这部分代码在java中ping一个ip地址,但只ping本地主机是成功的和其他主机程序说,主机是无法访问。 我禁用了防火墙,但仍然有这个问题 public static void main(String[] args) throws UnknownHostException, IOException { String ipAddress = "127.0.0.1"; InetAddress inet = InetAddress.getByName(ipAddress); System.out.println("Sending Ping Request to " + ipAddress); System.out.println(inet.isReachable(5000) ? "Host is reachable" : "Host is NOT reachable"); ipAddress = "173.194.32.38"; inet = InetAddress.getByName(ipAddress); System.out.println("Sending Ping Request to " + ipAddress); System.out.println(inet.isReachable(5000) ? "Host is reachable" : […]
我的数组不包含任何string。 但是它包含对象引用。 每个对象引用通过toString方法返回name,id,author和publisher。 public String toString() { return (name + "\n" + id + "\n" + author + "\n" + publisher + "\n"); } 现在我需要按名称sorting该对象的数组。 我知道如何sorting,但我不知道如何从对象中提取名称并对其进行sorting。
请原谅任何小的语法错误或什么,我正在经历这与Jitsi模块,而不是超级熟悉Java想确认发生了什么事以及为什么以及如何修复。 public abstract class A { public A() { this.load(); } protected void load() { } } public class B extends A { private String testString = null; public B() { super(); } @Override protected void load() { testString = "test"; } } 应用程序在使用加载类名称方法创build类B的实例时执行此操作: 在类B中调用重载的load() 初始化variables(根据debugging器调用“private string testString = null”),将它们归零。 这是预期的Java行为? 什么可能导致这个? 这是在1.7 JDK上运行的Java 1.6应用程序。
我刚接受采访,有人问我一个问题。 Interviewer – Java是否支持多inheritance? 我 – 没有 Interviewer – Java中的每个类都扩展了Object类(除了Object类),如果我们在外部扩展一个类 Class A extends B{ // some code here } 那么你可以说A类扩展了B类和Object类,这意味着它是多重inheritance。 那么你怎么能说Java不支持多inheritance? 我 – 实际上B类扩展了Object类,所以当你在类A中扩展类B时,类A间接地扩展了类Object。 这是多级inheritance,不是多重inheritance。 但是我的回答并没有使他满意。 我的答案是否正确? 或者我错在哪里? 内部实际发生了什么?
是否有可能打开命令提示符(我猜其他系统的任何其他terminal),并在新打开的窗口中执行命令? 目前我所拥有的是: Runtime rt = Runtime.getRuntime(); rt.exec(new String[]{"cmd.exe","/c","start"}); 我已经试过在“开始”之后添加下一个命令,我试过运行另一个包含我的命令的rt.exec,但是我找不到使其工作的方法。 如果有问题,我试图运行类似这样的命令: java -flag -flag -cp terminal-based-program.jar 编辑不幸的是,我有一些奇怪的发现。 我已经能够成功地启动命令提示符并传递一个命令使用这个: rt.exec("cmd.exe /c start command"); 但是,似乎只有一个命令。 因为如果我尝试像这样使用命令分隔符“cmd.exe / c start command&command2”,则第二个命令通过后台传递(如果我只是使用rt.exec(“command2”);) 。 现在问题在于,我意识到我需要更改运行命令提示符的目录,因为如果我只是使用jar文件的完整path,jar文件会错误地从命令提示符的活动目录中读取数据,而不是包含其资源的jar的目录。
说我有一个代码,如: import java.util.Date; import my.own.Date; class Test{ public static void main(String [] args){ // I want to choose my.own.Date here. How? .. // I want to choose util.Date here. How ? } } 我应该是完全合格的类名吗? 我可以摆脱import陈述吗? 在现实世界的编程中这样的场景是常见的吗?
我在一个测验中遇到了这个问题, public class MoneyCalc { public void method(Object o) { System.out.println("Object Verion"); } public void method(String s) { System.out.println("String Version"); } public static void main(String args[]) { MoneyCalc question = new MoneyCalc(); question.method(null); } } 这个程序的输出是“string版本”。 但我不明白为什么传递null重载方法selectstring版本。 是空的一个stringvariables指向什么? 但是,当代码改变为, public class MoneyCalc { public void method(StringBuffer sb) { System.out.println("StringBuffer Verion"); } public void method(String s) […]