Knapsack 01 solution
Just a few comments :



Your if (value == 0) and if (weight == 0) should probably be if (value &lt;= 0) and if (weight &lt;= 0).



Keep It Simple : because value and weight are final, you could probably make them public, removing the need for getters.

Also, you could make this an inner class/nested class if you don't plan to use it for anything else.



Purely personal but I'd rather avoid continue whenever it can be easily avoided. If your case, it's quite easy to put the whole block behind a if (item != 0 &amp;&amp; weight != 0) (or even better : if (item &gt; 0 &amp;&amp; weight &gt; 0)). 

However, things could be even more straightforward : for (int item = 0; item &lt;=items.length; item++) and for (int weight = 0;  weight &lt;= maxWeight; weight++) could start at 1 because first iteration won't do anything anyway because condition if (item == 0 || weight == 0) will be true. Then, as far as I can tell, the guard is not needed anymore.