小编Psh*_*emo的帖子

什么是"String args []"?主方法Java中的参数

我刚刚开始用Java编写程序.以下Java代码是什么意思?

public static void main(String[] args)
Run Code Online (Sandbox Code Playgroud)
  • 什么是String[] args

  • 你什么时候用这些args

源代码和/或示例优于抽象解释

java parameters program-entry-point command-line-arguments

296
推荐指数
13
解决办法
89万
查看次数

java.util.Random和java.security.SecureRandom之间的区别

我的团队交出了一些生成随机令牌的服务器端代码(用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 security random cryptography

200
推荐指数
3
解决办法
8万
查看次数

在Java中向下倾斜

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)

java casting

174
推荐指数
4
解决办法
19万
查看次数

169
推荐指数
6
解决办法
19万
查看次数

Java中的<T>(尖括号)是什么意思?

我目前正在学习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

java generics

126
推荐指数
6
解决办法
11万
查看次数

Java split()方法最后会删除空字符串?

看看下面的程序.

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 ?

java split

113
推荐指数
2
解决办法
6万
查看次数

使用GSON解析JSON数组

我有一个像这样的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 arrays json gson

109
推荐指数
3
解决办法
14万
查看次数

为什么在Java 8 split中有时会在结果数组的开头删除空字符串?

在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中是如何变化的?

java regex split java-8

107
推荐指数
3
解决办法
3万
查看次数

字符串不替换字符

我有一个以字符串形式传入的句子,我正在对"和"这个词进行替换,我想用""替换它.它并没有用空格替换"和"这个词.以下是我的逻辑示例.当我调试它时,逻辑确实属于sentence.replace.

String sentence = "Define, Measure, Analyze, Design and Verify"
if (sentence.contains("and")){
    sentence.replace("and", " ");
}
Run Code Online (Sandbox Code Playgroud)

这里有什么我想念的东西.

java string replace

77
推荐指数
4
解决办法
43万
查看次数

这个布尔"(数字&1)== 0"是什么意思?

在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.我知道第一个不是真的,后者显然没有意义.有人可以帮帮我吗?

编辑:我应该添加代码确实有效,万一有人想知道.

java methods int boolean arraylist

76
推荐指数
5
解决办法
7556
查看次数