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();
	}
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值