課後做業1:字串加密java
請編寫一個程序,使用上述算法加密或解密用戶輸入的英文字串要求設計思想、程序流程圖、源代碼、結果截圖。算法
設計思想:數組
輸入字符串->將字符串轉換爲單個字符->每一個字符加3->鏈接字符串->字符串加密輸出學習
程序流程圖:加密
源代碼:設計
//陶雨潔 2016/10/28 201531523d
package 字符運用;對象
import javax.swing.*;blog
import java.util.Scanner;內存
public class Stringyy {
public static void main( String args[] )
{
//轉爲可用字符串
System.out.println("輸入加密的字母字符");
Scanner input=new Scanner(System.in);
String mm=input.nextLine();
int n=mm.length();
String str1=new String();
for(int i=0;i<n;i++)
{
char a=mm.charAt(i);//取出單個字符
a=(char)(a+3);//每一個字符對應加3獲得對應的字符
str1=str1+a;//鏈接
}
System.out.println("加密後的爲:"+str1);
}
}
結果截圖:
課後做業2:動手動腦
請運行如下示例代碼StringPool.java,查看其輸出結果。如何解釋這樣的輸出結果?從中你能總結出什麼?
輸出結果:
true ture false
思考:
Java將同一內容的字符串保存在同一個地址當中,字符==判斷是判斷地址和數據,因此s0==s1爲true。而字符串+會自動鏈接,因此實際上s2就是String s2=」HELLO」;,s0==s2也爲true。這些個都是使用的同一個內存空間,而一旦new就表明申請新的內存空間,結果就是不一樣的內存位置固然判等是就會顯示false。
爲何會有上述的輸出結果?從中你又能總結出什麼?
輸出結果:
True false false true
思考:
S1與s2引用同一個字符「a」,因爲數據內容相同因此保存在同一個地址,s1==s2結果是true,String類型+=操做以後獲得一個新的字符串對象,s1==s2爲false。字符串常量地址和申請的字符串對象地址無關,因此s2==」ab」爲false。
.equals()判斷數據內容。
請查看String.equals()方法的實現代碼,注意學習其實現方法。
實現代碼說起String s1=newString(「hello」);與String s1=」hello」;的區別。咱們知道new了一個新的對象以後,即使String數據內容相同可是地址還是不一樣的,而若是是String類型變量賦值,結果卻不一樣,一樣數據內容的變量地址是相同的。
整理String類的Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()使用說明
Length():S. Length()表明字符串S的長度
charAt():S.charAt(i)表明S字符串提出單個第i個字符
getChars():charArray = new char[ 5 ];//定義一個字符串數組
s1.getChars( 0, 5, charArray, 0 );//將字符串S1從下標爲0開始到下標爲5保存在charAt數組當中,且拷貝的字符放在charAt的起始下標爲0.
for ( int i = 0; i < charArray.length;i++ )
output += charArray[ i ];//以字符數組的形式輸出字符
replace():將原字符串中的某個字符替換爲指定的字符,並獲得一個新的字符串
toUpperCase()、toLowerCase():大小寫轉換,toLowerCase()用來將字符串中的全部大寫字母改成小寫字母,,方法toUpperCase()用來將字符串中的全部小寫字母改成大寫字母。返回值均爲已經轉換的字符。
trim():去除頭尾空格,獲得一個新的字符串。
toCharArray():將字符串對象轉換爲字符數組