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。