piccoli quiz

1 view
Skip to first unread message

Davide

unread,
Nov 24, 2009, 3:24:39 PM11/24/09
to jug...@googlegroups.com
Ciao,

per non parlare sempre di cose "toste" perche' non passiamo in mailing
list piccoli
quiz o domande a cui gli altri devono rispondere?

Magari potremmo ispirarci ai quiz delle certificazioni sun cosi' ci
teniamo in allenamento ...

per esempio: in una classe e' possibile che un attributo e un metodo
abbiano lo stesso esatto nome?

Simone Bordet

unread,
Nov 24, 2009, 3:38:04 PM11/24/09
to jug...@googlegroups.com
Ciao,

2009/11/24 Davide <d...@vide.bz>:
Senza provare direi di si, ci sono 2 bytecode diversi per
disambiguare, quindi la JVM dovrebbe essere a posto. Se poi al
compilatore non piace, beh...

Tocca a me:

try
{
return true;
}
finally
{
return false;
}

1. Non compila
2. Ritorna true
3. Ritorna false
4. Nessuna delle precedenti

Simon
--
http://bordet.blogspot.com
---
Finally, no matter how good the architecture and design are,
to deliver bug-free software with optimal performance and reliability,
the implementation technique must be flawless. Victoria Livschitz

Davide

unread,
Nov 24, 2009, 3:47:23 PM11/24/09
to jug...@googlegroups.com
Il 24 novembre 2009 21.38, Simone Bordet <simone...@gmail.com> ha scritto:
>
> Tocca a me:
>
> try
> {
>    return true;
> }
> finally
> {
>    return false;
> }
>
> 1. Non compila
> 2. Ritorna true
> 3. Ritorna false
> 4. Nessuna delle precedenti

Questa e' proprio bella !!!

jhl

unread,
Nov 24, 2009, 5:39:41 PM11/24/09
to JUG Trentino Alto Adige Suedtirol
No è falso...vero?

On Nov 24, 9:47 pm, Davide <d...@vide.bz> wrote:

jhl

unread,
Nov 24, 2009, 6:02:40 PM11/24/09
to JUG Trentino Alto Adige Suedtirol
Cioè vero che è falso...?
try {
System.out.print("Cioè vero");
System.exit();
}
finally {
System.out.print(" che è falso...");
}
Scrive?

John

Credo che c'è una termine medicale (ma non una cura) per queste cose.
Comunque non ho iniziato io - ma spero di non concludere ;-)

Marco Schwarz

unread,
Nov 25, 2009, 2:04:37 AM11/25/09
to jug...@googlegroups.com
Ciao Davide,

se ho capito bene, pensi a questo

public class JUGTAADemo1 {

/**
* @param args
*/
public static void main(String[] args) {
JUGTAADemo1 j = new JUGTAADemo1();
System.out.println("Attributo: " + j.nome);
System.out.println("Metodo: " + j.nome());
}

public String nome = "Marco";

private String nome() {
return "Schwarz";
}

}

Output:
Attributo: Marco
Metodo: Schwarz

Pertanto per il compilatore e la vm si puo fare

Saluti
Marco



----- Original Message -----
Da : Davide <d...@vide.bz>
A : jug...@googlegroups.com
Oggetto : [JUGTAA] piccoli quiz
Data : Tue, 24 Nov 2009 21:24:39 +0100

> Ciao,
>
> per non parlare sempre di cose "toste" perche' non
> passiamo in mailing list piccoli
> quiz o domande a cui gli altri devono rispondere?
>
> Magari potremmo ispirarci ai quiz delle certificazioni sun
> cosi' ci teniamo in allenamento ...
>
> per esempio: in una classe e' possibile che un attributo e
> un metodo abbiano lo stesso esatto nome?
>
> --
>
> You received this message because you are subscribed to
> the Google Groups "JUG Trentino Alto Adige Suedtirol"
> group. To post to this group, send email to
> jug...@googlegroups.com. To unsubscribe from this group,
> send email to jugtaa+un...@googlegroups.com. For
> more options, visit this group at
> http://groups.google.com/group/jugtaa?hl=en.
>
>

Marco Schwarz

unread,
Nov 25, 2009, 2:07:19 AM11/25/09
to jug...@googlegroups.com
Salve,

Anche se non me lo aspettavo ritorna false!

public class JUGTAADemo2 {

public static void main(String[] args) {
JUGTAADemo2 j = new JUGTAADemo2();
System.out.println("JUGTAADemo1: " + j.proc());
}

public boolean proc() {
try {
return true;
} finally {
return false;
}
}
}

Output:
JUGTAADemo2: false



----- Original Message -----
Da : jhl <jhl.v...@gmail.com>
A : JUG Trentino Alto Adige Suedtirol
<jug...@googlegroups.com>
Oggetto : [JUGTAA] Re: piccoli quiz
Data : Tue, 24 Nov 2009 14:39:41 -0800 (PST)

Mario Alexandro Santini

unread,
Nov 25, 2009, 2:43:33 AM11/25/09
to jug...@googlegroups.com
Ciao,
credo che il senso fosse conoscere questo:


The finally block always executes when the try block exits. This
ensures that the finally block is executed even if an unexpected
exception occurs. But finally is useful for more than just exception
handling — it allows the programmer to avoid having cleanup code
accidentally bypassed by a return, continue, or break. Putting cleanup
code in a finally block is always a good practice, even when no
exceptions are anticipated.

Tratto da: http://java.sun.com/docs/books/tutorial/essential/exceptions/finally.html

Traduco liberamente e riassumo.

Il blocco finally serve ad inserire del codice che deve essere
eseguito sempre, anche se viene generata una eccezione oppure viene
eseguita un instruzione di return.
--
Ciao,
Mario

Vitor E. Silva Souza

unread,
Nov 25, 2009, 3:24:09 AM11/25/09
to jug...@googlegroups.com
Ciao,

Un'altra cosa a fare attenzione è l'ordine delle istruzioni return e finally-
block:

public class Test {
static int x = 10;

public static void main(String[] args) {
System.out.println("x positive = " + xpositive() + " / x = " + x);
}

static boolean xpositive() {
try {
return (x > 0);
}
finally {
x = -10;
}
}
}

Output:

x positive = true / x = -10

;)

Vítor

Simone Bordet

unread,
Nov 25, 2009, 3:47:51 AM11/25/09
to jug...@googlegroups.com
Ciao,

On Wed, Nov 25, 2009 at 08:07, Marco Schwarz <marco....@cioppino.net> wrote:
> Salve,
>
> Anche se non me lo aspettavo ritorna false!

Magari.

Ritorna false in alcune JVM, in altre ritorna true (credo IBM).
Tu che JVM hai usato ?

Marco Schwarz

unread,
Nov 25, 2009, 3:58:50 AM11/25/09
to jug...@googlegroups.com
la version con la quale ho testato e la

java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode,
sharing)

Saluti
Marco

----- Original Message -----
Da : Simone Bordet <simone...@gmail.com>
A : jug...@googlegroups.com
Oggetto : Re: [JUGTAA] Re: piccoli quiz
Data : Wed, 25 Nov 2009 09:47:51 +0100

jhl

unread,
Nov 25, 2009, 5:26:16 AM11/25/09
to JUG Trentino Alto Adige Suedtirol
Ciao all,

Un bel caso spigoloso (corener case) di Java quello di Simon...

> Ritorna false in alcune JVM, in altre ritorna true (credo IBM).
> Tu che JVM hai usato ?
>
> Simon
> --http://bordet.blogspot.com

Deve tornare false. Si vede che l'altro JVM non sapeva ;-)
Ma non è descritto nella mia 'bibia':
http://java.sun.com/docs/books/jls/third_edition/html/statements.html#79311
Ma lo è nel 'Java in a Nutshell', ce ha il vantaggio di essere più
leggibile:
http://docstore.mik.ua/orelly/java-ent/jnut/ch02_06.htm
(vedi sezione 2.6.16, soprattutto i commenti nel codice)
Per una buona risposta alla mia corrolary di quella di Simon, vedi
http://stackoverflow.com/questions/1410951/how-does-javas-system-exit-work-with-try-catch-finally-blocks

John

Michele Lorenzini

unread,
Nov 25, 2009, 5:36:28 AM11/25/09
to jug...@googlegroups.com

Ritorna false in alcune JVM, in altre ritorna true (credo IBM).

Con le 1.4 e 1.5 di IBM il risultato sembra congruente al Java di SUN (e con quello che ci si aspetterebbe):

1.4.2_08
Sun Microsystems Inc.
True or false? false

1.5.0_08
Sun Microsystems Inc.
True or false? false

1.4.2
IBM Corporation
True or false? false

1.5.0
IBM Corporation
True or false? false

più su della 1.5 non arrivo :o)
TrueOrFalse.java
Reply all
Reply to author
Forward
0 new messages