本帖最后由 王德升 于 2012-7-5 18:21 编辑
一:
class StringTest
{
public static void sop(String str)
{
System.out.println(str);
}
public static void main(String[] args)
{
String s = "ab cd";
sop(s);
sop(reverseString(s,2,3));//这里一换还是原来的字符串,你知道为什么吗?
//s = myTrim(s);
//sop("("+s+")");
}
//练习一:去除字符串两端空格。
public static String myTrim(String str)
{
int start = 0,end=str.length()-1;
while(start<=end && str.charAt(start)==' ')
start++;
while(start<=end && str.charAt(end)==' ')
end--;
return str.substring(start,end+1);
}
//练习二:将字符串进行翻转。
public static String reverseString(String str,int start,int end)
{
char[] chs = str.toCharArray();
reverse(chs,start,end);
return new String(chs);
}
public static String reverseString(String str)
{
return reverseString(str,0,str.length());
}
public static void reverse(char[] ch,int x,int y)
{
for(int start=x,end=y-1;start<end;start++,end--)//这里start++,end--中间为什么是逗号不是分号,有什么诀窍啊,要怎么区分呢?
swap(ch,start,end);
}
public static void swap(char[] arr,int x, int y)
{
char temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
二:
ArrayList()默认的构造长度是10.如果再加元素,会默认的延长50%,也就是15,
我想问下这个延长是怎么延长的?还有的原来元素的分配以及心元素的分配。
0 1 2 3 4 5 ...
数字是角标,这个延长是加在0角标的前面还是10角标的后面呢,?
三;
import java.util.*;
class Student// implements Comparable
{
private String name;
private int age;
Student(String name,int age)
{
this.name = name;
this.age = age;
}
/*
public int compareTo(Object obj)
{
if(!(obj instanceof Student))
throw new RuntimeException("不是学生对象");
Student s = (Student)obj;
if(this.age>s.age)
return 1;
if(this.age==s.age)
return this.name.compareTo(s.name);
return -1;
}
*/
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
class TreeSetDemo
{
public static void main(String[] ages)
{
TreeSet ts = new TreeSet();
ts.add(new Student("xiaozhang03",34));
//ts.add(new Student("xiaozhang03",34));
//ts.add(new Student("xiaozhang02",53));
//ts.add(new Student("xiaozhang01",37));
for(Iterator it = ts.iterator(); it.hasNext(); )
{
Student stu = (Student)it.next();
System.out.println(stu.getName()+"..."+stu.getAge());
}
}
}
为什么我这里留了一个new Student却编译不出来呢,而老毕的却可以呢?jvm版本问题???
四:
class MyCompare implements Comparator
{
public int compare(Object o1,Object o2)
{
Student s1 = (Student)o1;
Student s2 = (Student)o2;
int num = s1.getName().compareTo(s2.getName());
if(num==0)
{
return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));//这为什么也要写return?
}
return num;//这里为什么要返回num?
}
}
|