java - 如何从主类访问更新的字符串

标签 java string

这是sha1哈希函数的代码。我想从 main 函数访问 sb 字符串。我可以访问 sb 字符串但未反射(reflect)在 main 函数中。

 import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class sha1 {

    /**
     * @param args
     * @throws NoSuchAlgorithmException 
     */
    public String sb1;

    public void printkey(String convert){

        sb1=sha1(convert) ;
        System.out.println(sb1);
    }


    public String sha1(String input)  {
        StringBuffer sb = new StringBuffer();
        sha1 rr= new sha1();
        try{

            MessageDigest mDigest = MessageDigest.getInstance("SHA1");
            byte[] result = mDigest.digest(input.getBytes());

            for (int i = 0; i < result.length; i++) {
            sb.append(Integer.toString((result[i] & 0xff) + 0x100, 16).substring(1));

        }

        rr.sb1=sb.toString();
        System.out.println("\n");
        System.out.println(rr.sb1);



        }
        catch ( NoSuchAlgorithmException nsae ) { 
            System.out.println(nsae);
        }
    return sb1;
    }

当我从主类访问 sb1 时,它不会给出在 printkey 函数中打印的任何输出。 Printkey 给出了正确的输出。我希望更新的 sb 应该从 main 函数中看到。

public static void main(String[] args) {

sha1 m=new sha1();
System.out.println("\n");
System.out.println(m.sb1);

}

最佳答案

您的问题是您的 sha1 方法正在创建一个新实例并设置该新实例的字符串。因此,原始实例(在 main 方法中创建的实例)的 sb1 永远不会更新。

更改:

sha1 rr= new sha1();
....
rr.sb1=sb.toString();

致:

sb1 = sb.toString();

此外,您似乎没有调用 printkey,它调用您的 sha1 方法。您可能想在主方法中调用它。

关于java - 如何从主类访问更新的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27688789/

相关文章:

java - 有没有办法使用 java 与 CATIA V5 R20 交换数据?

perl - 如何使用 Perl 搜索字符串中生物信息学基序的不同变体?

java - 澄清java异常赋值中所要求的内容

java - static final String = "something"- static 有意义吗?

c++ - 强大的数字用户输入功能,但零不被视为数字

ios - 如何在 Xcode 5 中将数字替换为图像

jquery - 查找多个类中包含类名

java接口(interface)问题

java - 如何使用 java.util.GZIPOutputStream 或任何其他将多个记录存储为单个文件,其中每个记录单独压缩?

java - 如何解析字符串以正确获取小数点和带点的单词?