The key is just a string of random bytes. You can store it any which way you like-- it's just a boring old string of bytes. To actually get the bytes, you have a couple of options:
(1) Just generate the string of random bytes yourself, using SecureRandom, then init your Cipher with a SecretKeySpec wrapper around those bytes:
Random r = new SecureRandom();
byte[] key = new byte[8];
r.nextBytes(key);
c.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(key, "DES"));
(2) The "proper" way (but slightly overengineered for this purpose) is to use a KeyGenerator to generate the key, then a SecretKeyFactory to convetr it into a keyspec object from which you can pull out the bytes:
KeyGenerator kg = KeyGenerator.getInstance("DES");
SecretKey k = kg.generateKey();
SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
DESKeySpec spec = (DESKeySpec) skf.getKeySpec(k, DESKeySpec.class);
byte[] keyBytes = spec.getKey();
You can also cheat slightly in this case. If you call getEncoded() on the SecretKey, you'll actually get the selfsame bytes as via the factory.
Strictly, the KeyGenerator is the "correct" way because it is supposed to know about certain weak keys/constraints on key creation for your particular algorithm. As I recall, DES has 4 weak kes out of the total 2^56, so in practice you really don't need to worry. AES (and, ideally, whatever algorithm you pick) has no known weak keys -- you really can just generate a random string of bytes.
Incidentally, I assume you know that DES is not secure by today's standards (actually, it wasn't very secure by yesterday's standards...) and much slower and less secure than practically any other algorithm in the universe. You may be interested in some stuff I've written about Java cryptography, including the
security and performance of different algorithms. I'd also recommend you read the stuff about
block modes (the example uses AES, but the information leak problem applies to DES too).