标签: java

比较Java枚举成员:==或equals()?

我知道Java枚举被编译为具有私有构造函数和一堆公共静态成员的类.当比较给定枚举的两个成员时,我总是使用.equals(),例如

public useEnums(SomeEnum a)
{
    if(a.equals(SomeEnum.SOME_ENUM_VALUE))
    {
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是,我刚刚遇到一些使用equals运算符==而不是.equals()的代码:

public useEnums2(SomeEnum a)
{
    if(a == SomeEnum.SOME_ENUM_VALUE)
    {
        ...
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我应该使用哪个运营商?

java enums

1645
推荐指数
11
解决办法
62万
查看次数

按值对地图<键,值>进行排序

我是Java的新手,经常发现我需要对Map<Key, Value>值进行排序.

由于值不是唯一的,我发现自己将其转换keySet为a array,并通过数组排序对该数组进行排序,并使用自定义比较器对与键关联的值进行排序.

有没有更简单的方法?

java sorting collections dictionary

1569
推荐指数
27
解决办法
134万
查看次数

Java是否支持默认参数值?

我遇到了一些具有以下结构的Java代码:

public MyParameterizedFunction(String param1, int param2)
{
    this(param1, param2, false);
}

public MyParameterizedFunction(String param1, int param2, boolean param3)
{
    //use all three parameters here
}
Run Code Online (Sandbox Code Playgroud)

我知道在C++中我可以为参数指定一个默认值.例如:

void MyParameterizedFunction(String param1, int param2, bool param3=false);
Run Code Online (Sandbox Code Playgroud)

Java是否支持这种语法?有没有理由说这两步语法更可取?

java parameters methods overloading default-parameters

1569
推荐指数
14
解决办法
114万
查看次数

如何在Java中拆分字符串

我有一个字符串,"004-034556"我想分成两个字符串:

string1="004";
string2="034556";
Run Code Online (Sandbox Code Playgroud)

这意味着第一个字符串将包含之前的字符'-',第二个字符串将包含之后的字符'-'.我还想检查字符串是否包含'-'在其中.如果没有,我会抛出异常.我怎样才能做到这一点?

java string

1564
推荐指数
23
解决办法
373万
查看次数

如何修复java.lang.UnsupportedClassVersionError:不支持的major.minor版本

我正在尝试使用Notepad ++作为我的一体化工具编辑,运行,编译等.

我安装了JRE,并且已将路径变量设置为.../bin目录.

当我在Notepad ++中运行"Hello world"时,我收到以下消息:

java.lang.UnsupportedClassVersionError: test_hello_world :
 Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
       .........................................
Run Code Online (Sandbox Code Playgroud)

我认为这里的问题是版本问题; 某些版本的Java可能是旧的或太新的.

  1. 我如何解决它?
  2. 我应该安装JDK,并将我的路径变量设置为JDK而不是JRE吗?
  3. .../binJRE或JDK中的变量有什么区别?

java jvm incompatibility unsupported-class-version

1532
推荐指数
25
解决办法
182万
查看次数

StringBuilder和StringBuffer之间的区别

StringBuffer和之间的主要区别是StringBuilder什么?在决定其中任何一个时,是否存在任何性能问题?

java stringbuilder stringbuffer

1510
推荐指数
18
解决办法
77万
查看次数

为什么要使用getter和setter/accessors?

使用getter和setter的优点是什么 - 只能获取和设置 - 而不是简单地使用公共字段来存储这些变量?

如果getter和setter做的不仅仅是简单的get/set,我可以非常快地解决这个问题,但我并不是100%清楚如何:

public String foo;
Run Code Online (Sandbox Code Playgroud)

更糟糕的是:

private String foo;
public void setFoo(String foo) { this.foo = foo; }
public String getFoo() { return foo; }
Run Code Online (Sandbox Code Playgroud)

而前者需要很少的样板代码.

java oop getter setter abstraction

1472
推荐指数
26
解决办法
37万
查看次数

每个'循环的Java'如何工作?

考虑:

List<String> someList = new ArrayList<String>();
// add "monkey", "donkey", "skeleton key" to someList
Run Code Online (Sandbox Code Playgroud)
for (String item : someList) {
    System.out.println(item);
}
Run Code Online (Sandbox Code Playgroud)

如果for不使用for each语法,等效循环会是什么样的?

java foreach syntactic-sugar

1446
推荐指数
25
解决办法
252万
查看次数

如何从文件内容创建Java字符串?

我一直在使用下面的成语一段时间了.它似乎是最广泛的,至少在我访问过的网站上.

是否有更好/不同的方式将文件读入Java中的字符串?

private String readFile(String file) throws IOException {
    BufferedReader reader = new BufferedReader(new FileReader (file));
    String         line = null;
    StringBuilder  stringBuilder = new StringBuilder();
    String         ls = System.getProperty("line.separator");

    try {
        while((line = reader.readLine()) != null) {
            stringBuilder.append(line);
            stringBuilder.append(ls);
        }

        return stringBuilder.toString();
    } finally {
        reader.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

java string io file-io file

1440
推荐指数
18
解决办法
132万
查看次数

如何将堆栈跟踪转换为字符串?

将结果转换为Throwable.getStackTrace()描述堆栈跟踪的字符串的最简单方法是什么?

java tostring stack-trace

1435
推荐指数
22
解决办法
58万
查看次数