Tecken och strängar i Java

Relevanta dokument
TDDD78, TDDE30, 729A Tecken och strängar med och utan Java

Tecken och strängar i Java

Tecken och strängar i Java

F2 Datarepresentation talbaser, dataformat och teckenkodning

F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!

F3 Datarepresentation teckenkodning och datakompression EDAA05 Datorer i system! Roger Henriksson!

F3 Datarepresentation teckenkodning och datakompression

Classes och Interfaces, Objects och References, Initialization

Parameteröverföring. Exempel. Exempel. Metodkropp

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Sammansatta datatyper Generics: Parametrisk polymorfism

Programmering i C++ EDAF hp. EDAF30 (Föreläsning 2) HT / 18

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Statistik över heltal

Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= "Nils"; // längd = 5 bytes

Undantag. Engelska: exceptions. Skansholm: exceptionella händelser

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Kopiering av objekt i Java

Chapter 3: Using Classes and Objects

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Övning 1 - Abstrakta datatyper

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

OOP Objekt-orienterad programmering

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Klassdeklaration. Metoddeklaration. Parameteröverföring

file:///c:/users/engström/downloads/resultat.html

Enkla datatyper minne

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDP002 - Imperativ programmering

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Variabler, värden och typer

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

TDP002 - Imperativ programmering

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Objekt som argument. Föreläsning 7-8 Innehåll. Hur komma åt den andra kvadratens attribut? Anropa metod på objektet självt

Föreläsning 7-8 Innehåll

Tentamen i Grundläggande Programvaruutveckling, TDA548

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

Variabler, värden och typer

Översikt 5 delar. 1: Fysisk representation. Binär, oktal och hexadecimal representation

Strängar. TDDD64 Programmering i Python Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540) Ansvarig: Jan Skansholm, tel eller

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Tentamen i Grundläggande Programvaruutveckling, TDA548

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Föreläsning 1 Datastrukturer (DAT037)

TDDD78 Viktiga begrepp, del 2

TDDD78 Objektorientering: Lagring och livstid

Heldag om FGS FGS:er och deras tekniska regelverk. Karin Bredenberg, FGS funktionen. Standarder. FGS:er och deras tekniska regelverk 1

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

OOP Objekt-orienterad programmering

TDDD78 Introduktion till OOP i Java

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Övningsuppgifter kapitel 8

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen Datastrukturer (DAT037)

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Objektorienterad programmering D2

Föreläsning 10 OM DELMÅLSKONTROLLEN ; VARIABLERS SYNLIGHET STRING OCH STRINGBUILDER

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Mattias Wiggberg Collaboration

Felhantering TDDD78, TDDE30, 729A

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Sammanfattning. Listor. List-manipulering. Matris. /home/lindahlm/activity-phd/teaching/11dd1310/exercise3/exercise3.py September 13, 20111

Påminnelse: en datatyp för bilder. Programmering. En datatyp för bilder. Spegelbild. hh.se/db2004

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Tentamen i Introduktion till programmering

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

TDIU01 - Programmering i C++, grundkurs

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

SMD 134 Objektorienterad programmering

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Tentamen. Programmeringsmetodik, KV: Java och OOP. 17 januari 2002

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Introduktion till programmering SMD180. Föreläsning 7: Strängar

TUTORIAL: KLASSER & OBJEKT

Grafiska användargränssnitt i Java

Övning 3. Datateknik A, Java I, 5 poäng

Tentamen OOP

Objektorienterad programmering i Java I

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Transkript:

jonas.kvarnstrom@liu.se 2017 Tecken och strängar i Java

Begrepp: Tecken, kodpunkter, kodningar, Unicode: A till Z och mer

Tecken 3 Steg 1: Ett tecken (en symbol) Odelbar symbol Minsta enheten för information A B C D # "! ( ) å ä ö ċ õ ĕ ķ Ħ Ŗ ǽ Ґ ы Ω Ą Ж ΐ ਈ ਉ ਊ ਏ ਓ ਔ ਕ ਖ ਗ ਘ ਛ R M ریال 略 X

Teckenrepertoar 4 Steg 2: En teckenreportoar (character repertoire) Välj ut en bestämd (men inte ordnad) mängd av tillgängliga tecken w 0 M } a p N! o. D b ] y 8 C L z 5 h G ( V [ c v P \ U : 7 m ; < 4 S = 2 I J _ A 1 % g F ~ R H + e & d B n s # f { k l * @ / i O ` W r > X ) 6 Q x 9 u t - K 3, T j q E? $ Y ^ Z

Kodad teckenuppsättning 5 Steg 3: En kodad teckenuppsättning (coded character set, CCS) Varje tecken motsvaras av ett heltal exempel: ASCII från 0 till 127

Kodad teckenuppsättning (2) 6 Annat exempel: ISO Latin-x ISO Latin-1: Adderar 32 kontrolltecken, 96 symboler (västeuropa) ISO Latin-2: Adderar 32 kontrolltecken, 96 symboler (östra/centraleuropa)

Kodad teckenuppsättning (3) 7 EBCDIC (IBM-stordatorer): 129 = a, 130 = b,, 137 = i, 145 = j,

Kodad teckenuppsättning (4) 8 Java 8 använder Unicode 6.2.0 1,114,112 kodpunkter, 0 hex till 10FFFF hex >109,242 grafiska (synliga) tecken! https://vimeo.com/48858289 ਈਉਊਏਓਔਕਖਗਘਛ ໜໝༀ

Teckenkodning 9 Steg 4: Character encoding form + character encoding scheme Ungefär: Hur representerar man dessa tal som bytes i en dator? ISO Latin-1: Värden 0-255 Får plats i en enda byte Trivialt

Teckenkodning (2) 10 Unicode: >100000 tecken Räcker inte ens med 2 bytes (16 bitar) Enkel representation: UTF-32 Tecken 32-bitars heltal Oftast ineffektivt Exempel:

Teckenkodning (3) 11 UTF-8: Varierande antal bytes per tecken! Räksmörgås 72 c3 a4 6b 73 6d c3 b6 72 67 c3 a5 73 (hexadecimalt) 13 bytes Ganska effektivt för engelska och liknande språk I ISO Latin-1 skulle dessa 13 bytes betyda "rã ksmã rgã s" Kodningsschema: Informativt bitmönster!

Tecken och strängar 13 Java skiljer på: Tecken Exakt en symbol Inom apostrofer: x Primitiv datatyp, char 16 bitar, Unicode-tecken Strängar Noll eller flera symboler Inom citat: "Hello World" Objekttyp, java.lang.string

String 1: Strängar är objekt 15 Strängar i Java är objekt String-pekare String-objekt Teckenarray används internt för lagring Använder för att stödja hela Unicode: Oftast 1 char per tecken 2 chars för de "ovanligaste"

String 2: Literaler 16 Även strängliteraler representerar objekt Kan användas "direkt" Resulterar i ett String-objekt med 5 tecken Gör inte onödiga kopior

String 3: Jämförelser 17 Har två strängar samma innehåll? == jämför pekare! om ska vara före, om lika, om ska vara efter ƦƧ Ж ڥ Se även: java.text.collator Sortering enligt specifika språk (svenska: XYZÅÄÖ)

Formattering 1: Primitiva datatyper 19 Konvertera primitiva datatyper till text: Använd de överlagrade

Formattering 2: Object String 20 Varje objekt har en strängrepresentation Metoden () ärvs från Ska returnera en som representerar objektet på något sätt Exempel: Circle har ingen egen tostring() den ärvda implementationen från Object anropas klassnamn + "@" + ett unikt ID

Formattering 3: Object String 21 Implementera en egen tostring()! Här adderas strängar men ett String-objekt är immutable (oföränderligt)!

Formattering 4: Strängkonkatenering 22 : Manipulering av teckensekvenser Används av kompilatorn för att implementera "+" anropar Skapa en med samma tecken som denna

Formattering 5: Strängkonkatenering 23 Kan bli ineffektivt Vi kan ju inte ändra en sträng så vad händer här? Kopiera alla tecken till StringBuilder Lägg till några tecken Kopiera till en ny String Sätt om res-pekaren Släng StringBuilder + gammal String

Formattering 6: Strängkonkatenering 24 Lösning: Använd själv!

Formattering 7: Detaljerad kontroll 25 För mer detaljerad kontroll: Liknar () i C/C++ s=sträng d=heltal I finns både och

Formattering 8: Detaljerad kontroll 26 http://docs.oracle.com/javase/7/docs/api/java/text/messageformat.html Python Java