04 Strings
Strings¶
immutable - you cannot change anything directly
Object and String are interchangeable
// both are valid
Object test1 = "hello";
String test2 = "hello";
// strings
String s1 = "hello world";
String s = new String("hello world");
// length
s.length(); // 4
// accessing char
s.charAt(3);
s.substring(i); // i to end of the string
s.substring(i, j); // i to j-1
//concat
s1 += s2;
// DONT FORGET s1 =
s1 = s1.concat(s2);
// s2 is added to s1 and returns it
// basicaly s1 is the object in focus, and it is getting modified
// search
// returns int position of the 1st char of the string
s1.indexOf("HELLO"); // the string is case-sensitive
s1.indexOf(s2); // searches for s2 inside s1
s1.indexOf(s2, 3); // (string, startIndex)
"Hello".equals("hello"); // returns false
"Hello".equalsIgnoreCase("hello"); // returns true
char[] dh = s1.toCharArray();
Integer.parseInt(numberString); // String to int
Float.parseFloat(numberString);
Integer.toString(numbervar); // int to String
Float.toString(numbervar);
Double.toString(numbervar);
Boolean.toString(numbervar);
Comparing Strings¶
s1 = "hello";
s2 = "hello";
// equality
if(s1 == s2) // compares address
if( s1.equals("hello") ) // compares characters
if( s1.compareTo("hello") ) // compares objects including strings
Char Array¶
char ch = 'w';
char[] dh = { ch, 'o', 'r', 'd'};
char dh[] = new char[ buffer.length() ];
//char array
dh = s1.toCharArray();
Arrays.equals(dh1, dh2); // 2 char arrays
Char array vs String¶
Char array is the primitive strings we have in C/C++, but it doesn't have the advanced features of the String objects in java
Another difference is that String objects have automatically-included \0
StringBuffer¶
gives you the best of strings and char array; they are basically mutable Strings
you can append, set without creating a new String each time
default capacity = 16 (not size) has a minimum allocation of memory for 16 characters; \(\ge 16\) is valid
- length = current number of characters
- capacity = max length
Functions¶
boolean length()returns length of StringBufferboolean capacity()returns capacity ofsetLength(length)ensureCapacity()charAt(index)return the character at indexsetCharAt(index, newchar)change the character at indexgetChars(startIndex, nOfCharacters, arrayName, 0)takes substring and returns as character arrayreverse()reverses stringappend(string, startIndex, endIndex)append dataString insert(insertPos, arrayName, startIndex, endIndex)deleteCharAt(index)remove a characterdelete(startIndex, endIndex)remove a substring
StringTokenizer¶
partitions String into individual substring(s)
constructor takes 2 parameters
- input string
- delimiter
(eg: comma, space, colon)
import java.util.StringTokenizer
String s = "https://ahmedthahir.tk";
StringTokenizer st = new StringTokenizer(s, "://."); // order doesn't matter, but the pattern matters
System.out.println(st.countTokens());
while(st.hasMoreTokens())
System.out.println(st.nextToken());