The keywords 'public' and 'void' designate different things about a method; they are not related to the same concept.
A public method is one that can be called from outside the class in which it is declared. There are other designations -- private and protected -- that mean other things; private, for instance, designates a method that can only be called from within the class in which it is declared. The protected and package protected designations are slightly more advanced, you can leave them for later.
The idea behind these is 'information hiding'; the interface of the class is defined by its public members; 'hiding' the other parts simplifies that interface, makes it easier to hide implementation details from callers, so that the class may be extended (and corrected) with less chance of breaking other code.
As for void, a method may return a value, and the type of the value returned is declared with the method. The void keyword indicates that no value is returned from the method.
So it is quite common to have a method declared "public void methodName()', for instance, indicating that it can be called from outside its own class, and that it does not return a value. "public Integer methodName()' can be called from outside the class and returns an Integer instance, and so forth.
The public keyword is also found before variables (though hopefully not often), and in front of a class declaration, with similar meaning. public, private, and protected are referred to as "access modifiers", since they designate from where the affected part of a class may be accessed.