Java字符串

Java字符串

        String對象是不可變的。String類中每一個看起來會修改String值的方法,實際上都是創建了一個全新的對象,以包含修改後的字符串。而最初的String對象則絲毫未動。

import java.util.*;

public class Immutable{
	public static String upcase(String s){
		return s.toUpperCase();
	}
	public static void main(String[] args){
		String q="helloworld";
		System.out.println(q);
		String qq=upcase(q);
		System.out.println(qq);
		System.out.println(q);
	}
}

其實,每當String對象作爲方法的參數時,都會複製一份引用,而該引用所指的對象其實一直待在單一的物理位置上,從未動過。

       不可變性會帶來一定的效率問題。爲String對象重載+操作符就是一個例子。重載的意思是:一個操作符應用於特定的類時,被賦予了特殊的意義。用於String的+,+=是Java中僅有的兩個重載過的操作符,而Java並不允許程序員重載任何操作符。 

import java.util.*;

public class Concatenation{
	public static void main(String[] args){
		String mango="mango";
		String s=mango+"abc"+"xyz"+47;
		System.out.println(s);
	}
}

String上的操作

length():String中字符的個數

charAt():取得String上該索引位置上的char

toCharArray():生成一個char[],包含所有的String字符

equals()/equalsIgnoreCase():比較兩個String的內容是否相同

compareTo():按字典順序比較字符串String的內容,比較結果爲負數,零或者正數

contains():如果String對象包含參數內容,則返回true

startsWith():返回boolean結果,表明String是否以此參數起始

endsWith():返回boolean結果,表明String是否以此參數結尾

indexOf()/lastIndexOf():如果String對象並不包含此參數,就返回-1,否則返回此參數在String中的起始索引。

lastIndexOf()是從後往前搜索的。

substring():返回一個新的String,以包含參數指定的子字符串

concat():返回一個新的String,內容爲原始String連接上參數String

replace():返回替換字符後的新String對象

toLowerCase()/toUpperCase():將字符串的大小寫改變後,返回一個新String對象

trim():將String對象的兩端空白字符刪除後,返回一個新的String對象

valueOf():返回一個表示參數內容的String


String格式化輸出

System.out.printf(),System.out.format()使得控制輸出的代碼更加簡單。


import java.util.*;

public class Receipt{
	private  double total=0;
	private Formatter f=new Formatter(System.out);
	public void printTitle(){
		f.format("%-15s %5s %10s\n","Item","Qty","Price");
		f.format("%-15s %5s %10s\n","----","---","-----");
	}
	public void print(String name,int qty,double price){
		f.format("%-15.15s %5d %10.2f\n",name,qty,price);
		total+=price;
	}
	public void printTotal(){
		f.format("%-15s %5s %10.2f\n","Tax","",total*0.06);
		f.format("%-15s %5s %10s\n","","","-----");
		f.format("%-15s %5s %10.2f\n","Total","",total*1.06);
	}
	public static void main(String[] args){
		Receipt receipt=new Receipt();
		receipt.printTitle();
		receipt.print("afafaa",4,4.25);
		receipt.print("ryturty",3,5.1);
		receipt.print("hgjd",1,14.29);
		receipt.printTotal();
	}
}


發佈了253 篇原創文章 · 獲贊 26 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章