Java新手试图将字符串传递给Java实例
目前,我正试图在我正在创建的项目中执行凯撒密码。但是,当我试图将字符串传递给处理它的实例时,它似乎根本无法处理它。(现在我忽略了空格和标点符号)Java新手试图将字符串传递给Java实例,java,string,char,instance,Java,String,Char,Instance,目前,我正试图在我正在创建的项目中执行凯撒密码。但是,当我试图将字符串传递给处理它的实例时,它似乎根本无法处理它。(现在我忽略了空格和标点符号) import javax.swing.*; 导入java.text.*; 导入java.util.*; 导入java.lang.*; 公共类密码{ 私有字符串短语;//将被加密的短语 private int shift;//移动字母的数字 /////////////// //建造师// ////////////// 公共密码(int new_shift
import javax.swing.*;
导入java.text.*;
导入java.util.*;
导入java.lang.*;
公共类密码{
私有字符串短语;//将被加密的短语
private int shift;//移动字母的数字
///////////////
//建造师//
//////////////
公共密码(int new_shift)
{
班次=新班次;
}//密码构造函数的结尾
////////////
//存取器//
////////////
public int askShift(){
返回移位;
}//askShift存取器的结束
////////////
//突变子//
////////////
公共无效转换(int新闻转换){
班次=新班次;
}//变换移位变异体结束
/////////////
//实例//
/////////////
公共字符串加密(字符串消息){
char[]charArray=message.toCharArray();//转换为字符数组
//执行加密的循环
for(int count=0;count
您需要再次将返回值分配给短语
phrase=cipher.encryptIt(phrase);
你必须换这条线
cipher.encryptIt(phrase);
到
以更改短语
变量的值
这是因为Java通过值传递所有参数。这意味着,当您通过方法发送变量时,您发送的不是实际引用,而是引用的副本。您的新加密字符串是一个返回值。传递给该方法的字符串保持不变。举个例子
String encryption = cipher.encryptIt(phrase);
JOptionPane.showMessageDialog(null, encryption );
您应该知道的一件主要事情是:在Java中,方法参数是按值传递的
简言之:
public void foo(Bar bar) {
bar = new Bar(999);
}
public void someMethod() {
Bar b = new Bar(1);
foo(b);
// b is still pointing to Bar(1)
}
因此,您的message=新字符串(charArray)
不会影响传递给encryptIt()
的参数,这与字符串的不可变性无关。这都是因为传递值
String encryption = cipher.encryptIt(phrase);
JOptionPane.showMessageDialog(null, encryption );
public void foo(Bar bar) {
bar = new Bar(999);
}
public void someMethod() {
Bar b = new Bar(1);
foo(b);
// b is still pointing to Bar(1)
}