java笔记二——字符串
1.在判断两个字符串是否相等时,使用equals(或equalsIgnoreCase),尽量不要使用“==”
2.如果需要用许多小段的字符串构建一个字符串,可以考虑用StringBuilder,既节约时间又节约空间,通过append方法添加需要的内容既节约时间又节约空间,之后还可通过StringBuilder的toString()方法返回一个完整的STRING。
3.输入输出
输入常用:Scanner
Scanner in =new Scanner(System.in);
System.out.print("What is your name?");
String name=in.nextLine();
System.out.print("How old are you?");
int age=0;
if(in.hasNextInt()){
age=in.nextInt();
}
System.out.println("name:"+name+";age:"+age);
JAVA中也有类似C++中按格式输出,printf
System.out.printf("%tc", new Date());关于DATE的格式在P55页有详细介绍。
输出常用:PrintWriter
String strDir=System.getProperty("user.dir");
String strPath=strDir+"\\5.txt";
try {
PrintWriter out=new PrintWriter(strPath);
out.append("first"+"\t");
out.append("second");
out.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Scanner的构造函数中的参数可以是文件名,但不能是不存在的文件名,而PrintWriter的构造函数中也可以是文件名,因为是写所以必须是不存在的文件名。
4.FOR循环:
for(int element:arr)
5.可以用label写一个标识,放在循环中可跳出最外围的循环。
比如
read_data:
while(~~~){
for(~~~){
if(~~~)
break read_data;——此句就跳出了WHILE循环
}
}
6.数组拷贝
可以通过直接赋值arr1=arr2这样当其中任意一个数组发生改变时,另一个数组也发生相应的改变。
如果不需要连动,可以考虑使用数组的CLONE方法以及ARRAYS类的copyof方法。
7.命令行参数
在MAIN函数中都有一个STRING[]的参数args,我们很少用到,这个参数到底有什么用呢???
if(args[0].equals("liping")){
System.out.println("first:"+args[0]);
}
else if(args[0].equals("lixr")){
System.out.println("first:"+args[0]);
}
for(String s:args){
System.out.println(s);
}
对于一般的JAVA程序,我们在命令行执行时都是直接使用java CLASS名,对于以上的MAIN函数,我们可以使用java CLASS名 lixr liping,在结果行就会显示:
first:lixr
lixr
liping
如果我们在IDE里调用上述代码,目前还没找到方法。
8.数组
使用Arrays我们可以实现如下操作:
binarySearch(byte[] a,byte key)使用二分搜索数组元素是否存在,若存在则返回索引(在此之前最好排序);
copyOf(copyOfRange)
equals
fill(int[] arr,int value)将VALUE赋给数组中的每一个元素(也可是指定的元素)
sort利用快速排序算法对数组进行排序
toString返回指定数组内容的字符串表达形式(类似的有deepToString方法)。
2.如果需要用许多小段的字符串构建一个字符串,可以考虑用StringBuilder,既节约时间又节约空间,通过append方法添加需要的内容既节约时间又节约空间,之后还可通过StringBuilder的toString()方法返回一个完整的STRING。
3.输入输出
输入常用:Scanner
Scanner in =new Scanner(System.in);
System.out.print("What is your name?");
String name=in.nextLine();
System.out.print("How old are you?");
int age=0;
if(in.hasNextInt()){
age=in.nextInt();
}
System.out.println("name:"+name+";age:"+age);
JAVA中也有类似C++中按格式输出,printf
System.out.printf("%tc", new Date());关于DATE的格式在P55页有详细介绍。
输出常用:PrintWriter
String strDir=System.getProperty("user.dir");
String strPath=strDir+"\\5.txt";
try {
PrintWriter out=new PrintWriter(strPath);
out.append("first"+"\t");
out.append("second");
out.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Scanner的构造函数中的参数可以是文件名,但不能是不存在的文件名,而PrintWriter的构造函数中也可以是文件名,因为是写所以必须是不存在的文件名。
4.FOR循环:
for(int element:arr)
5.可以用label写一个标识,放在循环中可跳出最外围的循环。
比如
read_data:
while(~~~){
for(~~~){
if(~~~)
break read_data;——此句就跳出了WHILE循环
}
}
6.数组拷贝
可以通过直接赋值arr1=arr2这样当其中任意一个数组发生改变时,另一个数组也发生相应的改变。
如果不需要连动,可以考虑使用数组的CLONE方法以及ARRAYS类的copyof方法。
7.命令行参数
在MAIN函数中都有一个STRING[]的参数args,我们很少用到,这个参数到底有什么用呢???
if(args[0].equals("liping")){
System.out.println("first:"+args[0]);
}
else if(args[0].equals("lixr")){
System.out.println("first:"+args[0]);
}
for(String s:args){
System.out.println(s);
}
对于一般的JAVA程序,我们在命令行执行时都是直接使用java CLASS名,对于以上的MAIN函数,我们可以使用java CLASS名 lixr liping,在结果行就会显示:
first:lixr
lixr
liping
如果我们在IDE里调用上述代码,目前还没找到方法。
8.数组
使用Arrays我们可以实现如下操作:
binarySearch(byte[] a,byte key)使用二分搜索数组元素是否存在,若存在则返回索引(在此之前最好排序);
copyOf(copyOfRange)
equals
fill(int[] arr,int value)将VALUE赋给数组中的每一个元素(也可是指定的元素)
sort利用快速排序算法对数组进行排序
toString返回指定数组内容的字符串表达形式(类似的有deepToString方法)。
欢迎访问SuperMap技术问答社区http://qa.supermap.com/