Scusa
Errore di parentesi

codice:
public class A{
public static void main(String args[]){
B b=new B(args[0]);
String tmp=b.somma("CIAO");
System.out.println(tmp);
}

}
class B{
private String b;
public B(String b){this.b=b;}
public String somma(String tmp){
  return b+" "+tmp;
}
}

mi potresti spiegare la parte del codice
public B(String b){this.b=b;}
this.b si riferisce ad args[0]?
con this.b si fa riferimento alla variabile della classe b .
Scrivendo this.b=b; si assegna alla b della class B il valore del parametro b.
Se avessi scritto b=b; in pratica la variabile passata come parametro sarebbe stata assegnata a se stessa.

public B(String tmp){
b=tmp;
}
In questo caso non č necessario il this in quanto le due variabili sono distinte.

E un'ultima cosa (please...) quando creo l'oggetto b
B b = new B(args[0])
il programma mi esegue tutti i metodi della classe B?
No , i metodi sono eseguiti solo quando invocati.