I am making a battleship, and there are many tiny cylinders and cubes for detail. Because the only things that needs to be animated are the turrets, should I join all idle parts together?
It's not brutally important when you have a limited amount of parts.
Blender 2.79 is still not amazing at handling many 1000s of objects, so sometimes joining can speed selection up quite a bit.
But there is one thing to think about:
If your detail objects make up a lot of verts, I wouldn't put them into the hull but their own object. That way you can, to speed up test rendering, switch them off and keep the hull.
Depending on complexity, that can make a difference.
Another aspect: you can parent objects to faces. Not too relevant here but if you have an object that might change later, parenting the details to a face means you can change the height of a floor and the objects will follow.
If it's all geometry, you either have to select all tiny meshes or abuse a vertex group for selection purposes.
Yet another aspect: Object origins make for great rotation centers. If it's a mesh, you either need a used or hidden center vertex or you have to select the right verts to place the cursor.
My advise here? Save a backup copy of the unjoined objects, join the details into one or a few objects (bow, midship, stern etc) and parent those to the hull.