Toon posts:

[Java] char literals in Java

Pagina: 1
Acties:

Verwijderd

Topicstarter
Misschien een domme vraag, maar kan iemand me misschien vertellen waarom de volgende code niet door de compiler komt:
code:
1
char c = '\u000a';

en de volgende code wel:
code:
1
char c = '\u000b';

Alvast bedankt.

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:16
Welke error krijg je dan?

https://fgheysels.github.io/


Verwijderd

Topicstarter
Dit is mijn code:
code:
1
2
3
4
5
public class Test {
    static public void main(String args[]) {
        char c = '\u000a';
    }
}

en dit is de foutmelding:
code:
1
2
3
Test.java:4: Illegal line end in character literal
        char c = '\u000a';
                 ^

  • Plecky
  • Registratie: Januari 2004
  • Niet online
1e hit van Google:
This is an unfortunate artifact of the ordering of the processing of the Java source file into lexemes and tokens by the compiler. Instead, you should use the equivalent character escape sequences: '\n' and '\r'.

  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Je krijgt deze error omdat:
Java:
1
2
char a = '\u000A'; // gelijk is aan:
char a = ; 

Aangezien unicode escape karakters vroeg verwerkt worden in het compileer proces.
Dus '\u000A' (LF) en '\u000D' (CR) worden dus gezien als einde van die regel

Om deze karakters te bekomen kan je daarom ook beter gebruik maken van '\n' (LF) en '\r' (CR)

LF = linefeed; CR = carriage return

Verwijderd

Topicstarter
Bedankt!

Verwijderd

System.getProperties("line.separator");
Daar het per OS nog wel eens wil verschillen of het \n, \r, of \r\n moet zijn.

[ Voor 22% gewijzigd door Verwijderd op 12-01-2005 12:35 ]

Pagina: 1