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
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...