String類的功能:用來操做字符串,通常的字符串的功能都在這裏面,能夠把任意對象和數組轉化成字符串 java
字符串比較的區別?
1, == 對於兩個對象的地址值做比較是否相等
2, Equals 判斷兩個對象的內容是否相等數組
字符串賦值的內存原理?
String s = 「3434」 這種類型的是簡化的,右邊都是常量,不能改變的,若是再次賦值的也是再建立了一個,在內存中是不會消失的,由於在堆內存中。
String s = 「3434」+」4」當這樣的時候,前面的3434也是指的上面一個建立過的字符。若是常量在內存中有的話不會再建立只會引用這個常量,但若是是變量的話,就不一樣了,會在內存中再new一個新的變量出來,由於不是常量,因此是會變化的,不肯定性。安全
String的方法:
1, 獲取:
1, 獲取字符串的長度:length();
2, 指定位置的字符。Char charAt(int index);
3, 獲取指定字符的位置。索引不存在返回-1,因此經過返回值-1來判斷一個字符是否在的狀況。
int indexOf(int ch);
int indexOf(int ch,int fromIndex);
int indexOf(String str);
int indexOf(String str,int fromIndex);
int lastIndexOf(int ch);
int lastIndexOf(int ch,int fromIndex);
int lastIndexOf(String str);
int lastIndexOf(String str,int fromIndex);
4,獲取子串。
String substring(int start);//從start位開始,到length()-1爲止。
String substring(int start,int end);//從start開始到end爲止。//包含start不包含end
獲取整串 substring(0,str.length()); app
2,判斷
1, 字符串中包含指定的字符串嗎?
Boolean contains(String substring);
2, 字符串是否以指定字符串開頭?
Boolean startsWith(string);
3,字符串是否以指定字符串結尾啊?
boolean endsWith(string);
4,判斷字符串是否相同
boolean equals(string);覆蓋了Object中的方法,判斷字符串內容是否相同。
5,判斷字符串內容是否相同,忽略大小寫。
boolean equalsIgnoreCase(string): 函數
3 轉換:
1,經過構造函數能夠將字符數組或者字節數組轉成字符串。
2,能夠經過字符串中的靜態方法,將字符數組轉成字符串。
static String copyValueOf(char[] );
static String copyValueOf(char[],int offset,int count);
static String valueOf(char[]);
static String valueOf(char[],int offset,int count);
3,將基本數據類型或者對象轉成字符串。
static String valueOf(char);
static String valueOf(boolean);
static String valueOf(double);
static String valueOf(float);
static String valueOf(int);
static String valueOf(long);
static String valueOf(Object);
4,將字符串轉成大小寫。
String toLowerCase();
String toUpperCase();
5,將字符串轉成數組。
轉成字符數組。
char[] toCharArray();
轉成字節數組。
byte[] getBytes();//能夠加入編碼表。
6,將字符串轉成字符串數組。切割方法。
String[] split(分割的規則-字符串);
7,將字符串進行內容替換。變成新字符串。
String replace(oldChar,newChar);
String replace(oldstring,newstring);
8,對字符串進行追加。
String concat(string); ui
StringBuffer和StringBuilder的區別?
StringBuffer安全是1.5之前的,StringBuilder高效,是升級之後的。裏面的方法都同樣兩個都是容器,是緩衝區用來放相同類型的數據的,容器的長度能夠改變。
1,添加。
StringBuffer append(data):在緩衝區中追加數據。追加到尾部。
StringBuffer insert(index,data):在指定位置插入數據。
2,刪除。
StringBuffer delete(start,end);
StringBuffer deleteCharAt(index);
3,修改。
StringBuffer replace(start,end,string);
void setCharAt(index,char);
void setLength(len);
4,查找。
int indexOf(string);
int indexOf(string,int fromIndex);
int lastIndexOf(string);
int lastIndexOf(string,int fromIndex);
5,獲取子串
string substring(start);
string substring(start,end);
6,反轉。
StringBuffer reverse() 編碼
基本數據類型對象?
爲了方便使用基本數據類型,所有封裝成了對象。對象有不少功能能夠全用,並且類類型的對象能夠當基本數據同樣來用,有自動裝箱和拆箱的功能,系統都能自動完成。若是使用基本數據類型除了跟變量同樣的使用,還多了用對象調用方法的功能,就方便不少了。若是操做數據對象時超出了數值的範圍,就以字符串的運算模式去運行。code
public static void main(String[] args) { byte by = (byte)234;//若是是小於-128~127之間的數不用強轉;101 1011 1010 0000>>010 0100 0101 1111+1>>010 0100 0110 0000 Byte b = new Byte(by);//1110 1010>>0001 0101+1>>0001 0110溢出,在有效位之間的都置爲1 System.out.println(b);//-22產生溢出,可是不會報錯,也不會跑異常。 Byte bb = new Byte("234"); System.out.println(bb); }
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
1,以上是全部基本數據類型和與之對應的對象,這些對象之間均可以與字符串相互轉化。用paserXXX(numstring)方法來轉化。進制之間也能夠轉化十進制轉成別的,或者別的進制轉成十進制,用Integer裏在的方法。
2,將一個十進制整數轉成其餘進制。
轉成二進制:toBinaryString
轉成八進制:toOctalString
轉成十六進制:toHexString》》System.out.println(Integer.toHexString(23));
toString(int num,int radix);將十進制轉爲任意進制。System.out.println(Integer.toString(28,8));//結果爲34
將其餘進制轉換十進制。
parseInt(string,radix);
System.out.println(Integer.parseInt("12", 8));//將八進制中的12轉爲十進制,結果爲10 對象