我是靠谱客的博主 紧张小蘑菇,最近开发中收集的这篇文章主要介绍(Thinking in Java学习笔记)字符串,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • 不可变String

String对象是不可变的。
String类中每个看起来会修改String值得方法,实际上都是创建了一个全新的String对象,以包含修改后的字符串内容。
而最初的String对象则丝毫未动。

  • 重载“+”与StringBuilder

用 于String的“+”与“+=”是Java中仅有的两个重载过的操作符;
而Java并不允许程序员重载任何操作符。(C++允许)

使用“+”连接一个String对象时,编译器会自动创建一个StringBuilder对象,来构造最终的String,并为每个字符串调用一次StringBuilder的append()方法。但是进入循环语句时,每一次遇到“+”都会创建一个新的StringBuilder对象。
可以主动在代码中使用StringBuilder。

  • 无意识的递归

在一个类的toString()方法中返回一个”"字符串" + this + 其它“时会调用this的toString()方法,产生递归调用。
public class InfiniteRecursion {
	public String toString() {
		return " InfiniteRecursion" + super.toString() + "n";
//		return " InfiniteRecursion" + this + "n";// 会产生异常。this在这指InfiniteRecursion对象,会调用toString()方法,发生递归调用。
	}
	public static void main(String[] args) {
		ArrayList<InfiniteRecursion> v = new ArrayList<InfiniteRecursion>();
		for(int i = 0; i < 10; i++) {
			v.add(new InfiniteRecursion());
		}
		System.out.println(v);
	}
}

  • String上的操作
  • 格式化输出
System.out.format()
<span style="font-weight: normal;">system.out.println("Row 1:  [" + x + " " + y + "]");
system.out.format("Row 1:  [%d %f]n", x, y);
system.out.printf("Row 1:  [%d %f]n", x, y);
//format() 与 printf()是等价的</span>
String.format()
String.format()是一个static方法,
接受与Formatter.format()方法一样的参数,但返回一个String对象。
Formatter类
format()方法
构造时告诉Formatter对象将结果向哪里输出
格式化说明符
%[argument_index$][flags][width][.precision]conversion
argument_index$flagswidth.precision
dcbsfexh默认数据右对齐,使用”-“左对齐一个域的最小尺寸String:打印String时输出字符的最大数量
浮点数:表示小数部分要显示出来的位数(默认6位)
整数:无法应用,否则触发异常
<span style="font-weight: normal;">//: strings/Receipt.java
package strings;
import java.util.*;

public class Receipt {
	private double total = 0;
	private Formatter f = new Formatter(System.out);
	public void printTitle() {
		f.format("%-15s %5s %10sn", "Item", "Qty", "Price");
		f.format("%-15s %5s %10sn", "----", "---", "-----");
	}
	public void print(String name, int qty, double price) {
		f.format("%-15.15s %5d %10.2fn", name, qty, price);
		total += price;
	}
	public void printTotal() {
		f.format("%-15.15s %5s %10.2fn", "Tax", "", total*0.06);
		f.format("%-15s %5s %10sn", "", "", "-----");
		f.format("%-15s %5s %10.2fn", "Total", "", total*1.06);
	}
	public static void main(String[] args) {
		Receipt receipt = new Receipt();
		receipt.printTitle();
		receipt.print("Jack's Magic Bean", 4, 4.25);
		receipt.print("Princess Peas", 3, 5.1);
		receipt.print("Three Bears Por", 1, 14.29);
		receipt.printTotal();
	}
}</span>
Formatter转换
对于boolean基本类型或Boolean对象,转换结果是对应的true或flase。
对于其他类型的参数,只要该参数不为null,那转换的结果永远都是true,即使是数字0。
  • 正则表达式
基础


  • 扫描输入

最后

以上就是紧张小蘑菇为你收集整理的(Thinking in Java学习笔记)字符串的全部内容,希望文章能够帮你解决(Thinking in Java学习笔记)字符串所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部