我刚刚开始用Java编写程序.以下Java代码是什么意思?
public static void main(String[] args)
Run Code Online (Sandbox Code Playgroud)
什么是String[] args?
你什么时候用这些args?
源代码和/或示例优于抽象解释
我的团队交出了一些生成随机令牌的服务器端代码(用Java),我对此有一个问题 -
这些令牌的目的是相当敏感的 - 用于会话ID,密码重置链接等.所以他们确实需要加密随机,以避免有人猜测它们或蛮力强制它们.令牌是"长",所以它是64位长.
代码当前使用java.util.Random该类来生成这些令牌.文档([ http://docs.oracle.com/javase/7/docs/api/java/util/Random.html] [1 ])java.util.Random清楚地说明了以下内容:
java.util.Random的实例不具有加密安全性.相反,请考虑使用SecureRandom来获取加密安全的伪随机数生成器,以供安全敏感应用程序使用.
但是,代码当前使用的方式java.util.Random是 - 它实例化java.security.SecureRandom类,然后使用该SecureRandom.nextLong()方法获取用于实例化java.util.Random类的种子.然后它使用java.util.Random.nextLong()方法生成令牌.
所以我现在的问题 - 鉴于java.util.Random正在使用种子,它仍然是不安全的java.security.SecureRandom吗?我是否需要修改代码以便它java.security.SecureRandom专门用于生成令牌?
目前代码种子是Random启动时的一次
Java中允许向上转换,但是向下转换会产生编译错误.
可以通过添加强制转换来删除编译错误,但无论如何都会在运行时中断.
在这种情况下,为什么Java允许向下转换,如果它不能在运行时执行?
这个概念有什么实际用途吗?
public class demo {
public static void main(String a[]) {
B b = (B) new A(); // compiles with the cast,
// but runtime exception - java.lang.ClassCastException
}
}
class A {
public void draw() {
System.out.println("1");
}
public void draw1() {
System.out.println("2");
}
}
class B extends A {
public void draw() {
System.out.println("3");
}
public void draw2() {
System.out.println("4");
}
}
Run Code Online (Sandbox Code Playgroud) 为什么~2等于-3?~操作员如何工作?
我目前正在学习Java,最近被尖括号(<>)困扰了.他们究竟是什么意思?
public class Pool<T>{
public interface PoolFactory<T>{
public T createObject();
}
this.freeObjects= new ArrayList<T>(maxsize)
}
Run Code Online (Sandbox Code Playgroud)
什么<T>意思?这是否意味着我可以创建一个类型的对象T?
看看下面的程序.
try {
for (String data : Files.readAllLines(Paths.get("D:/sample.txt"))){
String[] de = data.split(";");
System.out.println("Length = " + de.length);
}
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
Sample.txt的:
1;2;3;4 A;B;; a;b;c;
输出:
Length = 4 Length = 2 Length = 3
为什么第二和第三个输出给出2和3而不是4.在sample.txt文件中,第二行和第三行的条件应该\n在给第三个字段的分隔符后立即给出换行符(或输入).任何人都可以帮助我如何在不更改sample.txt文件条件和如何打印de[2](抛出 ArrayIndexOutOfBoundsException)值的情况下将长度设置为第2行和第3行4 ?
我有一个像这样的JSON文件:
[
{
"number": "3",
"title": "hello_world",
}, {
"number": "2",
"title": "hello_world",
}
]
Run Code Online (Sandbox Code Playgroud)
在文件有根元素之前我会使用:
Wrapper w = gson.fromJson(JSONSTRING, Wrapper.class);
Run Code Online (Sandbox Code Playgroud)
代码,但我想不出如何编写Wrapper类,因为根元素是一个数组.
我尝试过使用:
Wrapper[] wrapper = gson.fromJson(jsonLine, Wrapper[].class);
Run Code Online (Sandbox Code Playgroud)
有:
public class Wrapper{
String number;
String title;
}
Run Code Online (Sandbox Code Playgroud)
但是没有运气.我怎么能用这种方法读这个?
PS我有这个工作使用:
JsonArray entries = (JsonArray) new JsonParser().parse(jsonLine);
String title = ((JsonObject)entries.get(0)).get("title");
Run Code Online (Sandbox Code Playgroud)
但我更愿意知道如何使用这两种方法(如果可能的话).
在Java 8之前我们拆分空字符串之类的
String[] tokens = "abc".split("");
Run Code Online (Sandbox Code Playgroud)
分裂机制会在标有的地方分开 |
|a|b|c|
Run Code Online (Sandbox Code Playgroud)
因为""每个字符前后都有空格.因此,它最初将生成此数组
["", "a", "b", "c", ""]
Run Code Online (Sandbox Code Playgroud)
然后将删除尾随的空字符串(因为我们没有明确地为limit参数提供负值),所以它最终会返回
["", "a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)
在Java 8中,拆分机制似乎已经发生了变化.现在我们用的时候
"abc".split("")
Run Code Online (Sandbox Code Playgroud)
我们将得到["a", "b", "c"]数组,而不是["", "a", "b", "c"]看起来像开始时的空字符串也被删除.但是这个理论失败了,例如
"abc".split("a")
Run Code Online (Sandbox Code Playgroud)
在start时返回带有空字符串的数组["", "bc"].
有人可以解释这里发生了什么,以及这些案例的拆分规则在Java 8中是如何变化的?
我有一个以字符串形式传入的句子,我正在对"和"这个词进行替换,我想用""替换它.它并没有用空格替换"和"这个词.以下是我的逻辑示例.当我调试它时,逻辑确实属于sentence.replace.
String sentence = "Define, Measure, Analyze, Design and Verify"
if (sentence.contains("and")){
sentence.replace("and", " ");
}
Run Code Online (Sandbox Code Playgroud)
这里有什么我想念的东西.
在CodeReview上,我发布了一段代码,并询问了改进它的提示.我得到的是使用布尔方法来检查ArrayList是否具有偶数个索引(这是必需的).这是建议的代码:
private static boolean isEven(int number)
{
return (number & 1) == 0;
}
Run Code Online (Sandbox Code Playgroud)
由于我已经为那个特定的用户提供了很多帮助,我已经决定是时候纠缠SO社区了!我真的不明白这是如何工作的.调用该方法并将ArrayList的大小作为参数(即ArrayList具有十个元素,数字= 10).
我知道一个单独&运行数字和1的比较,但在那之后我迷路了.
我读它的方式,就是说,如果number == 0和,则返回true 1 == 0.我知道第一个不是真的,后者显然没有意义.有人可以帮帮我吗?
编辑:我应该添加代码确实有效,万一有人想知道.