標籤:基本 indexof 結束 資料類型 完整 char api orm 編碼
要準備學習下java了,按著《core java》的內容,簡單的做了一下筆記。這本書有很多地方對C++和java的文法作了對比,所以對於從C++向java方向轉的人來說,非常有利!
javac xxx.java
java xxx
java applet: appletview xxx.html (瀏覽器載入)
第三章 基本類型
1) 對大小寫敏感 強調main方法時公有的
2)java沒有無符號類型
3)float後面必須有F 標記,double 也可以加上D
4) 錯誤溢出:正無窮 負無窮 NaN(非數字 0/0=NaN)
可以用 Double.isNan(x) 判斷是不是非數字
5)char類型 轉換Unicode編碼方便 不建議使用
32→空格
48→0
65→A
97→a
6)常量 final 類似於 const
7)位元運算 與 或 異或 非 (可用來屏蔽某些位)
移位操作 << >> (快速計算或屏蔽位)
>>> 用來填充最高位
8)Math庫 包含數學方法與符號
9)強制轉換 cast
10)String 這是一個預定義類
截取字串 substring(int index,int length)
拼接 +
截取和拼接可以動態改變字串長度
不要用==號比較字串大小 (c: strcmp)
因為String時一個類,所以改變字串時,會重新指向新的字串,原有的字串就會被釋放掉
字串長度為0和null 不是一碼事,null表示沒有任何對象與之關聯
字元資料類型是一個採用UTF-16編碼錶示Unicode代碼點的代碼單元
因為有些字元咋不同編碼下,字元長度不同
length() 返回UTF-16下的代碼單元
/////////////////////////////////////////////////////
charAt() 返回指定位置的代碼點,注意不是字元!!
codePointCount(0,str.length()) 返回字串char(代碼點)的數量
/////////////////////////////////////////////////////
String APi
compareTo(String other) //順序比較
startWith(String prefix)
endsWith(String suffix)
substring()// 若干重載 分割
equal(Object other)
equalIgnoreCase(String other)//忽略大小寫
indexOf() //若干重載函數 返回第一個匹配位置
lastindexOf() 返回最後一個匹配位置
length();
toLowerCase() 小寫
toUpperCase() 大寫
trim() 刪除首尾空白
replace(CharSequence oldString,CharSequence newString) //字串替換,可以使用StringBuild或String做CharSequence
11)StringBuild(前身 StringBuffer) 構建字串 如果頻繁的改變字串長度
StringBuild s = new StringBuild();
s.append(ch);
String ss = s.toString();
StringBuild Api
length()
append() //若干重載
appendCodePoint(ing cp) 追加代碼點並轉化為代碼單元
setCharAt(int i,char c) 第i個代碼點替換為c
insert(int pos, string/char) 插入
delete(int start,int end)刪除srat開始到end-1結束的代碼單元
String toString() 將緩衝器內容重新整理到String中去
12)輸入輸出
輸出 System.out.println()
輸入 import java.util.* //引入包
Scanner in = new Scanner(System.in);//System.in 輸入資料流
String name = in.nextLine(); //控制台輸入一行
in.next()
in.nextInt()/nextDouble()
採用Console 處理不如Scanner方便。Console沒有處理輸入單個單詞或數值的方法
格式化輸出printf(與C相似:%s,%d.%f...%tc(時間輸出,c完整時間,其他字母還會有不同含義))
同時也可用使用String.format(與C相似:%s,%d.%f...%tc)建立格式化字串
(c# 使用預留位置,索引從0開始,java的從1開始,避免混肴)
13)檔案輸入輸出
讀取檔案:
使用Scanner,構建一個File對象
Scanner in = new Scanner(Paths.get("myfile.txt"))//使用雙反斜線轉義;之後可以使用 Scanner常規方法 讀取一個檔案
寫檔案:
PrintWriter out = new PrintWriter(""myfile.txt"")
;之後可以使用 System.out常規方法(println、print、printf) 寫入一個檔案了
Scanner(File f);
PrintWrite(String filename);
static Path get(String parhName) //根據指定路徑名構建一個path
///////////////////////
控制流程程跳過
///////////////////////
14)大數值 位於java.math庫中
BigInterger 實現任意精度整數運算
BigDecimal 實現任意精度浮點數運算
!!!不能重載運算子號 並且也沒有辦法自訂運算子多載
(先構建對象,在調用方法,省略例子)
valueOf() 可將普通數值轉化為大數值
15)數組 new運算子建立空間大小,因為他是建立到堆中的
不能使用=對數組進行簡單的賦值,這是將兩個引用指向同一個記憶體。一個改變後,另一個也會同時改變。同時原有的數組記憶體將被捨棄回收
凡是在堆上分配空間的,使用=會改變引用對象(或重新建立新對象),同時捨棄原有的對象空間
16)for迴圈與for each迴圈
17)數組初始化與匿名數組(預設:數值:0,boolean:false,String:null)
18)數組拷貝
使用=拷貝時,兩個變數指向同一塊記憶體
若向拷貝值,使用Arrays。copyOf(數組名,新數組長度),返回一個新數組
通常用來改變數組的大小
類似於c++ 數組指標 int* a = new int[100];(我說咋這麼像!!)
int[] a = new int[100];
19)命令列參數 public static void main(String[] args);
20)數組排序 隨機數 Math.random() [0-1)的隨機數
Arrays.sort() //快排
////////////////////////////////////////
Arrays Api
static String toString(type[] a)
static type copyOf(type[] a,int length)
static type copyOf(type[] a,int start,int end)
static void sort(type[] a) 快排
static int binarySearch(type[] a,type v)
static int binarySearch(type[] a,int start,int end,type v)二分尋找法
static void fill(type[] a,type v) 填充v值
static boolean equal(type[] a,type[] b)
////////////////////////////////////////
21)二維數組 快速列印二維數組a
System.out.println(Arrays.deepToString(a))
23)鋸齒數組 java多維陣列類似於數組的數組,數組中的數組
for(int i = 0;i < a.length;i++) {
for(int j = 0; j< a[i].length; j++) {
a[i][j] = 1;
}
}
double [][] d = new double[10][6]
等同於:
double **d = new double*[10];
for(int i = 0; i < 10; i++)
d[i] = new double[6];
java學習筆記(Core Java)1-3