Which FizzBuzz is better, and why?
I prefer your solution to his. My reasoning is that:


yours has constants only in the String manipulation
you do not do string concatenation
the logic is distinct for each remainder.


Both options could be better though. The lack of 'breathing space' (white space between keywords, variables, values, and operators) leads to hard-to-read code. Lines like:


for(int i=1;i&lt;=100;i++){



should be:

for (int i = 1; i &lt;= 100; i++) {


Then, your solution would actually be more efficient as a switch statement:

for (int i = 1; i &lt;= 100; i++) {
    switch (i % 15) {
        case 0:
            System.out.println("FizzBuzz");
            break;
        case 3:
        case 6:
        case 9:
        case 12:
            System.out.println("Fizz");
            break;
        case 5:
        case 10:
            System.out.println("Buzz");
            break;
        default:
            System.out.println(i);
    }
}


The switch statement will be optimized so that there does not need to be more than one modulo, and there is no concept of an if/elseif/elsif/else... just a single condition check.