• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • Day01 java基礎(學習筆記)

    標簽: java

    計算機硬件基礎


    馮諾依曼

    在這里插入圖片描述


    中央處理器(CPU)

    由控制單元和算數邏輯單元組成

    1. 控制單元:控制和協調其他組件的動作;
    2. 算數邏輯單元:完成數值運算和邏輯運算;

    時鐘

    每臺計算機內部都有一個內部時鐘,以固定速度發射電子脈沖。時鐘速度越快,在給定時間段內執行的指令就越多。計量單位是赫茲(Hz),1Hz相當于每秒一個脈沖。隨著CPU速度不斷提高,目前以千兆赫茲(GHz)來表示。


    IT定律

    1. 摩爾定律:等價買到的電腦性能,每隔18-24個月會翻一倍以上。
    2. 安迪-比爾定律:”比爾拿走了安迪的東西“,軟件廠商吃掉硬件提升帶來的好處。
    3. 反摩爾定律:IT公司今天和18個月之前賣掉同樣多的相同產品,那他的營業額會降一半。

    存儲設備

    1. 磁盤驅動器。硬盤用以永久的保存數據和程序。
    2. 光盤驅動器。CD和DVD。
    3. USB閃存驅動器。用于存儲和傳輸數據。

    內存

    計算機中最小的存儲單位,比特(bit),值為0/1。

    計算機中最基本的存儲單元,字節(byte),一個字節由八個比特構成。

    內存采用半導體存儲單元,包括隨機存儲器(RAM),只讀存儲器(ROM),以及高速緩存(CACHE)。

    RAM斷電后數據不在保存,可讀也可寫;ROM存儲計算機BIOS等基本程序,只可讀不可寫;

    內存一個程序和他的數據在被CPU執行前必須移動到計算機的內存中。


    操作系統

    1. 控制和監視系統的活動;
    2. 分配惡化調配系統資源;
    3. 調度操作;

    萬維網

    常簡稱Web,分為Web客戶端和Web服務器程序。讓Web客戶端訪問Web服務器上的頁面。每個頁面由“統一資源標識符(URI)”標識。通過超文本傳輸協議(HTTP)傳送給用戶。

    互聯網>英特網>萬維網


    Java(sun公司)


    軟件

    軟件是一系列按照特定順序組織的計算機數據和指令的集合。分為系統軟件和應用軟件。

    人機交互方式分為圖形化界面(GUI)和命令行方式(CLI)


    計算機語言

    第一代語言:機器語言。二進制代碼形式存在。

    第二代語言:匯編語言。使用助記符表示機器指令。

    第三代語言:高級語言。Java、Python…


    Java語言特點

    特點一:面向對象

    • 封裝、繼承、多態

    特點二:健壯性(例如,垃圾回收機制)

    特點三:跨平臺性(JVM)


    核心機制

    1. Java虛擬機(JVM);
    2. 垃圾回收機制(GC);

    JDK、JRE、JVM

    JDK>JRE>JVM

    1. JDK:Java開發工具包。包含Java開發工具,例如編譯工具、打包工具等,此外也包括了JRE。
    2. JRE:Java運行環境。包括JVM和核心類庫。

    標識符

    凡是自己可以取名字的地方都叫做標識符。

    命名規則

    1. 不能以數字開頭;
    2. 不能使用關鍵字和保留字;
    3. 區分大小寫;
    4. 不能包含空格;

    命名規范

    1. 包名:所有字母小寫;
    2. 類名、接口名:多單詞首字母分別大寫(駝峰);
    3. 變量名、方法名:第一個單詞首字母小寫,之后的單詞首字母大寫;
    4. 常量:所有字母大寫,且用下劃線分割;

    變量

    變量是程序中最基本的存儲單元。包含變量類型、變量名和存儲的值。

    變量用于在內存中保存數據。

    類型

    1. 基本數據類型

      • 數值型
        • 整數類型:int、short、long、byte
        • 浮點類型:float、double
      • 字符型
      • 布爾型
    2. 引用數據類

      • 類:class
      • 接口:interface
      • 數組:[]
    類型 占用存儲空間 表數范圍
    byte 1字節 = 8bit(位) -128-127
    short 2字節 -215-215-1
    int 4字節 -231-231-1
    long 8字節 -263-263-1
    類型 占用才存儲空間 表數范圍
    單精度float 4字節 7位有效數組
    雙精度double 8字節 15位有效數字

    (通常使用double。定義float變量時,變量要以”f“或”F“結尾)

    字符型char:(1字符=2字節)定義char型變量通常使用一對單引號。

    注意:
    char e1 = 97; //此時97為ASCII碼為97對應的字符
    System.out.println(e1);//輸出‘a’
    
    char e2 = '5';
    int e3= e2;//自動類型轉換為ASCII碼是‘5’對應的整型數字
    System.out.println(e3);//輸出53
    

    布爾型boolean:true或false,常用在循環語句。


    類型轉換

    1.自動類型提升:(小到大)

    byte、char、short->int->long->float->double

    當容量小的與容量大的變量做運算時,結果自動提升為容量大的數據類型。特別地,byte、char、short三種做運算時,結果為int。

    2.強制類型轉換:(大到小)

    需要使用強轉符:()。可能導致精度損失。

    整型常量默認為int型,浮點型常量默認為double型。


    按位置分類

    1. 成員變量

      • 實例變量(不以static修飾)
      • 類變量(以static修飾)
    2. 成員變量

      • 形參(方法、構造函數中定義的變量)

      • 方法局部變量(在方法內定義)

      • 代碼塊局部變量(在代碼塊內定義)


    字符串類型

    String類型,不是基本數據類型,屬于引用數據類型,使用雙引號進行定義(不能直接賦值數字)。

    String類型可以和8種基本數據類型做運算,且運算只能是連接運算,結果也是String類型。

    例:String轉int

    String hello = "123";
    int a = Integer.parseInt(hello);
    

    進制

    二進制:以0b或0B開頭;

    八進制:以0開頭;

    十六進制:以0x或0X開頭,A-F不區分大小寫;

    互相轉換:
    Integer.toBinaryString();
    Integer.toOctalString();
    Integer.toHexString();
    

    Java整數常量默認是int類型,當用二進制定義整數時,其第32位是符號位;當long型時,第64位是符號位。

    二進制整數有三種形式:原碼、反碼、補碼。

    • 正數的原碼、反碼和補碼相同
    • 負數反碼為原碼除符號位依次取反,補碼為反碼加一

    計算機底層都以補碼的方式來存儲數據。


    運算符

    算數運算符

    +、-、*、/、%、++、–、+(連接)

    負數取余:
    int m1 = -12;
    int m2 = -5;
    System.out.println(m1 % m2);//輸出-2
    

    自增自減不會改變數據類型。

    byte b2 = 127;
    b2++;
    System.out.println(b2);//結果為10000000(-128的補碼),輸出-128
    

    賦值運算符

    = 、+=、-+、*=、/=、%=

    當”=“兩側數據類型不一致時,可以使用自動類型轉換或強制類型轉換進行處理,支持連續賦值。

    ”+=、-+、*=、/=、%=“不會改變變量本身的數據類型。

    short s2 = 10;
    //s2 = s2 + 5; //編譯失敗
    s2 += 5;
    

    比較運算符

    ==、!=、>=、<=、>、>、instanceof


    邏輯運算符

    &(邏輯與)、&&(短路與)、|、||、!、^(異或)

    操作的數據類型都是布爾類型

    邏輯與&和短路與&&的異同(|與||類似):

    相同點:1.運算結果相同;2.符號左邊是true時,都會執行右邊的語句。

    不同點:1.符號左邊為false時,&仍執行右邊語句,但&&不執行右邊語句。


    位運算符

    <<、>>、>>>、&、|、^、~

    注意:

    1. 位運算符<<:空位補0,被移除的高位丟棄。
    2. 位運算符>>:最高位為0,則補0;最高位為1,則補1。
    3. 位運算符>>>:無論最高位是0或1,都補0。
    4. ^異或、~逐位取反。
    5. 2*8 等價于 2<<3,后者運算效率更高。
    6. 無<<<;數據類型為布爾類型時,&和|為邏輯運算符,數字類型時為位運算符。

    騷操作:

    交換兩個變量的值,例如交換m和n:

    n = (m^n)^n; 
    m = (m^n)^n;
    

    三元運算符

    (條件表達式)?A:B; 其中A、B需為相同數據類型。

    凡是用三元運算符的地方,都可以改寫為if-else,反之不成立,三元運算符的執行效率高于if-else。


    字符串轉字符數組:
    char[] str = s.toCharArray();
    
    字符數組轉字符串:
    String.valueOf(str)
    

    集合初始化:

    HashSet<Character> vowels = new HashSet<>(Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'));
    
    List<Character> vowels = Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U');
    注意:這種方式添加的是不可變的 
    
    List<Character> vowels = new ArrayList<>(Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'));
    上述方式的基礎上使用 ArrayList 再包裝一下,即轉變為可變集合。
    
    版權聲明:本文為qq_40585800原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_40585800/article/details/106344729

    智能推薦

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    styled-components —— React 中的 CSS 最佳實踐

    https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...

    猜你喜歡

    基于TCP/IP的網絡聊天室用Java來實現

    基于TCP/IP的網絡聊天室實現 開發工具:eclipse 開發環境:jdk1.8 發送端 接收端 工具類 運行截圖...

    19.vue中封裝echarts組件

    19.vue中封裝echarts組件 1.效果圖 2.echarts組件 3.使用組件 按照組件格式整理好數據格式 傳入組件 home.vue 4.接口返回數據格式...

    劍指Offer39-調整數組順序使奇數位于偶數前面

    一開始想著用冒泡排序的方法來做,但是bug還是很多,后來看了評論區答案,發現直接空間換時間是最簡單的,而且和快排的寫法是類似的。...

    【一只蒟蒻的刷題歷程】【藍橋杯】歷屆試題 九宮重排 (八數碼問題:BFS+集合set)

    資源限制 時間限制:1.0s 內存限制:256.0MB 問題描述 如下面第一個圖的九宮格中,放著 1~8 的數字卡片,還有一個格子空著。與空格子相鄰的格子中的卡片可以移動到空格中。經過若干次移動,可以形成第二個圖所示的局面。 我們把第一個圖的局面記為:12345678. 把第二個圖的局面記為:123.46758 顯然是按從上到下,從左到右的順序記錄數字,空格記為句點。 本題目的任務是已知九宮的初態...

    dataV組件容器寬高發生變化后,組件不會自適應解決方法

    項目中需要大屏幕數據展示,于是使用了dataV組件,但是使用是發現拖動瀏覽器邊框,dataV組件顯示異常,如圖: 于是查了官網,官網的解釋如下:   于是按照官網的意思編寫代碼: 于是可以自適應了...

    精品国产乱码久久久久久蜜桃不卡