1:JDK中所有对String修改的方法都是创建一个新的String对象。 2:方法的参数是String时,传递过来的都是String的引用,其值一直保存在某一物理位置。 3:JDK自带的反编译工具:javap 4:通过反编译String中的+操作符可看到:字符串连接符其实是用StringBuilder来实现的,因为StringBuilder效率高。 5:字符串拼接优化:适当的使用StringBuilder对象。StringBuilder是javase5加进去的,之前使用的是线程安全的StringBuffer。 6:toString()中无意识的递归调用: String toString(){return "这个对象的地址为:"+this} 由于字符串后的+是字符串连接符,所以编译器认为this是一个字符串,而this却并非如此,然后编译器就会将this转换为String,于是编译器调用了this.toString(),于是发生了递归。 7:格式化输出: 7.1:使用printf("Row 1:[%d,%f]",x,y); //x和y将分别代替%d,%f的位置,格式化为double类型和float类型。 7.2:System.out.format("Row 1:[%d,%f]",x,y); format方法和printf基本相同。 8:Formatter类: java中的格式化功能都由Formatter类处理,它就像一个翻译器,构造的时候传递一些信息,然后根据这些信息输出你需要的内容。 9:String.format()静态方法用于格式化String对象。 10:扫描输入:扫描输入需要解决输入,分词,翻译,返回等问题。 Scanner对象构造的时候可以接受任何的输入源(String、File、InputStream、ReadAble对象)。 Scanner将所有的输入、分词、翻译、都封装在了各种类型的next()方法中(除char的基本类型,BigDecimal、BigInteger)。 11:Scanner界定符: 默认Scanner对象使用空格作为界定符,可以使用useDelimiter()来设置界定符。 12:java正则表达式(一种强大灵活的文本处理工具): 在正则表达式中\d表示一位数字,向正则表达式中写入\方法是\\,所以一位数字表达为:\\d 向正则表达式中添加一个普通的\的方法是\\\\ 但是制表符合换行不需要通过转义的\:\t\n 表达:“一个或者多个之前的表达式”使用+。 表达:“可能有一个负号”:-? 例如:表达“可能有一个负数,后面跟着一位或者多位数字”使用-?\\d+ 13:String匹配字符串: System.out.println("-123".matches("-?\\d+")); //true System.out.println("+123".matches("(-|\\+)?\\d+")); //(由于+在正则中有特殊意义所以使用\\进行转义)true Arrays.toString("123,123,354,565".split(",")); System.out.println("123,345,2345,654".replaceAll(",","-")); 14:正则表达式: ?????