The following code snippet shows varying results from the three operators:
result, var1, var2, var3 STRING?;
result2 INT?;
var1="Sun";
var3="day";
result = var1 :: var2 :: var3; // result is "Sunday"
result = var1 ?: var2 ?: var3; // result is null
var1 = "123";
var3 = "456";
result1 = var1 + var2 + var3; // result is "123456" (STRING)
result2 = var1 + var2 + var3; // result is 123456 (numeric)