日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java2精要_java知识精要(一)

發布時間:2025/3/11 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java2精要_java知识精要(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、java數組 (瘋狂java講義 第4.5 ~ 4.6章節)

1) 聲明形式:

type[] arrayName; 推薦方式

type arrayName[];

2) 初始化:

方式一:

type[] arrayName;

arrayName = new type[] {element1, element2, element3, ...}

方式二:

type[] arrayName = {element1, element2, element3, ...}

方式三:報錯

type[] arrayName;

arrayName = {element1, element2, element3, ...}

方式四:

type[] arrayName = new type[length];

說明:

方式四中,系統為數組元素分配初始值,如byte,int long - > 0, float,double -> 0.0, boolean -> false, 引用類型 -> null。

**特別注意,方式四創建的數組,如果是引用類型,初始值為null,[參考這道題](https://leetcode.com/submissions/detail/282378308/)**

不要在進行數組初始化時,即指定數組長度,又為每個元素分配初始值。

數組長度是數組的屬性,arrayName.length,即可訪問。

foreach循環方法:

for ( type var : array | collection ) {

...

}

注:這種方法中var只是原集合中的一個副本,對var進行修改,不會改變原集合的內容。

3) 多維數組

type[][] arrName = new type[length][]; // 可以僅指定高維

type[][] arrName = new type[length1][length2];

String[][] str1 = new String[][] {new String[3], new String[] {"hello"}} // 可見低維長度可以不等

4) 操作數組工具類Arrays

binarySearch, copyOf, sort, toString等 (補充用例)

可以用[Contains Duplicate](https://leetcode-cn.com/problems/contains-duplicate/)來練習各種排序算法

二、String, char

java中,char占16位

1. String -> char

String.charAt(idx) 返回char

String.toCharArray() 返回char[]

2. char - > String

String s = String.valueOf('c')

String s = String.valueOf(new char[]{'c'})

String s = new String(new char[]{'c'})

String s = new String(char[] s, int offset, int len);

三、面向對象上 (瘋狂java講義 第5章)

1. java參數傳遞僅有值傳遞一種方式

2. 形參長度可變的方法:

void test(int a, String... books){

for(String t : books){...}

}

test(5, "book1", "book2")

變長形參被作為數組參數

3. override v.s. overload

override: 子類重寫父類方法,簽名一致

overload: 同一個類中,同名不同參的方法(返回值不能作為區分)

https://www.runoob.com/java/java-override-overload.html

4. 成員(屬性、方法)訪問權限

default:同一個包中任意類訪問

protected: 同一個包中任意類訪問 或 其他包中子類訪問

java文件名和class名可以不一樣,當class是非public的時候

5. 成員初始化順序

因素:靜態成員/初始化塊、普通成員/初始化塊、構造函數、父類子類、分配對象(容易被忽略)

https://www.zhihu.com/question/49196023

http://jm.taobao.org/2010/07/21/331/

需注意的是:為對象分配內存,而后會初始化為默認值(int->0, boolean->false, ref -> null...)

初始化塊、構造函數都是在一個內部的 函數中,可以在代碼中構造異常來查看,另外,調用其他構造器時,必須放在構造函數中的第一行

static code block ->

方法重載overwrite為啥不用返回值作為特征呢?如果你調用的時候忽略返回值,那怎么區分

6. 調用父類構造器

super顯示調用父類構造器時,必須放在子類構造器的第一行this也有這個要求

如果子類構造器中調用this(...),即其他構造器,則會在其他構造器中調用父類構造器。

如果子類中無super 和 this,則會隱式調用無參構造器。如果此時父類沒有無參構造器時,會報錯。

7. static

不能在static方法中調用非static方法,反之可以:static方法在第一次使用的時候已經加載,此時非static方法可能未加載起來

8. 初始化

void func() {

int c;

c ++; // 報錯

String s;

System.out.println(ss); //報錯

}

9. leetcode [combination sum](https://leetcode.com/problems/combination-sum/description/)

class Solution {

void helper(int[] candi, List> r, List list, int tgt, int sum, int idx){

if( sum == tgt ){

// r.add(list); 將當前對象加入,會有問題

r.add(new ArrayList(list));

return;

}

if( sum > tgt ) return;

for(int i = idx; i < candi.length; i ++){

if(candi[i] > tgt) return;

list.add(candi[i]);

helper(candi, r, list, tgt, sum + candi[i], i);

list.remove(list.size()-1);

}

}

public List> combinationSum(int[] candidates, int target) {

List> r = new ArrayList>();

if( candidates.length == 0 ) return r;

Arrays.sort(candidates);

helper(candidates, r, new ArrayList(), target, 0, 0);

return r;

}

}

四、面向對象下 (瘋狂java講義 第6章)

1. 基本數據類型包裝類

自動裝箱拆箱前:

裝箱: new WrapperClass(primitive)

拆箱: WrapperInstance.xxxValue()

基本數據類型 -> 字符串:String.valueOf()

字符串 -> 基本數據類型:Integer.parseInt()

2. 類的組成

類包括屬性、方法、初始化代碼塊、構造器、內部類、枚舉類等。

靜態成員不能訪問實例成員。

單例對象多種方法

3. final

final修飾變量

無論是類成員屬性,還是局部變量,都不能重新賦值。

如果是引用類型,僅能確保引用指向同一對象,對象的內容依然可變。

final修飾方法

不能被override

final修飾類

不可有子類

4. abstract

一個類有抽象方法(a. 直接定義了抽象方法; b. 繼承了抽象父類的抽象方法未實現;c. 接口的抽象方法未實現?),則必須被標識為抽象類。

不包含抽象方法的類,也可以標識成抽象方法。

抽象類的作用?模板模式意義大于實際意義。

5. interface

接口修飾符可以是public或default

接口里可包含常量、抽象實例方法、內部類/接口、枚舉類 (新版本可以有普通函數了),他們都是public訪問權限,即使省略

接口里的屬性默認采用public static final,接口里的方法默認采用public abstract,接口里的內部類和枚舉類默認采用public static。

6. 內部類

是封裝的強化,僅在外部類中使用,不會在其他地方使用,那么放到外部類里面。

成員內部類、局部內部類、

[匿名內部類](https://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html)

7. 枚舉類 略

(完結)

8. gc

引用計數的方式存在循環引用的問題,為此采用檢測存活對象的方式,從棧或靜態存儲區開始檢查,能被訪問到的對象就是存活的,否則,可以被清除掉。

五、位操作

java中沒有無符號數,不過提供了>>>無符號右移操作符,注意無符號右移是把數字當作無符號數來移位的

位操作參考

移位操作練習

如下代碼,key值是啥?

class BitExample{

public static void main(String[] args){

int x = 1;

int y = 1;

long key = x << 32 | y;

System.out.println("key:" + key);

}

}

總結

以上是生活随笔為你收集整理的Java2精要_java知识精要(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。