java
eclipse OpenPath 插件
可以打开eclipse当前编辑的文件所在目录。 还可以右键打开所选择的项目文件所在目录。
eclipse OpenPath 插件。 放在eclipse插件目录就好了。 自己做的小东西,拿出来共享了。
Formatter格式化输出—— java古怪代码(4)
Java代码
import java.util.Formatter;
public class FormatterTester {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
float balance = 223.33522f;
String str = "String values";
Formatter formatter = new Formatter(sb);
formatter.format("格式化输出balance的值(float):$%.2f "
+"字符串值:%s",balance,str);
System.out.println(sb.toString());
System.out.printf("格式化输出balance的值(float):$%.2f "
+"字符串值:%s",balance,str);
}
}
运行结果
格式化输出balance的值(float):$223.34 字符串值:String values
格式化输出balance的值(float):$223.34 字符串值:String values
语法类似C语言中的printf,习惯用C语法的可以试试这个。
静态import —— java古怪代码(3)
Java代码
import static java.lang.System.out;
import static java.util.Arrays.sort;
public class ImportTester {
public static void main(String[] args) {
//等同于System.out.println("abc");
out.println("abc");
int[] i = {2,1,3};
for(int a : i )
out.print(a+" ");
sort(i);
for(int a : i )
out.print(a+" ");
}
}
静态import 可以应用在静态method和静态变量上。
可变长度的参数list —— java古怪代码(2)
Java代码
/**
* 测试可变参数
* @author jond
*
*/
public class VarargTester {
public static void printArg(String… strings){
System.out.println("方法一:\n strings.length="+strings.length);
for (int i = 0; i < strings.length; i++) {
System.out.print(strings[i]+" ");
}
}
public static void printArg(String str,String[] strings){
System.out.println("方法二:\n ");
System.out.println(" strings.length="+strings.length);
for (int i = 0; i < strings.length; i++) {
System.out.print(strings[i]+" ");
}
}
public static void main(String[] args) {
//调用方法一
VarargTester.printArg();
VarargTester.printArg("a","b","c");
VarargTester.printArg("a","b","c","d");
String[] strings={"a","b","c"};
//调用方法二
VarargTester.printArg("eee", strings);
}
}
运行结果
方法一:
strings.length=0
方法一:
strings.length=3
a b c 方法一:
strings.length=4
a b c d 方法二:
strings.length=3
a b c
注解:
代码一
public static void printArg(String… strings)
代码一中的String… strings,在编译器会被解读成String[] strings,效果如以下代码(代码二)。代码一和代码二不能同时定义在一个类中。
代码二
public static void printArg(String[] strings)
代码一和代码二有类似的效果,但调用的方式完全不一样:
代码一的调用方式
VarargTester.printArg();
VarargTester.printArg("a","b","c");
VarargTester.printArg("a","b","c","d");
应用实例
public class MathUtils {
/**
* 求最大值,没传参数时返回Integer.MIN_VALUE
* @param values
* @return
*/
public static int max(int… values){
int max = Integer.MIN_VALUE;
for(int i : values){
if(i > max)
max = i;
}
return max;
}
public static void main(String[] args) {
System.out.println(MathUtils.max());
System.out.println(MathUtils.max(0,1,2,12,3));
System.out.println(MathUtils.max(2,43,566,32,23,23,23,234));
}
}
不可变的wrapper类型 —— java古怪代码(1)
Java代码
public class AutoboxTester {
public static void main(String[] args) {
Integer i1 = 127;
Integer i2 = 127;
System.out.println(i1 == i2);
Integer i3 = 128;
Integer i4 = 128;
System.out.println(i3 == i4);
}
}
返回的结果:
运行结果
true
false
在java中从-127到127之间的值是不可变的wrapper类型,jvm会对 i1 与 i2 使用同样的对象实例和同样的内存地址,所以,== 运算的结果是true。
