Java基礎知識總結

Java基礎知識總結

基本數據類型

Java語言提供了八種基本類型。六種數字類型(四個整數型,兩個浮點型),一種字符類型,還有一種布爾型。
java

基本類型之間的轉換

強制類型轉換

若是要把大的轉成小的,或者在short與char之間進行轉換,就必須強制轉換,也被稱做縮小轉換(narrowing conversion),由於必須顯式地使數值更小以適應目標類型。強制轉換採用轉換操做符()。嚴格地說,將byte轉爲char不屬於narrowing conversion),由於從byte到char的過程實際上是byte-->int-->char,因此widening和narrowing都有。強制轉換除了可能的精度損失外,還可能使模(overall magnitude)發生變化。數組

字符串

建立字符串

String name = new String("星星");

或者安全

String name = "星星";

字符串長度

用於獲取有關對象的信息的方法稱爲訪問器方法。
String 類的一個訪問器方法是 length() 方法,它返回字符串對象包含的字符數。多線程

鏈接字符串

String 類提供了鏈接兩個字符串的方法:app

string1.concat(string2);

返回 string2 鏈接 string1 的新字符串。也能夠對字符串常量使用 concat() 方法,如:ide

"星星".concat("star");

更經常使用的是使用'+'操做符來鏈接字符串,如:性能

"Hello," + " star" + "!"

建立格式化字符串

咱們知道輸出格式化數字可使用 printf() 和 format() 方法。
String 類使用靜態方法 format() 返回一個String 對象而不是 PrintStream 對象。
String 類的靜態方法 format() 能用來建立可複用的格式化字符串,而不單單是用於一次打印輸出。ui

字符串比較

使用equals()方法,區分大小寫線程

System.out.println("star".equals("star"));

使用equalsIgnoreCase()方法,忽略大小寫指針

System.out.println("star".equalsIgnoreCase("Star"));

字符串截取,使用substring()方法

String blog = "star and moon";
 String sub1 = string.substring(2);
 String sub2 = blog.substring(2, 4);
 System.out.println(sub1);
 System.out.println(sub2);

字符串查找,使用indexOf()方法

String string2 = "I love Java";
 String string3 = "o";
 int serindex1 = string2.indexOf(string3); //從String2開始位置查找string3字符串
 int serindex2 = string2.indexOf(string3,5); //從String2字符串第二個位置查找string3字符串
 System.out.println(serindex1); //從0開始
 System.out.println(serindex2); //查詢不到顯示-1

字符串替換,replace(oldChar, newChar)

char oldChar = 'I';
 char newChar = 'U';
 string2.replace(oldChar, newChar);
 System.out.print(string2.replace(oldChar, newChar));

字符串轉換字符數組

String hellostring = "hello";
 char[] helloArray = hellostring.toCharArray();

String StringBuffer 和 StringBuilder 的區別

  • 可變性

簡單的來講:String 類中使用 final 關鍵字修飾字符數組來保存字符串,private final char value[],因此 String 對象是不可變的。而StringBuilder 與 StringBuffer 都繼承自 AbstractStringBuilder 類,在 AbstractStringBuilder 中也是使用字符數組保存字符串char[]value 可是沒有用 final 關鍵字修飾,因此這兩種對象都是可變的。
StringBuilder 與 StringBuffer 的構造方法都是調用父類構造方法也就是 AbstractStringBuilder 實現的,你們能夠自行查閱源碼。

AbstractStringBuilder.java

abstract class AbstractStringBuilder implements Appendable, CharSequence {
    char[] value;
    int count;
    AbstractStringBuilder() {
    }
    AbstractStringBuilder(int capacity) {
        value = new char[capacity];
    }
}
  • 線程安全性

String 中的對象是不可變的,也就能夠理解爲常量,線程安全。AbstractStringBuilder 是 StringBuilder 與 StringBuffer 的公共父類,定義了一些字符串的基本操做,如 expandCapacity、append、insert、indexOf 等公共方法。StringBuffer 對方法加了同步鎖或者對調用的方法加了同步鎖,因此是線程安全的。StringBuilder 並無對方法進行加同步鎖,因此是非線程安全的。 

  • 性能
    每次對 String 類型進行改變的時候,都會生成一個新的 String 對象,而後將指針指向新的 String 對象。StringBuffer 每次都會對 StringBuffer 對象自己進行操做,而不是生成新的對象並改變對象引用。相同狀況下使用 StringBuilder 相比使用 StringBuffer 僅能得到 10%~15% 左右的性能提高,但卻要冒多線程不安全的風險。

對於三者使用的總結:

  1. 操做少許的數據: 適用String

  2. 單線程操做字符串緩衝區下操做大量數據: 適用StringBuilder

  3. 多線程操做字符串緩衝區下操做大量數據: 適用StringBuffer

大數值

在 Java 中提供了大數字的操做類,即 java.math.BigInteger 類與 java.math.BigDecimal 類。這兩個類用於高精度計算, BigInteger 類是針對大整數的處理類,而 BigDecimal 類則是針對大小數的處理類。

使用靜態的valueOf方法能夠將普通的數值轉換成大數值。

數組

Java 語言中提供的數組是用來存儲固定大小的同類型元素。

數組中的元素能夠是任何數據類型,包括基本數據類型和引用數據類型。

數組屬引用類型,數組型數據是對象(object),數組中的每一個元素至關於該對象的成員變量。

數組是多個相同類型數據的組合,實現對這些數據的統一管理。一個數組實際上就是一連串的變量,數組按照使用能夠分爲一維數組、二維數組、多維數組。

聲明數組變量

首先必須聲明數組變量,才能在程序中使用數組。下面是聲明數組變量的語法:
dataType[] arrayRefVar; // 首選的方法dataType arrayRefVar[]; // 效果相同,但不是首選方法

建立數組

Java語言使用new操做符來建立數組 dataType[] arrayRefVar = new dataType[arraySize];

For-Each 循環

JDK 1.5 引進了一種新的循環類型,被稱爲 For-Each 循環或者增強型循環,它能在不使用下標的狀況下遍歷數組。

語法格式以下:

for(type element: array)
{
    System.out.println(element);
}

多維數組

多維數組能夠當作是數組的數組,好比二維數組就是一個特殊的一維數組,其每個元素都是一個一維數組,例如:

String str[][] = new String[3][4];

Arrays 類

java.util.Arrays 類能方便地操做數組,它提供的全部方法都是靜態的。
具備如下功能:

  • 給數組賦值:經過 fill 方法。
  • 對數組排序:經過 sort 方法,按升序。
  • 比較數組:經過 equals 方法比較數組中元素值是否相等。
  • 查找數組元素:經過 binarySearch 方法能對排序好的數組進行二分查找法操做。
相關文章
相關標籤/搜索