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 Framework 4.8 開發的深度學習模型部署測試平臺,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等應用場景,同時支持圖像與視頻檢測。模型部署引擎使用的是OpenVINO™、TensorRT、ONNX runti... ...
  • 十年沉澱,重啟開發之路 十年前,我沉浸在開發的海洋中,每日與代碼為伍,與演算法共舞。那時的我,滿懷激情,對技術的追求近乎狂熱。然而,隨著歲月的流逝,生活的忙碌逐漸占據了我的大部分時間,讓我無暇顧及技術的沉澱與積累。 十年間,我經歷了職業生涯的起伏和變遷。從初出茅廬的菜鳥到逐漸嶄露頭角的開發者,我見證了 ...
  • C# 是一種簡單、現代、面向對象和類型安全的編程語言。.NET 是由 Microsoft 創建的開發平臺,平臺包含了語言規範、工具、運行,支持開發各種應用,如Web、移動、桌面等。.NET框架有多個實現,如.NET Framework、.NET Core(及後續的.NET 5+版本),以及社區版本M... ...
  • 前言 本文介紹瞭如何使用三菱提供的MX Component插件實現對三菱PLC軟元件數據的讀寫,記錄了使用電腦模擬,模擬PLC,直至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1. PLC開發編程環境GX Works2,GX Works2下載鏈接 https:// ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • 1、jQuery介紹 jQuery是什麼 jQuery是一個快速、簡潔的JavaScript框架,是繼Prototype之後又一個優秀的JavaScript代碼庫(或JavaScript框架)。jQuery設計的宗旨是“write Less,Do More”,即倡導寫更少的代碼,做更多的事情。它封裝 ...
  • 前言 之前的文章把js引擎(aardio封裝庫) 微軟開源的js引擎(ChakraCore))寫好了,這篇文章整點js代碼來測一下bug。測試網站:https://fanyi.youdao.com/index.html#/ 逆向思路 逆向思路可以看有道翻譯js逆向(MD5加密,AES加密)附完整源碼 ...
  • 引言 現代的操作系統(Windows,Linux,Mac OS)等都可以同時打開多個軟體(任務),這些軟體在我們的感知上是同時運行的,例如我們可以一邊瀏覽網頁,一邊聽音樂。而CPU執行代碼同一時間只能執行一條,但即使我們的電腦是單核CPU也可以同時運行多個任務,如下圖所示,這是因為我們的 CPU 的 ...
  • 掌握使用Python進行文本英文統計的基本方法,並瞭解如何進一步優化和擴展這些方法,以應對更複雜的文本分析任務。 ...
  • 背景 Redis多數據源常見的場景: 分區數據處理:當數據量增長時,單個Redis實例可能無法處理所有的數據。通過使用多個Redis數據源,可以將數據分區存儲在不同的實例中,使得數據處理更加高效。 多租戶應用程式:對於多租戶應用程式,每個租戶可以擁有自己的Redis數據源,以確保數據隔離和安全性。 ...