Giriş
String kelimesinin nereden geldiğini açıklayan bir cevapları Origin of "string yazısında. 1918 yılında matematikçiler tarafından kullanılmış.
String kelimesinin nereden geldiğini açıklayan bir cevapları Origin of "string yazısında. 1918 yılında matematikçiler tarafından kullanılmış.
1. Java 8 ile bellek
String sınıfı kendi içinde hash alanını da saklar. Toplam 20 byte gerekir. Bu sayı 8'ın katı olan 24'e yuvarlanır. Yani bir string en az 24 byte yer ile başlar. Şöyledir.
String sınıfı kendi içinde hash alanını da saklar. Toplam 20 byte gerekir. Bu sayı 8'ın katı olan 24'e yuvarlanır. Yani bir string en az 24 byte yer ile başlar. Şöyledir.
String:
Object header: 12 bytes
Reference to char[]: + 4 bytes
Integer value: + 4 bytes
Data size: = 20 bytes
Total aligned size: 24 bytes
2. Java 9 ile bellekJava 9 ile içerideki char [] dizisi byte [] ile değiştirildi. Böylece daha az bellek kullanılması sağlandı. Çünkü bir Java uygulamasındaki belleğin önemli bir kısmı String nesneleri tarafından kullanılıyor. Açıklaması şöyle
If you examine the memory being used by your Java application, you will most likely notice that a significant amount of the heap is allocated by String objects.3. literal
String Literal derleyici tarafından String tipine çevrilir.
constructor - byte [] + encoding
Açıklaması şöyle. byte dizisi belirtilen encoding'e uygun olmalıdır.
Şöyle yaparız.The behavior of this constructor when the given bytes are not valid in the given charset is unspecified. The CharsetDecoder class should be used when more control over the decoding process is required.
byte[] bytes = { ..., ... };
new String (bytes, "UTF-8");
constructor - byte [] + CharsetAçıklaması şöyle.
ÖrnekThis method always replaces malformed-input and unmappable-character sequences with this charset's default replacement string. The CharsetDecoder class should be used when more control over the decoding process is required.
byte[] dizisinin UTF-8 olduğunu varsayalım. Açıklaması şöyle.
What a real UTF-8 to String conversion does it to convert between 1 and 4 bytes (codeunits) representing a UTF-8 codepoint into 1 or 2 16-bit codeunits representing the same codepoint in UTF-16. That cannot be done using a plain memory copy.
CASE_INSENSITIVE_ORDER Alanı
String Sıralama yazısına taşıdım.
charAt metodu
Açıklaması şöyle.
Metodu içi şöyleThe java string charAt() method returns a char value at the given index number. The index number starts from 0.
public char charAt(int index) {
if ((index < 0) || (index >= value.length)) {
throw new StringIndexOutOfBoundsException(index);
}
return value[index];
}
Şöyle yaparız.Çıktı olarak "k" verir.String name="StackExchange";
char ch=name.charAt (4);//returns the char value at the 4th index
System.out.println (ch);
char int ile karşılaştırılabilir. Şöyle yaparız.char ch = str.charAt(4);if( ch > 127 ){
...
}
chars metoduString.chars() ve String.codePoints() Farkı yazısına taşıdım.
codePoints metodu
String.chars() ve String.codePoints() Farkı yazısına taşıdım.
compareToIgnoreCase metodu
String Sıralama yazısına taşıdım.
concat metodu
String Concatenation yazısına taşıdım.
contains metodu
Şöyle yaparız. contains() metodu indexOf () metoduna çok benzer. İkisi de belirtilen string'in kendi içimde olup olmadığını döner. Tek fark olarak contains() boolean dönerken indexOf () başlangıç konumunu belirtir.
String str1 = "...";
String str2 = "...";
if(str1.contains(str2)) {...}
describeConstable metodu
String.describeConstable metodu yazısına taşıdım
String Concatenation yazısına taşıdım.
formatted metodu
formatted metodu yazısına taşıdım
equals metodu
Şöyle yaparız.
String str = "...";
if(str.equals("...")){...}
equalsIgnoreCase metoduAçıklaması şöyle
Sistem locale'ini kullanır. Aslında şu kod ile aynıdır.Two characters c1 and c2 are considered the same ignoring case if at least one of the following is true:
• Applying the method java.lang.Character.toUpperCase(char) to each character produces the same result
String string1 = ...;
String string2 = ...;
if (string1.toUpperCase().equals(string2.toUpperCase()))
System.out.println("equals says they are equal");
}
Eğer farklı bir locale kullanarak karşılaştırma yapmak istersek şöyle yaparız.if (string1.toUpperCase(Locale.GERMAN).equals(string2.toUpperCase(Locale.GERMAN)))
ÖrnekŞöyle yaparız.
String str = "...";
if(str.equalsIgnoreCase("...")) {...}
endsWith metodu
Örnek
Şöyle yaparız
String phrase = "I like bananas";
System.out.println(phrase.endsWith("bananas")); // true
System.out.println(phrase.endsWith("Tandrew")); // false
/* Output:
true
false
*/
getBytes metodu
byte[] getBytes(Charset charset);
hashCode metoduŞöyle yaparız.
String str = ...;
int code = str.hashCode();
indent metodu
String.indent metodu yazısına taşıdım
String.indexOf metodu yazısına taşıdım
intern metodu
JDK ilklenirken bazı string'leri kendisi inter() yaparak havuza dahil eder. Açıklaması şöyle.
When called, what it does is either:Açıklaması şöyle.
* add the String to the internal pool if it didn't exist already;
* return the equivalent String from the pool if it already existed.
Kurallar şöyle.When the intern method is invoked, if the pool already contains a string equal to this String object as determined by the equals(Object) method, then the string from the pool is returned. Otherwise, this String object is added to the pool and a reference to this String object is returned.
1.When a String object is created using a String literal, JVM checks if the String literal is already present in the pool. If the object exists in the pool, the same object is returned instead of a new object.Havuz büyüklüğü JDK'ya göre değişiyor. Açıklaması şöyle.
2.When a String object is created using a new operator, a new object is created even if the string exists in the string pool.
3.When you call the intern method on a String object, a new String object is created and put on the pool if it doesn't exist. The intern method returns the object from the pool.
ÖrnekPrior to Java 7u40, the default pool size was 1009 buckets but this value was subject to a few changes in more recent Java versions. To be precise, the default pool size from Java 7u40 until Java 11 was 60013 and now it increased to 65536.
Şöyle yaparız.
String s1 = "...";
String s2 = s1.intern();
isBlank metodu
Java 11 ile geliyor. Açıklaması şöyle
join metoduJava 11 ile geliyor. Açıklaması şöyle
Indicates if the String is empty or contains only white space characters
Örnek
Şöyle yaparız
String str1 = "";
System.out.println(str1.isBlank()); //true
String Concatenation yazısına taşıdım.
length metodu
Şöyle yaparız.
System.out.println("".length());
lines metoduString.lines metodu yazısına taşıdım
Elimizde şöyle bir string olsun
String str = "\n London";
Şöyle yaparızSystem.out.println(str.matches("(?s).*London.*"));
(?s) şununla aynıdırPattern pattern = Pattern.compile(".*London.*", Pattern.DOTALL);
repeat metoduString.repeat metodu yazısına taşıdım
replace metodu
İmzası şöyle. Düzenli ifade kullanmaz. Sıradan bir string'i bir başka string ile değiştirir.
CharSequence replace(CharSequence target, CharSequence replacement);
replaceAll metoduDüzenli ifade kullanılır.
resolveConstantDesc metodu
String.resolveConstantDesc metodu yazısına taşıdım
String.resolveConstantDesc metodu yazısına taşıdım
split metodu
Şöyle yaparız.
String str = "Jan 12 1992";
String[] tokens = str.split("\\s+"); // <-- split on one or more spaces
strip metoduJava 11 ile geliyor. Açıklaması şöyle. strip() metodu trim() ile aynı. Farklı olarak Unicode olarak çalışır.
Removes the white space from both, beginning and the end of string
strip(), stripTrailing(), stripLeading() : These functions are the boost to trim(). It uses Unicode so it is much better than trim.- stripTrailing() is used for removing the spaces at the end of the string.- On the other hand, stripLeading() is for removing the whitespace at the beginning.- With strip() both prefix and suffix whitespace gets removed.
stripLeading metodu
Removes the white space from the beginningstripTrailing metodu
Java 11 ile geliyor. Açıklaması şöyle
Removes the white space from the endsubstring metodu - beginIndex
Üçüncü karakterden sona kadar olan kısmı almak için şöyle yaparız
String str = ...;
String str = str.substring (2);
substring - beginIndex, endIndex10'ar 10'ar bölmek için şöyle yaparız.
String txtStr = ...;
int subStringSize = 10;
for (int start = 0; start < txtStr.length(); start += subStringSize) {
txtStr.substring(start,
Math.min(txtStr.length(), start + subStringSize));
}
trim metoduÖrnek
Şöyle yaparız.
String s = " text ";
String trimmed = s.trim();
trimmed --> "text";
toCharArray metoduMetodun içi şöyle.
public char[] toCharArray() {
char result[] = new char[value.length];
System.arraycopy(value, 0, result, 0, value.length);
return result;
}
Şöyle yaparız.String str = ...;
char[] chars = str.toCharArray();
toLowerCase metoduŞöyle yaparız.
String str = "...";
str = str.toLowerCase;
transform metodu
String.transform metodu yazısına taşıdım
translateEscapes metodu
String.translateEscapes yazısına taşıdım
Metodun içi şöyle. Yani aslında kendisi bir iş yapmıyor.
public static String valueOf(int i) {
return Integer.toString(i);
}
Hiç yorum yok:
Yorum Gönder