我知道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的新手,经常发现我需要对Map<Key, Value>值进行排序.
由于值不是唯一的,我发现自己将其转换keySet为a array,并通过数组排序对该数组进行排序,并使用自定义比较器对与键关联的值进行排序.
有没有更简单的方法?
我遇到了一些具有以下结构的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是否支持这种语法?有没有理由说这两步语法更可取?
我有一个字符串,"004-034556"我想分成两个字符串:
string1="004";
string2="034556";
Run Code Online (Sandbox Code Playgroud)
这意味着第一个字符串将包含之前的字符'-',第二个字符串将包含之后的字符'-'.我还想检查字符串是否包含'-'在其中.如果没有,我会抛出异常.我怎样才能做到这一点?
我正在尝试使用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可能是旧的或太新的.
.../binJRE或JDK中的变量有什么区别?StringBuffer和之间的主要区别是StringBuilder什么?在决定其中任何一个时,是否存在任何性能问题?
使用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)
而前者需要很少的样板代码.
考虑:
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中的字符串?
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) 将结果转换为Throwable.getStackTrace()描述堆栈跟踪的字符串的最简单方法是什么?
java ×10
string ×2
abstraction ×1
collections ×1
dictionary ×1
enums ×1
file ×1
file-io ×1
foreach ×1
getter ×1
io ×1
jvm ×1
methods ×1
oop ×1
overloading ×1
parameters ×1
setter ×1
sorting ×1
stack-trace ×1
stringbuffer ×1
tostring ×1