Vilson,
The first XPath shouldn't find anything. The "//" at the beginning says search the entire DOM. So the "//*" says to find all elements in the entire DOM. This means it will find <A>, <IMG>, <P>, <TABLE>, etc. Basically, //TABLE will find all table elements, //DIV will find all div elements, //* will find all elements. The bits in the square brackets, e.g. [@class='table1class'] looks for attributes and properties. If the word begins with an at symbol (@) then it is looking for an attribute. So <table class='table1class'> is the element TABLE with the attribute @class='table1class' or in XPath "//table[@class='table1class']". If I have two sets of square brackets, it is for the same element. So //*[@class='table1class'][@class='labeltest'] would only be true for the same element have class='table1class' and having class='labeltest'. For example, <table class='table1class' class='labeltest'> but this should never happen. Instead it would be <table class=table1class labeltest'>.
This is why the first XPath should never happen. It should always return nothing. The second XPath is similar to:
By.cssSelector(".table1class .labeltest")
If you are relying on element attributes, you are probably better to use CSS selectors. They are shorter to write, more flexible that using XPath (e.g. class='table1 test' and class='test table1' are different in XPath but the same in CSS).
Darrell