String类型的学习
一 :關于兩個string類型變量是否相等:
請運行以下示例代碼StringPool.java,查看其輸出結果。如何解釋這樣的輸出結果?從中你能總結出什么?
?
?
分析:
首先為s0開辟空間,然后給s1開辟空間時發現與s0相同,所以s1和s0地址是相同的,,然后給s2開辟空間時發現也是相同的,要讓兩個變量相同,需要使他們的數值和地址都要相同,故前兩個輸出都是true,第三個先new一個“hello”,在new一個“hello”時就會在開辟一個空間,所以兩個不相同。故是false。
結論:
在Java中,內容相同的字串常量(“Hello”)只保存一份以節約內存,所以s0,s1,s2實際上引用的是同一個對象。
編譯器在編譯s2一句時,會去掉“+”號,直接把兩個字串連接起來得一個字串(“Hello”)。這種優化工作由Java編譯器自動完成。
當直接使用new關鍵字創建字符串對象時,雖然值一致(都是“Hello”),但仍然是兩個獨立的對象。
?
?
?
給字串變量賦值意味著:兩個變量(s1,s2)現在引用同一個字符串對象“a”,所以,s1==s2返回true 。 ?String對象的內容是只讀的,使用“+”修改s1變量的值,實際上是得到了一個新的字符串對象,其內容為“ab”,它與原先s1所引用的對象”a”無關,所以,s1==s2返回false;
代碼中的“ab”字符串是一個常量,它所引用的字符串與s1所引用的“ab”對象無關。所以,s1=“ab”返回false。
String.equals()方法可以比較兩個字符串的內容,他們的內容都是ab所以,返回true。
?
二:String.equals()方法
?
?
結果分析:當直接使用new關鍵字創建字符串對象時,雖然值一致(都是“Hello”),但仍然是兩個獨立的對象。,所以s1==s2返回false,但他們數值是一樣的,所以s1.equal(s2)返回true。,s3,s4引用的同一個對象,所以數值和地址都相同,所以最后兩個比較返回都是true。
?
?
三:字串加密
古羅馬皇帝凱撒在打仗時曾經使用過以下方法加密軍事情報:
?
?
?
請編寫一個程序,使用上述算法加密或解密用戶輸入的英文字串要求設計思想、程序流程圖、源代碼、結果截圖。
?
設計思想:加密和解密的思想就是把一個字符串中的所有字符加上或減去一個固定的值,然后在輸出來。首先傳入一個字符串,構造一個加密和解密的方法,輸入數字判斷選擇加密或者解密,在寫方法時,加密方法,需要定義一個char[]類型的方法,傳入一個字符串,返回一個char類型的數組,調用length()對字符串中的所有的字符進行加上一個3,如果是XYZ減去23,然后返回這個char數組即可,如果是解密方法,需要定義一個char[]類型的方法,傳入一個字符串,返回一個char類型的數組,調用length()對字符串中的所有的字符進行減去一個3,如果是ABC加上23,然后返回這個char數組即可。
?
流程圖:
?
源代碼:package Demo;
?
import java.util.Scanner;
?
public class JiaMi {
public static void main(String[]args)
{
Scanner scanner=new Scanner(System.in);
System.out.println("請輸入一個字符串");
String m=scanner.next();
System.out.println("請輸入你想加密還是解密,加密輸入1,解密輸入2");
int n=scanner.nextInt();
while(n!=1&&n!=2)
{
System.out.println("請重新輸入一個字符串");
n=scanner.nextInt();
}
if(n==1)
System.out.println(jiami(m));//如果下面的方法不定義為static類型的那摩在調用下面的方法時需這樣寫new JiaMi().jiami().
else if(n==2)
System.out.println(jiemi(m));
}
static char[] jiami(String m)//返回是數組時,定義時加個[]。
{
char[] c=new char [m.length()];
int i=0;
while(m.length()>i)
{
if(m.charAt(i)>=88 && m.charAt(i)<=90)
c[i]=(char)(m.charAt(i)-23);
else
c[i]=(char) (m.charAt(i)+3);
i++;
}
return c;
}
static char[] jiemi(String m)
{
char[] c=new char [m.length()];
int i=0;
while(m.length()>i)
{
if(m.charAt(i)<=67 && m.charAt(i)>=65)
c[i]=(char)(m.charAt(i)+23);
else
c[i]=(char) (m.charAt(i)-3);
i++;
}
return c;
}
}
結果截圖:
?
?
?
?
結果分析:第一個截圖是一個普通的加密結果,第二個是帶有特殊字符的(XYZ)的加密驗證,XYZ需要轉換成ABC ,結果正確,第三個是帶有特殊字符的解密驗證(ABC),ABC需要轉換成XYZ。驗證無誤。
String類型方法的總結:
主要包括Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()
2、String類的常用方法:
(1)public char charAt(int? index)返回字符串中第index個字符
(2)public int length()返回字符串的長度
(3)public String toUpperCase()返回一個字符串為該字符串的大寫形式
(4)public String toLowerCase()返回一個字符串為該字符串的小寫形式
(5)public String replace(char oldChar,char newChar)在字符串中用newChar字符替換oldChar字符
(6)public String trim()返回將該字符串去掉開頭和結尾空格后的字符串。
(7)char[ ] toCharArray() :將該String對象轉換成char數組。
(8)getChars() 將這個字符串字符復制到目的字符數組。
?
轉載于:https://www.cnblogs.com/qingtianxt/p/6006884.html
總結
以上是生活随笔為你收集整理的String类型的学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vmware centos 7 刚装上不
- 下一篇: 编码(encode)问题