Java 基本知識——first day

来源:https://www.cnblogs.com/xuyuyu/archive/2023/06/01/17449697.html
-Advertisement-
Play Games

# 1. 前言 最近有點時間,就隨便找點東西弄弄,倒也碰到了一些問題,在此記錄下 # 2. 環境 Python3.11.3 + selenium4.9.1 + opencv4.7 + PyAutoGUI0.9.54 + windows11 # 3. 開始 ## 3.1 賬號密碼輸入 ![image] ...


註釋

註釋不會被執行,是寫給看代碼的人看的。

三種註釋

單行註釋

image-20230524180254971

多行註釋

image-20230524180303930

文檔註釋

image-20230524180453725

標識符

關鍵字

image-20230524180734757

Java常見的關鍵字

考點

image-20230524181146083

總結四個點:

  1. 首字母應該以字母、$、_開始;

  2. 開始後可以任意字元;

  3. 不可用關鍵字

  4. 大小寫敏感

 

數據類型

Java是一門強類型語言

強類型語言

比如Java、C++、C

變數定義嚴格,先定義才能使用。

弱類型語言

比如VB、JS、Python

Java的兩大類數據類型

基本類型

Java語言提供了八種基本類型:

  • 四個整數型;

  • 兩個浮點型;

  • 一種字元型;

  • 布爾

數值類型

整數類型

  • byte占1個位元組

    • -128(-2^7)

    • 127(2^7-1)

  • short占2個位元組

    • -32768(-2^15)

    • 32767(2^15 - 1)

  • int(整型)占4個位元組

    • -2,147,483,648(-2^31)

    • 2,147,483,647(2^31 - 1)

  • long(長整型)占8個位元組。

    • -9,223,372,036,854,775,808(-2^63)

    • 9,223,372,036,854,775,807(2^63 -1)

浮點數類型

  • float(單精度)占4個位元組

    • 儲存大型浮點數可節省空間。

  • double(雙精度)占8個位元組

    • 預設類型

字元類型

  • char(字元型)占2個位元組

  • String(字元串)他不是一個關鍵字,是一個類

布爾類型

  • boolean(布爾類型)

    • 只能存儲true和false。

引用類型

除了基本類型之外的所有數據類型,都是引用類型。

類;介面;數組。(後續專欄講解)

 

拓展

整數進位

常規使用的基本數據類型為10進位:

而Java程式中,可以對變數賦值為各種進位。

 //預設十進位,二進位為0b,八進位為0,十六進位為0x
 public class binary {
     public static void main(String[] args) {
         int i=10;
         int i2=010;
         int i3=0x10;
         System.out.println(i);
         System.out.println(i2);
         System.out.println(i3);
    }
 }

輸出結果為:image-20230529155101114

浮點數特性

由於浮點數具備以下特征:

  1. 有限性;

  2. 離散性;

  3. 舍入誤差;

  4. 大約;

  5. 接近但不等於。

所以我們在實際使用中,要儘量避免使用浮點數進行數值之間的比較。

案例1:兩個相同的數值進行比較得false

代碼如下:

 float f=0.1f;
 double d=1.0/10;
 System.out.println(f==d);

輸出結果得:image-20230529155813881

使用調試查詢變數數值:

image-20230530093220595

兩個數值都相同,但輸出結果為false。

案例2:過長數值+1,依然等於原數值

代碼如下:

 float d1=213213213213213213f;
 float d2=d1+1;
 System.out.println(d1==d2);

輸出結果為:

image-20230530093720101

使用調試查詢變數數值:

image-20230530093744335

可以看見,浮點數值一但過大,則會直接修改表示形式,就無法對比數值大小了。

解決方案(BigDecimal)

如果涉及浮點數比較大小,最好使用 數據類 BigDecimal 數學工具類。

字元拓展

字元

所有的字元,本身都是Unicode、ASCII碼

Unicode(0~65536,2^16)

代碼如下:

 char a='a';
 char A='A';
 char B='B';
 System.out.println("a="+(int)a);
 System.out.println("A="+(int)A);
 System.out.println("B="+(int)B);

運行結果如下:

image-20230530095837594

轉義字元

除此之外,字元還具備轉義字元的含義,一般可用在如下場景:

  1. 需要插入一些關鍵性的文字;

  2. 需要插入一些空格、回車,等特別的字元。

代碼如下:

 System.out.println("中間是空格轉義符→\t←");

輸出結果:

image-20230530100927793

 

類型轉換

Java運算中,不同類型的數據先轉化為同一類型,然後再進行運算。

數據類型優先順序

image-20230530102102420

強制類型轉換

代碼如下:

 public class type_Convert {
     public static void main(String[] args) {
         int i=128;
         byte b= (byte) i;//因為最大值是127,當128的時候就是補碼
         System.out.println(i+"\n"+b);
    }
 }

輸出結果如下:image-20230530101832539

加個括弧的形式,就是強制轉換,從數據類型的高到低,就需要強制轉換。

反之,從低到高就採用自動轉換。

自動類型轉換

代碼如下:

 int o=123;
 double j=o;

擴展補充

  1. 不能對布爾類型進行轉換。

  2. 不能把對象類型轉換為不相干的類型。

  3. 在把高容量轉換到低容量的時候,強制轉換。

  4. 轉換的時候可能存在記憶體溢出和精度問題,轉換後會除去掉小數部分。

  5. JDK7 的新特性,數字之間支持用下劃線分割。

 int q=10_0000_0000;
 System.out.println(q);

輸出結果:

 1000000000

變數

定義:可變化的量

  • 每個變數都必須聲明其類型;

  • 是最基本的存儲單元,其要素包含變數名、變數類型和作用域

變數定義:

 int i = 1;
 String i = 2;
 //int、String 變數類型
 // i 就是變數名稱

作用域

類變數:

  • 從屬與類,可以直接使用類名調用的變數

  • 作用範圍全局

 public class action_Scope {
     //類變數:從屬與類,可以直接使用類名調用的變數。
     static double salasy;
     public static void main(String[] args) {
         //類變數的調用
         action_Scope.salasy=200D;
         System.out.println(action_Scope.salasy);
    }
 }

輸出結果:

 200.0

實例變數

  • 從屬與對象:如果不自行初始化,這個變數則自動唯預設值 0 0.0

    • 布爾變數為true,除了基本類型,其他的引用類型都是null

  • 作用範圍,new 實例。

 public class action_Scope {
     //實例變數:從屬與對象:如果不自行初始化,這個變數則自動唯預設值 0 0.0
         //布爾變數為true,除了基本類型,其他的引用類型都是null
     String name;
     int age;
     public static void main(String[] args) {
  //實例變數的調用
         action_Scope action_scope=new  action_Scope();
         System.out.println(action_scope.age);
    }
 }

輸出結果:

 0
 null

局部變數

  • 作用範圍,方法內部

 public class action_Scope {
     public static void main(String[] args) {
         //局部變數:必須聲明和初始化數值
         int i = 10;
         System.out.println(i);
    }
 }

輸出結果:

 10

常量

一但定義了,就不會變化的量。

 public class Demo1 {
     //修飾符不區分先後順序。
     final static double PI=3.14;
     static final double π=3.14;
 }

命名規範

  • 所有變數、方法、類名:見名知意;

  • 變數、方法:首字母小寫和駝峰原則:mounthSalary

    • 除了第一個單詞,後面的單詞首字母大寫

  • 常量:全大寫字母,多個單詞使用下劃線隔開。

    • MAX_VALUE

  • 類名:首字母大寫,駝峰原則

運算符

image-20230531111648712

  • 自增、自減,也可以叫做一元運算符

  • a++和++a的區別在於,先執行再++和先++再執行

  • 很多運算我們會使用Math工具類進行操作

短路運算

  • 當與預算時,如果前者為假,就不會繼續向後執行代碼了

  • 或運算時,如果前者為真,則不會繼續執行後面的代碼

位運算

位運算就是將變數與變數用二進位的形式進行 與或非 的計算,一般計算IP地址和子網掩碼可用使用位運算

 

面試題:2乘以8怎麼運算最快?

image-20230531192234598

利用位運算符,可以根據變數的二進位數值進行移動

image-20230531192339371

優點是運算效率極高(直接是底層機器語言)。

三元運算符

代碼:

 int en= a<10?20:30;
 System.out.println("三元運算符:"+en);

輸出:

 三元運算符:30

 

字元串連接符

問:以下兩種代碼寫註方式,有什麼區別?

 int a=10;
 int b=20;
 System.out.println(""+a+b);
 System.out.println(a+b+"");

輸出:

 1020
 30

答:當一串運算語句中,出現String類型,之後的所有+號,都會被認為是字元串連接符。

優先順序

優先計算括弧。

包機制

包的本質就是一個文件夾。

包的結構必然是和網址相反的。

image-20230531203907946

JavaDoc

用於生成API文檔,開發時極其有用。

image-20230531205248959

 

可以通過doc命令行,在當下目錄,輸入代碼:

 javadoc -encoding UTF-8 -charset UTF-8 [.java文件的路徑]

快速生成相關的Java文檔。

image-20230531205821561

 

 ### 部分截圖取自,B站UP:遇見狂神說;菜鳥教程

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ## 1. 背景 - 業務背景:CRM系統隨著各業務條線對線索精細化分配的訴求逐漸增加,各個條線的流向規則會越來越複雜,各個條線甚至整個CRM的線索流轉規則急需一種樹形的可視化的圖來表達。 - 技術背景:在開發之前考慮了三種方案,原生canvas、fabric以及G6,三種方案各有優劣勢 |  | ...
  • 上一篇:微服務架構基本原理學習筆記(一) 三、微服務架構 從一個已有的單體架構的應用程式開始進行微服務架構的重構往往是一個不錯的選擇。隨著業務量和功能的增加,我們可以考慮使用微服務架構來擴充應用程式中原有的功能,或者每次添加新功能時,都為其創建一個新的微服務。這比從一開始就選擇使用微服務架構進行設計 ...
  • EasyExcel是一個基於Java的、快速、簡潔、解決大文件記憶體溢出的Excel處理工具。 他能讓你在不用考慮性能、記憶體的等因素的情況下,快速完成Excel的讀、寫等功能。 # 快速入門 導入依賴 ~~~xml com.alibaba easyexcel 3.1.1 ~~~ # 寫 Excel # ...
  • ### 前言 json是我們現代互聯網程式最常用的交互格式,是否你在工作中會遇到前端說欄位不一致需要改的需求,是否遇到過資料庫欄位名與javaBean的規範不同,是否遇到過json與javaBean相互轉換時因為需求寫的土匪代碼,這些都可以用Jackson完成,我們經常和json打交道,而Jacks ...
  • 在Java中,同步(Synchronous)和非同步(Asynchronous)是用來描述程式執行模式的概念。 1. 同步:同步指的是按照程式的順序依次執行代碼,每個操作都會等待前一個操作完成後再執行。同步執行的特點是阻塞,即某個操作的完成會導致後續操作的等待。在多線程編程中,同步可以通過使用鎖(如` ...
  • > 本文首發於公眾號:Hunter後端 > 原文鏈接:[celery筆記一之celery介紹、啟動和運行結果跟蹤](https://mp.weixin.qq.com/s/o6enPH4f1qo8WXrl9vO-1w) 本篇筆記內容如下: 1. celery 介紹 2. celery 準備 3. ce ...
  • 在筆者上一篇文章`《驅動開發:內核解析PE結構導出表》`介紹瞭如何解析記憶體導出表結構,本章將繼續延申實現解析PE結構的PE頭,PE節表等數據,總體而言內核中解析PE結構與應用層沒什麼不同,在上一篇文章中`LyShark`封裝實現了`KernelMapFile()`記憶體映射函數,在之後的章節中這個函數... ...
  • Consul 通過 Key/Value 功能集中管理存儲配置信息, 通過 Spring Cloud Consul Config 可以實現 Config Server 和 Client 的關聯. 在 Spring 啟動的 bootstrap 階段, 配置會被載入環境上下文. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...