1.基本結構:
public static void main(String[] args) {
權限修飾符、靜態(tài)修飾符 返回值類型 方法名 參數(shù)
}
2.fload類必須加上F万俗、f否則編譯器會當成double
3.final常量蔬充,可以先定義在賦值颈畸,但只能賦值一次
4.static
static方法:不依賴于任何對象就可以訪問,故沒有this操作,靜態(tài)方法中不可訪問非靜態(tài)方法和變量焕毫,反之可以。
補充:當然也可以將某個類的實例對象驶乾,然后通過該實例對象調(diào)用非靜態(tài)方法
static變量:不可修飾局部變量邑飒,同樣不需要依托于對象(與C語言不同,static不可限制權限)级乐,兩個對象對同一個靜態(tài)成員變量操作疙咸,將會操作內(nèi)存中的同一個地址
5.String:
字符串常用方法:indexOf()該字符串第一次出現(xiàn)的位置
lastIndexOf()該字符串第一次出現(xiàn)的位置
charAt()指定位置的字符
subString(1,3)截取字符串
trim()去除前導空格和尾部空格
replace(”A”风科,”B")替換字符串
startsWith()endsWith()是否是這個前綴或者后綴
compareTo()按照字典順序比較兩個字符串撒轮,基于Unicode值
例:
String str1 = "test11";
String str2 = "test22";
str2.compareTo(str1)返回“1”,相反“-1”贼穆,相同則“0”
split(”,”,3)按照指定字符和次數(shù)限制分割字符串
equals()對比兩個對象(必須是地址和內(nèi)容全部相同)
例:String s1 = new String("jianghong");
String s3 = new String("jianghong");
String s2 = "jianghong";
String s4 = "jianghong";
那么s2=s4,s1!=s3.解釋:new 出來的對象會調(diào)用String的構造函數(shù)题山,同時在堆里和對象池里各創(chuàng)建一個對象。但直接賦值會首先在對象池查找是否有相同的字符串故痊,有的話則將地址指向這個字符顶瞳。
例:
String a = "1";
String b = "2";
String c = "12";
String d = "1"+"2";
String e = a+b;
如果 final a final b 那么c和e‘是否相等
c = d ,c != e ,c=e'
解釋:取決于在編譯期間是否能知道它實際的內(nèi)容。
6.數(shù)組:java.util.Arrays
排序:Arrays.sort(arr)
搜索:Arrays.binarySearch(arr,0,2,5);
冒泡排序愕秫、選擇排序慨菱、反轉(zhuǎn)排序(有序)
7.類
extends 繼承與某個類
class SubClass extends SuperClass{
//構造方法調(diào)用父類構造方法
public Subclass(String name){
super (name)
}
}
implement 實現(xiàn)某個接口(interface支持被繼承,類中支持多接口實現(xiàn))
//定義了一個接口Flyer
interface Flyer
{
void fly ();
int ID = 1;
}
public class Animal extends Person implements Flyer,Runner{
@Override
public void fly() {
}
int j = Flyer.ID;
}
構造方法的調(diào)用順序為先頂級再父類再自身
8.權限修飾符 java
| 包位置 |private|protected|public
| -------------|-------------| -----|
| 本類 |可見 | 不可見| 不可見 |
| 同包其他類或子類 |不可見 | 可見 | 可見 |
| 其它包的類或者子類 | 不可見 | 不可見 | 可見 |
類的成員不寫訪問修飾時默認為default戴甩。默認對于同一個包中的其他類相當于公開(public)符喝,對于不是同一個包中的其他類相當于私有(private)。受保護(protected)對子類相當于公開甜孤,對不是同一包中的沒有父子關系的類相當于私有
9.java內(nèi)存回收(對象的銷毀)當超出作用范圍或者被賦為null的時候洲劣。不足之處為只能回收由new創(chuàng)建的對象备蚓,那么就要寫方法finalize(),調(diào)用這個方法,手動將對象銷毀(null)囱稽。但是當Java內(nèi)存爆炸用完的時候
10.關于計算機編碼基礎
原碼:
如果機器字長為n郊尝,那么一個數(shù)的原碼就是用一個n位的二進制數(shù),其中最高位為符號位:正數(shù)為0战惊,負數(shù)為1流昏。剩下的n-1位表示概數(shù)的絕對值。
例如: X=+101011 , [X]原= 00101011 X=-101011 , [X]原= 10101011
位數(shù)不夠的用0補全吞获。
PS:正數(shù)的原况凉、反、補碼都一樣:0的原碼跟反碼都有兩個各拷,因為這里0被分為+0和-0刁绒。
反碼:
反碼就是在原碼的基礎上,符號位不變其他位按位取反(就是0變1烤黍,1變0)就可以了知市。
例如:X=-101011 , [X]原= 10101011 ,[X]反=11010100
補碼:
補碼也非常的簡單就是在反碼的基礎上按照正常的加法運算加1速蕊。
例如:X=-101011 , [X]原= 10101011 嫂丙,[X]反=11010100,[X]補=11010101
PS:0的補碼是唯一的规哲,如果機器字長為8那么[0]補=00000000跟啤。
移碼:
移碼最簡單了,不管正負數(shù)唉锌,只要將其補碼的符號位取反即可隅肥。
例如:X=-101011 , [X]原= 10101011 ,[X]反=11010100袄简,[X]補=11010101腥放,[X]移=01010101
11.對象類型轉(zhuǎn)型
向上轉(zhuǎn)型:SuperClass super = new SubClass();即,將子類的對象賦值給父類痘番。
例:假設SuperClass有個方法test(SuperClass class)捉片,這樣如果根據(jù)子類對象的不同在父類的方法中,進行不同的處理汞舱,這就是多態(tài)的思想伍纫。
向下轉(zhuǎn)型:將父類對象賦值給子類,可能會出現(xiàn)對象成員的錯誤昂芜,需要使用顯示類型轉(zhuǎn)換(SuperClass)
instanceof:判斷某個對象是否為某一個類的一個實例
12.抽象類:使用abstract修飾莹规,抽象類不能擁有實例化的對象,但可以通過繼承和多態(tài)實現(xiàn)方法泌神。抽象方法本身沒有方法體良漱,沒有實際意義
13.java 中使用import可以指定某個包中的所有類舞虱,如:import com.test.jianghong.*,import不僅能導入類母市,也可以導入靜態(tài)成員矾兜,如import:static java.lang.Math.max;
14.集合類 map、list患久、set
迭代器iterator(),
Collection<String> list =new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
Iterator <String> it = list.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
```
15.I/O輸入輸出
所有輸入流類都是抽象類InoutStream或Reader的子類椅寺。所有輸出都是OutputStream或Writer的子類
InputStream是用來處理字節(jié)的,不適合處理字符文本(字符采用Unicode編碼蒋失,雙字節(jié))返帕,而Reader則能處理字符流
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class StandardInputOutput {
public static void main(String args[]) {
String s;
// 創(chuàng)建緩沖區(qū)閱讀器從鍵盤逐行讀入數(shù)據(jù)
InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(ir);
System.out.println("Unix系統(tǒng): ctrl-d 或 ctrl-c 退出"
+ "\nWindows系統(tǒng): ctrl-z 退出");
try {
// 讀一行數(shù)據(jù),并標準輸出至顯示器
s = in.readLine();
// readLine()方法運行時若發(fā)生I/O錯誤篙挽,將拋出IOException異常
while (s != null) {
System.out.println("Read: " + s);
s = in.readLine();
}
// 關閉緩沖閱讀器
in.close();
} catch (IOException e) { // Catch any IO exceptions.
e.printStackTrace();
}
}
}
16.class類與java的反射
通過getClass荆萤、getMethods等可以返回java對象的描述信息。如果去類名铣卡,類的構造方法链韭,類中的成員等
17.Java中的枚舉類enum,該類可定義枚舉常量算行,也可以自定構造方法定義帶參數(shù)的枚舉類型成員
enum Constants2{
Constants_A("test1"),Constants_B("test2");
private String description;
private Constants2(String description){
this.description = description;
};
private String getDescription(){
return description;
}
}
public static void main (String []args ){
for (int i = 0; i <Constants2.values().length ; i++) {
out.println("枚舉成員變量" + Constants2.values()[i]+"輸入" + Constants2.values()[i].getDescription());
}
}
補充:枚舉類也可以實現(xiàn)接口
interface d {
public String getDescription();
}
public enum Constant3 implements d{
Constants_A{
public String getDescription(){
return ("test3");
}
}
}
18.泛型類梧油,使用格式為Class<T>,這個類不規(guī)定自身類型苫耸,在使用的時候自動轉(zhuǎn)化為需要的類型
public class Tclass <T>{
private T[] array;
public void SetT(T[] array){
this.array = array;
}
public T[] getT(){
return array;
}
public static void main(String[] args) {
Tclass <String >tClass = new Tclass<String >();
String[] array = {"var1","var2","var3"};
tClass.SetT(array);
for (String a: tClass.getT()
) {
System.out.println("數(shù)組泛型類 "+a);
}
//通配符州邢?先不確定類型,在實際使用的時候再確定類型
Tclass<? extends List> a = null;
a = new Tclass<ArrayList>();
a = new Tclass<LinkedList>();
}
}