Group your commands after the file check:
[ ! -f src/java/world.java ] || (mkdir -p src/examples/ && mv src/java/world.java src/examples/world.java)
Everything within the parenthesis will only be executed if src/java/world.java exists.
Example of this in action (note the srcX in the SOURCE parameter of mv:
$ [ ! -f src/java/world.java ] || mkdir -p src/examples/ ; mv srcX/java/world.java src/examples/world.java
mv: cannot stat 'srcX/java/world.java': No such file or directory
$ [ ! -f src/java/world.java ] || (mkdir -p src/examples/ ; mv srcX/java/world.java src/examples/world.java)
Since you're already checking for the full file path, then it doesn't really matter if src or src/java doesn't exist since world.java wouldn't exist in either case - unless you want to generate more appropriate errors.