相关疑难解决方法(0)

JPasswordField返回一些转换为字符串类型的哈希码

我的程序在初始化程序之前从用户获取用户名和密码验证,因此我创建了一个登录按钮,我将ActionListener关联到以下所示

   login.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event){
                if(txtUserName.getText().equals("Suraj") && (txtPwd.getPassword().toString()).equals("s123")){

                                dispose();
                                TimeFrame tFrame = new TimeFrame(userName);
                                tFrame.setVisible(true);
                                tFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
                                tFrame.setLayout(new GridLayout());

                        } else {
                            JOptionPane.showMessageDialog(null,"User name or password don't match","Acces Denied", JOptionPane.ERROR_MESSAGE);
                        }
Run Code Online (Sandbox Code Playgroud)

现在出现的问题是即使输入正确的密码,程序也会显示错误消息在此输入图像描述智者

java swing jpasswordfield

2
推荐指数
1
解决办法
3756
查看次数

关于java中弱引用的困惑

我试图理解弱引用,我在wiki中看到了以下代码:

import java.lang.ref.WeakReference;

public class ReferenceTest {
    public static void main(String[] args) throws InterruptedException {

            WeakReference r = new WeakReference(new String("I'm here"));
            WeakReference sr = new WeakReference("I'm here");
            System.out.println("before gc: r=" + r.get() + ", static=" + sr.get());
            System.gc();
            Thread.sleep(100);

            // only r.get() becomes null
            System.out.println("after gc: r=" + r.get() + ", static=" + sr.get());

    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我为什么只有r变为null,即使它持有一个强引用(新字符串)?

java reference weak-references

2
推荐指数
1
解决办法
98
查看次数

在运行时可以将字符串添加到字符串池吗?

如果我从方法调用或从中获取字符串对象StringBuilder.toString(),该字符串是否会添加到字符串池中?

String类是否仅在类加载期间添加到池中?

java heap-memory string-pool

2
推荐指数
2
解决办法
148
查看次数

Java字符串池测试不起作用

在阅读了Java String Pool之后,我决定进行一些测试.我编写了以下测试程序,根据JDK规范,它的结果与Java String Pool行为不匹配.

public class Temp_20141220 {

    private String b1 = "hello";

    public static void main(String[] args) {
        Temp_20141220 t = new Temp_20141220();
        String b = "hello";
        System.out.println("b==b1 =" + t.b1 == b);
    }
}
Run Code Online (Sandbox Code Playgroud)

我一直期望得到输出:b == b1 = true但是我得到了:b == b1 = false

为什么这样?Ubuntu的JVM不支持这个Java字符串池功能吗?

java string pool

1
推荐指数
1
解决办法
91
查看次数

将null分配给字符串var以删除敏感数据

在这里查看一些Fortify的发现,它告诉我不要对敏感数据使用字符串数据类型,因为它们可能会在内存中停留太长时间.如果存在无关的内存攻击,例如Heartbleed,则会暴露用户的数据.

如果我在使用后将字符串var设置为null,那么该内存位置是否实际被清除,或者是为存储null而创建的var的副本?

谢谢

java fortify

1
推荐指数
1
解决办法
207
查看次数

为什么kotlin使用===比较原始类型如果它们具有相同的值则彼此相等

val hello1 = "hello"
val hello2 = "hello"
printf(hello1 === hello2)
Run Code Online (Sandbox Code Playgroud)

为什么打印真实?

我猜kotlin有一个原始类型的池(或类似的东西).如果值是相等的,则指针指向同一个地方.我不确定.

kotlin

1
推荐指数
1
解决办法
541
查看次数

为什么这些字符串没有指向 java 中的同一个对象?

我知道如果我有 2 个具有相同值的字符串变量,由于 java 字符串池,它们指向同一个字符串对象。

下面是一个例子:

String test = "1234";
String test2 = "1234";
    
System.out.println(test == test2);
System.out.println("1234" == test2);
Run Code Online (Sandbox Code Playgroud)

输出如下:

true
true
Run Code Online (Sandbox Code Playgroud)

但是如果我有以下代码,它会打印出它们不是同一个对象

String test = "1234";
int i = 1234;
String s = "" + i;
    
System.out.println(test == s);
System.out.println("1234" == s);
Run Code Online (Sandbox Code Playgroud)

输出:

false
false
Run Code Online (Sandbox Code Playgroud)

任何人都会向我解释这种行为的原因吗?

java string pool

1
推荐指数
1
解决办法
91
查看次数

java如何将引号中的任何内容识别为字符串对象?

如果我写:

String s = new String("abc");
Run Code Online (Sandbox Code Playgroud)

它创建一个类型String为"abc"的对象.如果我写:

String s = "abc";
Run Code Online (Sandbox Code Playgroud)

这也会创建一个值为"abc"的对象.如何在不遇到新关键字的情况下创建对象.

如果我写:

s.append("def");
Run Code Online (Sandbox Code Playgroud)

它创建了另外两个字符串对象:

a. "abcdef"  
b. "def"
Run Code Online (Sandbox Code Playgroud)

因此,在遇到双重引号内的任何内容时,都会创建一个新String对象.这是怎么发生的?

java string

0
推荐指数
2
解决办法
553
查看次数

新String有什么问题?

由于我的写作,我没有给出任何理由的代码审查失败,因为一个函数s(String类型)作为参数传递

if (s == null){
    s = new String();
}
Run Code Online (Sandbox Code Playgroud)

说我应该用s = "";.为什么?

java

0
推荐指数
1
解决办法
87
查看次数

Kotlin平等表现出与预期不同的产出

假设我有一个函数:

 fun equality() {
        var a = "kotlin"
        var b = "kotlin"
        var c = a
        println(a==b)  //true
        println(a===b) //false
        println(a==c)  //true
        println(a===c) //true
    }
Run Code Online (Sandbox Code Playgroud)

根据kotlin === a和b是不同的实例,所以我的预期输出是:

true
false
true
true
Run Code Online (Sandbox Code Playgroud)

但实际上显示:

true
true
true
true
Run Code Online (Sandbox Code Playgroud)

我不明白a === b是怎么回事。

equality kotlin

0
推荐指数
1
解决办法
50
查看次数

为什么DOES ==有时会在Java中处理字符串?

我有以下代码:

Circle c1 = new Circle();
Circle c2 = new Circle();
System.out.println(c1 == c2);
Run Code Online (Sandbox Code Playgroud)

False按预期方式输出哪些产出.这是因为c1并且c2是引用类型和"=="检查它们是否引用相同的类型(它们不是).

但是,我最近试过这个:

String a = "hello";
String b = "hello";
System.out.println(a == b);
Run Code Online (Sandbox Code Playgroud)

由于某种原因输出True.为什么是这样?String是引用类型,a并且b指向不同的内存位置.我总是被告知你需要使用.equals()它来工作,这不是!

请参阅:https://ideone.com/CyjE49

更新 这不是重复!我知道比较字符串的正确方法是使用.eqauls()

更新2 这个问题可能有一个答案:我如何比较Java中的字符串?,但问题是没有问我在问什么,答案只是比需要更详细.

因此,使用我的相同问题(在谷歌或其他方面)进行搜索意味着用户将不会被发送到该问题,或者由于问题的标题而可能完全解雇该问题.因此,为了其他用户的利益而保持这一点可能是一个好主意!

java

-3
推荐指数
1
解决办法
165
查看次数

String str ="'&String str = null之间的差异

String str1=""和之间有什么区别String str2 =null?当我们打印str1时没有输出,当我们打印str2输出时null.

java string

-6
推荐指数
1
解决办法
3508
查看次数