package tw.xxx.xxx.copy.oop;
public class TestWrapperClassesEx1 {
public static void main(String[] args) {
String number = "1000";//設定一個字串形態的數字
System.out.println("字串形態的數字無法直接當數字使用,所以是12341而不是1235:"+(number+1));
//字串使用+號時時將兩個字串連在一起,所以number+1會自動把1也變成字串,產生12341
System.out.println("------");
int num1 = Integer.parseInt(number);//把字串轉成整數的簡單語法
System.out.println("num1是number以整數形態表示的變數,所以(num1+1)可以計算:"+(num1+2));
System.out.println("------");
Integer num2 = new Integer(number);//利用Integer內建的建構子Integer(String str)來產生一個Integer物件num2
//注意num2是一個Integer的物件,不是一個基本型態
int num2_1 = num2.intValue();//intValue():Returns the value of this Integer as an int.
//上面兩行也可以直接寫成一行:int num_2 = new Integer(number).intValue();
System.out.println("num2_1是從物件num2傳出來的int變數,(num2_1+3)可以做計算:"+(num2_1+3));
//但其實現在java很多東西都有自動封裝、拆除,所以就算直接用num2做計算也可以
System.out.println("num2也可以做計算:"+(num2+10));
System.out.println("------");
int num3 =Integer.valueOf(number);
System.out.println("valueOf會回傳int型別的資料,所以可以直接等於int num3,進行計算:"+(num3+4));
//上面這一行也可以這樣寫:
// Integer num4 = Integer.valueOf(number);//num4接收的是Integer object
// int num4_1 = num4.intValue();
// 上面這兩行一樣可以化為一行:
//int num4_1 = Integer.valueOf(number).intValue();
}
}
字串形態的數字無法直接當數字使用,所以是12341而不是1235:10001
------
num1是number以整數形態表示的變數,所以(num1+1)可以計算:1002
------
num2_1是從物件num2傳出來的int變數,(num2_1+3)可以做計算:1003
num2也可以做計算:1010
------
valueOf會回傳int型別的資料,所以可以直接等於int num3,進行計算:1004
package tw.xxx.xxx.copy.oop;
public class TestStringEx1 {
public static void main(String[] args) {
String str1 = "hi";// 放在字串池
String str2 = new String("有新記憶體");// 會有新實體
String str3 = str1 + str2;
System.out.println("str3=" + str3);// 都是字串,可以連結
System.out.println("str1+1+2=" + str1 + 1 + 2);// 1會先碰到字串str1被同化變成字串,再碰到2把2也變成字串:hi12
System.out.println("str1+(1+2)=" + str1 + (1 + 2));// 先做括號內計算=3,之後被同化成字串:hi3
System.out.println("正統數字轉字串:" + str1
+ new Integer(1).toString()
+ new Integer(2).toString());// 結果也是hi12
int number = 3 * 5 + 1;// =16
showMsg("" + number);// showMsg(方法寫在下面)要求輸入的必須是字串,所以要先把number轉成字串形態,用"
// "相連最簡單(碰到字串的整數會被同化成字串)
showMsg(new Integer(number).toString());// 跟上面一樣的意思
}
public static void showMsg(String number) {
System.out.println("number:" + number);
}
}
str3=hi有新記憶體
str1+1+2=hi12
str1+(1+2)=hi3
正統數字轉字串:hi12
字串的一些方法:字串長度、某個字串是否以特定字串開始、第某個位置是甚麼字、某些內容開始於第幾個位置、顯示某個位置到另一個位置是甚麼內容、把字串用關鍵字分開放入陣列
package tw.xxx.myfirstproject.oop;
public class TestStringMethodEx1 {
public static void main(String[] args) {
String data ="abcdefg890";
System.out.println("data.length():"+data.length());
//字串長度
System.out.println("data.startsWith(abcdrfg):"+data.startsWith("abcdefg"));
//是/否以...為開始字串
System.out.println("data.charAt(5):"+data.charAt(5));
//從零開始數,第五個字(第6個)
System.out.println("data.indexOf(efg):"+data.indexOf("efg"));
//一樣從0開始數,只給第一個字的位置
System.out.println("data.substring(3, 5):"+data.substring(3, 5));
//包前不包後,所以(3,5)是只有3,4(沒有5),一樣從0開始數
String names = "mary:john:judy:david:michelle";
//若是mary*john則下方改為names.split("\\*")
String[] nameValue = names.split(":");//把names這個字串裡的內容以:作為分割,並一一傳入陣列中
for(String nickename:nameValue){
System.out.println(nickename);
}
}
}
data.length():10
data.startsWith(abcdrfg):true
data.charAt(5):f
data.indexOf(efg):4
data.substring(3, 5):de
mary
john
judy
david
michelle
package tw.tinachang.myfirstproject.oop;
public class TestToStringEx1 {
@Override
public String toString(){//toString是Object底下的方法,這邊是在改寫(override)
return "Hi!";
}
public static void main(String[] args) {
TestToStringEx1 test1 = new TestToStringEx1();
System.out.println("test1="+test1);
System.out.println("test1.toString="+test1.toString());
//.toString()是object的物件,在用println時會預設(偷偷幫你寫了)把不是String的物件後面加上.toString
//所以test1跟test1.toString()印出來的結果一樣
//可以試試看把4-7行消掉的結果,會是一個地址串,那是java預設的toString會回傳的資訊
}
}
test1=Hi!
test1.toString=Hi!
如果把4-7消掉:
test1=tw.tinachang.myfirstproject.oop.TestToStringEx1@139a55
test1.toString=tw.tinachang.myfirstproject.oop.TestToStringEx1@139a55
留言列表