다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시 타입 체크를 해주는 기능이다
ex) List class, Map<K, V> class
class Pocket<E> {
E? _data;
void put(E data) {
_data = data;
}
E? get() {
return _data;
}
}
정해 둔 값만 넣어둘 수 있는 타입
ex) ‘Hello’ + ‘ Dart’ ⇒ ‘Hello Dart’
'${3 + 2}' // '5'
'${'word'.toUpperCase()}' // WORD
'$myObject' // The value of myObject.toString()
String.subString(시작인덱스, 문자개수) // 떼어내기
String.replaceAll(기존 문자열, 변경 문자열) // 치환
String.split(구분자) // 분리
String.toLowerCase() // 소문자
String.toUpperCase() // 대문자
String.indexOf(문자열) ⇒ 해당 문자열의 위치 반환
String.lastIndexOf(문자열) // 가장 뒤에 있는 문자의 위치 반환
String.length // 길이
String.isEmpty < = > String.isNotEmpty // 빈값 확인
String.contains(문자열) // 포함여부 확인
String.endsWith(문자열) // 끝나는 단어가 맞는지 확인
String.trim() // 좌우 공백 제거
write() 메서드로 결합한 결과를 내부 메모리(버퍼)에 담아 두고 toString()으로 결과를 얻음
final buffer = StringBuffer('Dart');
buffer
..write(' and ')
..write('Flutter');
print(buffer.toString());
.. (cascade) 연산자 : void 리턴인 함수의 앞에 사용하면 해당 객체의 레퍼런스를 반환하여 메서드 체인을 사용할 수 있음
void main() {
String str1 = 'hello';
String str2 = 'hello';
print(identical(str1, str2)) // 1번
String str3 = String.fromCharCodes('hello'.codeUnits);
print(identical(str1, str3)) // 2번
String str4 = 'hel' + 'lo';
print(identical(str1, str4)); // 3번
String str5 = 'hel' + getLo();
print(identical(str1, str5)); // 4번
}
String getLo() {
return 'lo';
}