怎么使用注释文档
/** * @author xiaoshuai * @since JDK1.8 * @version 1.0 * */ public class ApiDemo { /** * sayHello中问候语“你好!”; */ public static final String INFO="你好!"; /** *为给定用户添加问候语 * @param name 给定的用户名 * @return 一个含有问候语的字符串 */ public String sayHello(String name){ return "你好!"+name; } }
字符串常量池
/** * @author xiaoshuai */ public class StringDemo { public static void main(String[] args) { /** * java推荐我们使用字面量形式创建字符串 * 对象,因为使用相同字面量创建字符串 * 对象会被重用 */ String s1 = "123abc"; String s2 = "123abc"; //s2的地址和s1相同,说明重用的s1对象 System.out.println(s1==s2);//true String s3="123abc"; System.out.println(s2==s3);//true //修改内容会创建新的对象 s1 = s1+"!"; System.out.println("s1:"+s1); //s2不受影响 System.out.println("s2:"+s2); //s1和s2不再指向一个对象 System.out.println(s1==s2);//false String s4 = '1'+23+"abc"; System.out.println("s4:"+s4); System.out.println(s2==s4); } }
获得字符串长度
/** * int length() * 获取当前字符串长度 * @author xiaoshuai */ public class lengthDemo { public static void main(String[] args) { String str = "你好java"; System.out.println(str.length()); } }
获得某些字符在字符串中的位置
/** * int indexOf(String str) * 查找给定字符串在当前字符串中的位置, * 若当前字符串不包含给定内容则返回值为-1 * @author xiaoshuai */ public class IndexofDemo { public static void main(String[] args) { // 0123456789012345 String str = "thinking in java"; int index = str.indexOf("in"); System.out.println(index);//2 //从开始位置开始检索第一个位置的字符 index = str.indexOf("in",3); System.out.println(index);//5 //检索开始最后一次出现的位置 index = str.lastIndexOf("in"); System.out.println(index);//9 } }
从字符串中截取指定的内容
/** * String substring(int start,int end) * 截取当前字符串指定范围内的字符串 * 两个参数分别表示开始的下标和结束的下标 * 需要注意,java API 有一个特点,通常两个 * 数字表示范围时都是含头不含尾的 */ public class Substring { public static void main(String[] args) { //01234567890 String str = "www.tedu.cn"; //截取域名 String sub = str.substring(4,8); System.out.println(sub); //一个参数的是从指定位置到结尾 sub = str.substring(4); System.out.println(sub); } }
取出域名
/** * 编写方法获取域名 * @author xioashuai */ public class Test { public static void main(String[] args) { String s1 = "www.baidu.com"; String s2 = "http://www.tedu.cn"; String s3 = "http://www.tarena.com.cn"; s1 = getHostName(s1); s2 = getHostName(s2); s3 = getHostName(s3); System.out.println(s1);//baidu System.out.println(s2);//tedu System.out.println(s3);//tarena } public static String getHostName(String line){ int start = line.indexOf(".")+1; int end = line.indexOf(".",start); return line.substring(start,end); } }
去掉字符串左右的空格
/** * String trim * 去除字符串两边空白字符 * @author xiaoshuai */ public class TrimDemo { public static void main(String[] args) { String str = " hello "; System.out.println(str); str = str.trim();//这个方法是java中原有的 System.out.println(str); } }
根据位置获取字符
/** * char charAt(int index)\ * 获取当前字符串中指定位置的字符 * @author xiaoshuai */ public class CharDemo { public static void main(String[] args) { // 0123456789012345 String str = "thinking in java"; char c = str.charAt(9); System.out.println(c);//i 不算空格 System.out.println("====================="); //判断回文 0 1 2 6 7 8 String line = "1234554321"; for(int i=0;i<line.length()/2;i++){ char c1 = line.charAt(i); char c2 = line.charAt(line.length()-1-i); if(c1!=c2){ System.out.println("不是回文"); break; } } System.out.println("是回文"); } }
判断字符串首尾的内容
/** * boolean startWith(String str) * boolean endsWith(String str) * 判断当前字符串是否是以给定的字符串开始或结尾的 * @author xiaoshuai */ public class StartsWithDemo { public static void main(String[] args) { String str = "thinking in java"; boolean starts = str.startsWith("thin"); System.out.println(starts); boolean ends = str.endsWith("ava"); System.out.println(ends); } }
转换大小写
/** * String toUpperCase() * String toLowerCase() * 将当前字符串中的英文部分转化为全大写或全小写 * @author xiaoshuai */ public class ToUpperCaseDemo { public static void main(String[] args) { String str = "你好java"; String upper = str.toUpperCase();//转化为大写字母 System.out.println(upper); String lower = str.toLowerCase();//转化为小写字母 System.out.println(lower); } }
基本数据类型换成字符串
/** * String提供一组重载的静态方法:valueOf(a) * 作用是将java其他类型转换成字符串 * @author xiaoshuai */ public class ValueOfDemo { public static void main(String[] args) { int a = 123; String s1 =String.valueOf(a); System.out.println(s1);//"123" double b = 123.123; String s2 = String.valueOf(b); System.out.println(s2);//"123.123" String s3 = a+""; System.out.println(s3);//123 } }
字符串频繁修改带来的损耗
/** * 字符串频繁修改会带来性能的损耗 * @author xiaoshuai */ public class StringDemo2 { public static void main(String[] args) { String str = "a"; for(int i=0;i<10000000;i++){ str = str + "a"; } System.out.println("程序结束了!");//程序会很慢,则需要改进方法 } }
用StringBuilder操作解决损耗的问题
/** * 字符串的特性决定着字符串不能平凡 * 修改,因为带来的问题是性能低, * 内存开销大,因此java提供了一个类:java.lang.StringBuilder * @author xiaoshuai */ public class StringBuilderDemo1 { public static void main(String[] args) { String str = "好好学习java"; StringBuffer builder = new StringBuffer(str); /** * 好好学习java * 好好学习java,为了找个好工作 * append():追加的内容 */ builder.append(",为了找个好工作!"); str = builder.toString(); System.out.println(str); /** * 好好学习java,为了找个好工作! * 好好学习java,就是为了改变世界 * replace():追加的内容 */ builder.replace(9,18,"就是为了改变世界!"); System.out.println(builder); /** * 好好学习java,就是为了改变世界! * ,就是为了改变世界! * delete():删除操作 */ builder.delete(0,8); System.out.println(builder); /** *,就是为了改变世界 * 活着,就是为了改变世界 * insert():插入内容 */ builder.insert(0,"活着"); System.out.println(builder); } }