long a = System.currentTimeMillis();
System.currentTimeMillis()这个方法是显示当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位测量)。
int[] arr1 ={1,2,3,4,5,6};
int[] arr2 ={1,1,1,1,1,1};
System.arraycopy(arr1,i,arr2,j,6);
以上是数组的复制功能,从arr1数组的下标第i处开始复制到arr2下标的第j处,长度为arr1.length-1
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
将数组转换为字符串输出
System.out.println(System.currentTimeMillis());
long b = System.currentTimeMillis();
System.out.println("这段代码用时"+(b-a));
这一行用b-a就可以求出这段代码运行的用时,需要注意的是以毫秒为单位,如果这段代码运行时间小于一毫秒,则b-a可能等于0,也可能等于1.
System.out.println(System.getenv());
显示目前系统的信息
Date d1 = new Date(111111111);
Date d2 = new Date(111111112);
System.out.println(d1.before(d2)); //结果true
System.out.println(d1.after(d2));
before和after相似,都是比较2个时间的早晚 ,返回boolean型
System.out.println("user.dir="+System.getProperty("user.dir"));
项目目录
System.out.println("user.name="+System.getProperty("user.name"));
使用者姓名
System.out.println("os.arch="+System.getProperty("os.arch"));
系统位数
System.out.println("os.version="+System.getProperty("os.version"));
返回版本
System.out.println(System.getProperty("user.dir"));
获取指定的属性
System.out.println(System.getProperties());
获取当前的系统属性
char[] shu = {'a','b','c','d'};
String s1 = new String(shu);//分配一个新的String对象,使它代表字符数组参数包含的字符序列
System.out.println(s1);
结果:abcd
String s2 = new String(shu,0,3);//分配一个新的String对象,使它包含来自字符数组参数中子数组的字符
System.out.println(s2);
结果:abc
String s3 = new String(s2);//初始化一个新的String对象,使其包含和参数字符串相同的字符序列
System.out.println(s3);
结果:abc
当字符串与其他类型值进行连接运算时,Java自动将其他类型值转换为字符串。
int i = 10;String str = "i="+i;
System.out.println(str);
结果:i=10
System.exit(0); //退出程序
String s4 = new String("abcd12");
System.out.println(s4.length()+" "+s4.charAt(2));
字符串.length()求字符串长度,字符串.chAt(i)求字符串第i个字符——结果是6 c
String s5 = s4.substring(2);
System.out.println(s5);
字符串.substring(i)从i位置起在字符串中取出剩余的字符串作为一个新的字符串—-cd12
String s6 = s4.substring(2, 4);
System.out.println(s6);
字符串.substring(i,d)从i位置起到d(不包含d)结束,在字符串中取出剩余的字符串作为一个新的字符串——cd
String s7 = new String("abcde");
String s8 = new String("abcdE");
System.out.println(s7.equals(s8));//String类重写equals()
//false
System.out.println(s7.compareTo(s8));
//32
该方法比较两个字符串,其比较过程实际上是两个字符串中相同位置上的字符按Unicode中排列顺序逐个比较的结果。如果在比较过程中,两个字符串是完全相等的,compareTo方法返回0;如果在比较过程中,发现了不同的地方,compareTo方法返回一个大于0的整数,否则返回一个小于0的整数
System.out.println(s7.compareToIgnoreCase(s8));//忽略字母大小写的区别
//0
System.out.println(s7.concat(s8));//abcdeabcdE
该方法的参数为一个String类对象,作用是将参数中的字符串str连接到原来字符串的后面
String s9 = s7.concat(s8);//abcdeabcdE
System.out.println(s9.indexOf('c'));//2
该方法用于查找当前字符串中某一个特定字符ch出现的位置。该方法从头向后查找,如果在字符串中找到字符ch,则返回字符ch在字符串中第一次出现的位置;如果在整个字符串中没有找到字符ch,则返回-1。
System.out.println(s9.indexOf('c',5));//7
该方法和上一种方法类似,不同的地方在于:该方法从fromIndex位置向后查找,返回的仍然是字符ch在字符串第一次出现的位置。
System.out.println(s9.lastIndexOf('c'));//7
该方法从字符串的末尾位置向前查找,返回的仍然是字符ch在字符串第一次出现的位置。
String s11 = new String("aBcDe");
System.out.println(s11.toLowerCase());//abcde
该方法将字符串中所有字符转换成小写,并返回转换后的新串。
System.out.println(s11.toUpperCase());//ABCDE
该方法将字符串中所有字符转换成大写,并返回转换后的新串。
String s12 = new String("aaBBccBB");//aaBBffBB
System.out.println(s12.replace('c', 'f'));
该方法用字符newChar替换当前字符串中所有的字符oldChar,并返回一个新的字符串。
System.out.println(s12.replaceFirst("BB","ee"));//aaeeccBB
该方法用字符串replacement的内容替换当前字符串中遇到的第一个和字符串regex相一致的子串,并将产生的新字符串返回。
System.out.println(s12.replaceAll("BB", "ee"));//aaeeccee
该方法用字符串replacement的内容替换当前字符串中遇到的所有和字符串regex相一致的子串,并将产生的新字符串返回。
String s13 = new String("xxx");
char[] ch1 = new char[s13.length()];
s13.getChars(0,3,ch1,0);
将字符串s13从0到3的值存放到字符数组ch1中
求字符串长度 字符串.length();
String s14 = "Java";
String s15 = new String("Java");
String s16 = s14.intern();
if(s14==s16){ //地址值相同
System.out.println("s16==s15");
}
else{
System.out.println("s14!=s15");
}
if(s14.equals(s15)){
System.out.println("s14 equals s15");
}else{
System.out.println("s14 not equals s15");
}
结果s16==s15
s14 equals s15
使用String类进行字符串拼接效率较低,每次在字符串后面添加字符时,字符串对象需要新的存贮空间来存储新的字符串。若添加字符串,则意味着需要一次次重新分配空间。
使用StringBuffer类可以避免这个问题。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
在StringBuffer类中只能用append()方法来拼接
StringBuffer s17 = new StringBuffer(s15);
StringBuffer s18 = new StringBuffer(3);
//注意:不能像String对象那样只使用字符串做初始值。
修改一个StringBuffer类的对象不用再创建一个新的字符串对象,而是直接操作原字符串
分配内存时,除去字符所占空间外,再另加16个字符大小的缓冲区
StringBuffer的长度是指存储在其中的字符个数,容量是指缓冲所能容纳的最大字符数
System.out.println(s17.length());//返回当前StringBuffer类对象包含的字符个数。
//4
System.out.println(s17.capacity());//返回当前StringBuffer类对象分配的字符空间的数量。
//20
StringBuffer s19 = new StringBuffer("abcdef");
System.out.println(s19.delete(1,3));//删除从start到end-1的字符
//adef
System.out.println(s19.reverse());//字符串反转
//feda
如果你的字符串经常会发生改变,那么最好是用StringBuffer,如果一旦定义了之后就很少改变这个字符串的值,那么就用String
因为一旦定义了一个String之后,如果改变它的内容,那么需要在内存地址中新建一个位置给新的内容, 这样的话,如果改动很频繁的话,就会对内存造成很大的消耗,而用StringBuffer的话,不管你怎么改动里面的内容,在内存中只是那么一块,不用消耗多的内存
Java 中 StringBuffer 和 String 是有一定的区别的,首先,String 是被 final 修饰的,他的长度是不可变的,就算调用 String 的
concat 方法,那也是把字符串拼接起来并重新创建一个对象,把拼接后的 String 的值赋给新创建的对象,而 StringBuffer 的长度是可变的,调用StringBuffer 的 append 方法,来改变 StringBuffer 的长度,并且,相比较于 StringBuffer,String 一旦发生长度变化,是非常耗费内存的!
String 长度大小不可变
StringBuffer 和 StringBuilder 长度可变
StringBuffer 线程安全 StringBuilder 线程不安全
StringBuilder 速度快