主頁 > 軟體設計 > Java基本語法詳解

Java基本語法詳解

2021-10-20 08:54:43 軟體設計

Java基本語法

  • 1資料型別與運算子
    • 1.1變數
      • 1.1.1整數型變數
      • 1.1.2浮點型變數
      • 1.1.3字符型與布爾型別變數
      • 1.1.4字串型別變數
      • 1.1.5變數的作用域
      • 1.1.6變數的命名規范
    • 1.2基本資料型別間的轉換
      • 1.2.1常量
      • 1.2.2理解型別轉換
      • 1.2.3理解數值提升
      • 1.2.4 String 和 int 之間的相互轉換
      • 1.2.5基本資料型別的轉換(重點)
    • 1.3運算子
      • 1.3.1算術運算子
      • 1.3.2關系運算子
      • 1.3.3邏輯運算子
      • 1.3.4位運算子
      • 1.3.5條件運算子
  • 2程式流程控制
    • 1.順序結構
    • 2.分支結構
      • 2.1.1 if 陳述句
      • 2.1.2 switch 陳述句
    • 3.回圈結構
      • 2.3.1 while 回圈
      • 2.3.2 break 和 continue
      • 2.3.3 for 回圈
    • 4.輸入輸出
      • 2.4.1輸出到控制臺
      • 2.4.2從鍵盤輸入
  • Java語法知識點補充
    • Java中的名稱命名規范
    • Java中的關鍵字

1資料型別與運算子

1.1變數

變數型別總覽
Java中的資料型別

1.1.1整數型變數

整數型別: byte、 short、 int、 long
整型資料型別的范圍

基本語法格式:
資料型別 變數名 = 初始值;
代碼示例:

int  num1 = 10;//定義一個整型變數
System.out.println(num1);
long  num2  = 10L;//定義一個長整型變數,初始值可以為大寫的字母L
System.out.println(num2);//也可寫為小寫的l(不是數字1)

如果運算的結果超出了 int 的最大范圍,就會出現溢位的情況

int maxValue = Integer.MAX_VALUE;//int的最大值
System.out.println(maxValue+1);//輸出結果為:int 的最小值
int mINValue = Integer.MIN_VALUE;//int的最小值
System.out.println(minValue-1);//輸出結果為:int的最大值

注意:

1. java的整型常量默認為 int 型,宣告long型常量須后加小寫字母‘l’或大寫‘L’
2. java程式中變數通常宣告為int型,除非不足以表示較大的數,才使用long

1.1.2浮點型變數

float:單精度,尾數可以精確到7位有效數字,很多情況下,精度很難滿足需求,
double:雙精度,精度是float的兩倍,通常采用此型別,
浮點型別變數

基本語法格式:
變數型別 變數名 = 初始值;
代碼示例:

double num3 = 1.0;//定義一個雙精度變數
System.out.println(num3);
float  num4 = 1.0f;//定義一個單精度變數
System.out.println(num4);

注意:

1.Java 的浮點型常量默認為double型, 宣告float型常量,須后加‘f’或‘F’,
2.小數本身是沒有一個精確的數字的,只能精確到幾位

1.1.3字符型與布爾型別變數

字符型
char 型資料用來表示通常意義上“字符”(2位元組)

Java中的所有字符都使用Unicode編碼,故一個字符可以存盤一個字
母,一個漢字,或其他書面語的一個字符,

字符型變數的三種表現形式:
字符常量是用單引號(‘ ’)括起來的單個字符,
例如:

  char c1 = 'a';
   char c2= '中'; 
   char c3 = '9';

Java中還允許使用轉義字符‘\’來將其后的字符轉變為特殊字符型常量,
例如:

 char c3 = ‘\n’; // '\n'表示換行符

直接使用 Unicode 值來表示字符型常量:
‘\uXXXX’,其中, XXXX代表一個十六進制整數,如: \u000a 表示 \n,

char型別是可以進行運算的,因為它都對應有Unicode碼,

布爾型
boolean 型別用來判斷邏輯條件,一般用于程式流程控制:

if條件控制陳述句;

while回圈控制陳述句;

do-while回圈控制陳述句;

for回圈控制陳述句;

注意事項:

1.boolean型別資料只允許取值true和false,無null,

2.Java中的boolean型別和int不能相互轉換,不可以使用0或非 0 的整數替代false和true,這點和C語言不同,

3.boolean型別資料有些 JVM 的實作是只占一個位元組,有些是占一個位元位,這個沒有明確規定,

Java虛擬機中沒有任何供boolean值專用的位元組碼指令, Java語言表達所操作的boolean值,在編譯之后都使用java虛擬機中的int資料型別來代替: true用1表示, false用0表示 ———《java虛擬機規范 8版》

1.1.4字串型別變數

String不是基本資料型別,屬于參考資料型別

基本語法格式:
String 變數名 = “初始值”

字串中一些特定的不太方便直接表示的字符需要進行轉義,
轉義字符示例:

//創建一個字串 My name is "超人"
String name = "My name is \"超人\"";

轉義字符

//使用方式與基本資料型別一致,
//例如:
 String str = “abcd”;
 //一個字串可以串接另一個字串,也可以直接串接其他型別的資料,
// 例如:
str = str + “xyz” ;//字串與字串
int n = 100;//字串與整數

以上代碼說明,當一個 + 運算式中存在字串的時候,都是執行字串的拼接行為,

同時列印多個字串或數字

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

1.1.5變數的作用域

也就是該變數生效的范圍,一般是變數定義所在的代碼塊(大括號)
代碼示例:

class Test{
    public static void main(String[] args){
    {
        int x = 10;
        System.out.println(x);//編譯通過
    }
    System.out.println(x);//編譯失敗,找不到變數x 
    }
}

1.1.6變數的命名規范

硬性指標

1.一個變數名只能包含數字,字母,下劃線($可以,不推薦使用)
2.數字不能開頭
3.變數名是大小寫敏感的,num 和 Num 是兩個不同的變數

軟性指標

1.具有描述性,見名知意
2.不宜使用拼音(不絕對)
3.詞性推薦使用名詞
4.推薦小駝峰命名法,當一個變數有多個單詞構成時,除了第一個單詞之外,其他單詞首字母都大寫

小駝峰命名示例:

int maxValue = 100;
String studentName = "超人";

1.2基本資料型別間的轉換

1.2.1常量

常量是指在運行時型別不能發生改變,并且常量在編譯時就已經確定

1.字面值常量

10 // int 字面值常量(十進制) 
010 // int 字面值常量(八進制) 由數字 0 開頭. 010 也就是十進制的 8 
0x10 // int 字面值常量(十六進制) 由數字 0x 開頭. 0x10 也就是十進制的 16 
10L // long 字面值常量. 也可以寫作 10l (小寫的L) 
1.0 // double 字面值常量. 也可以寫作 1.0d 或者 1.0D 
1.5e2 // double 字面值常量. 科學計數法表示. 相當于 1.5 * 10^2 
1.0f // float 字面值常量, 也可以寫作 1.0F 
true // boolen 字面值常量, 同樣的還有 false 
'a' // char 字面值常量, 單引號中只能有一個字符
"abc" // String 字面值常量, 雙引號中可以有多個字符.

2.final 關鍵字修飾的常量

final int a = 10;
a = 20;//編譯出錯,提示無法為最終變數a 分配值

1.2.2理解型別轉換

Java作為一個強型別的編程語言,當不同型別的變數相互賦值時會有嚴格的校驗
int 和 long / double 相互賦值

int a = 10; 
long b = 20; 
a = b; // 編譯出錯, 提示可能會損失精度. 
b = a; // 編譯通過. 
//long 表示的范圍更大, 可以將 int 賦值給 long, 但是不能將 long 賦值給 int.
int a = 10; 
double b = 1.0; 
a = b; // 編譯出錯, 提示可能會損失精度. 
b = a;
//double 表示的范圍更大, 可以將 int 賦值給 double, 但是不能將 double 賦值給 int

結論: 不同數字型別的變數之間賦值, 表示范圍更小的型別能隱式轉換成范圍較大的型別, 反之則不行.

int 和 boolean 相互賦值

int a = 10; 
boolean b = true; 
b = a; // 編譯出錯, 提示不兼容的型別
a = b; // 編譯出錯, 提示不兼容的型別

結論: int 和 boolean 是毫不相干的兩種型別, 不能相互賦值

int 字面值常量給byte

byte a = 100; // 編譯通過
byte b = 256; // 編譯報錯, 提示 從int轉換到byte可能會有損失
//注意: byte 表示的資料范圍是 -128 -> +127, 256已經超過范圍,而100還在范圍之內

結論: 使用字面值常量賦值的時候, Java 會自動進行一些校驗,判定賦值是否合理
小結:
1. 不同數字型別的變數之間賦值, 表示范圍更小的型別能隱式轉換成范圍較大的型別.
2. 如果需要把范圍大的型別賦值給范圍小的, 需要強制型別轉換, 但是可能精度丟失.
3. 將一個字面值常量進行賦值的時候, Java 會自動針對數字范圍進行檢查.

1.2.3理解數值提升

int 和 long 混合運算

int a = 10; 
long b = 20; 
int c = a + b; // 編譯出錯, 提示將 long 轉成 int 會丟失精度
long d = a + b; // 編譯通過.

結論: 當 int 和 long 混合運算的時候, int 會提升成 long, 得到的結果仍然是 long 型別, 需要使用 long 型別的變數來接收結果. 如果非要用 int 來接收結果, 就需要使用強制型別轉換.

byte 與 byte 的運算

byte a = 10; 
byte b = 20; 
byte c = a + b; 
System.out.println(c); 
// 編譯報錯
//Test.java:5: 錯誤: 不兼容的型別: 從int轉換到byte可能會有損失
// byte c = a + b; 

結論: byte 和 byte 都是相同型別, 但是出現編譯報錯. 原因是, 雖然 a 和 b 都是 byte, 但是計算 a + b 會先將 a 和 b 都提升成 int, 再進行計算, 得到的結果也是 int, 這是賦給 c, 就會出現上述錯誤.
由于計算機的 CPU 通常是按照 4 個位元組為單位從記憶體中讀寫資料. 為了硬體上實作方便, 諸如 byte 和 short 這種低于4 個位元組的型別, 會先提升成 int, 再參與計算.

正確的寫法:

byte a = 10; 
byte b = 20; 
byte c = (byte)(a + b); 
System.out.println(c);

型別提升小結:
1. 不同型別的資料混合運算, 范圍小的會提升成范圍大的.

2. 對于 short, byte 這種比 4 個位元組小的型別, 會先提升成 4 個位元組的 int , 再運算

1.2.4 String 和 int 之間的相互轉換

int 轉成 String

int num = 10; 
// 方法1 
String str1 = num + ""; 
// 方法2 
String str2 = String.valueOf(num); 

String 轉成 int

String str = "100"; 
int num = Integer.parseInt(str);

1.2.5基本資料型別的轉換(重點)

自動型別轉換:
容量小的型別自動轉換為容量大的資料型別
資料型別按容量大小排序為:
資料型別轉換
總結:
1.有多種型別的資料混合運算時,系統首先自動將所有資料轉換成容量最大的那種資料型別,然后再進行計算,
2.byte,short,char之間不會相互轉換,他們三者在計算時首先轉換為int型別,
3.boolean型別不能與其它資料型別運算,
4.當把任何基本資料型別的值和字串(String)進行連接運算時(+), 基本資料型別的值將自動轉化為字串(String)型別,

1.3運算子

1.3.1算術運算子

算術運算子總覽:
算術運算子
除法中需要注意的幾點:
1.int / int 結果還是 int,需要用double來計算

int a = 1;
int b = 2;
System.out.println(a / b);
//結果為0
  1. 0不能作為除數

  2. %表示取余,不僅可以對 int 求模,也能對double求模

System.out.println(11.5%2.0);
//運行結果
1.5

1.3.2關系運算子

關系運算子總覽:
關系運算子
注意:
1.關系運算子的結果都是boolean型,也就是要么是true,要么是false,
2.關系運算子“==”不能誤寫成“=” ,

1.3.3邏輯運算子

邏輯運算子主要有3個:

&&  //兩個運算元都為ture,結果為ture,否則為false
||  //都為false結果為false,否則為true
!  //邏輯反操作

注意:
邏輯運算子的運算結果和回傳值都是 boolean.

短路求值

&& 和 || 遵循短路求值規則,

System.out.println(10 > 20 && 10 / 0 == 0);//列印false
System.out.println(10 < 20 || 10 / 0 == 0);//列印ture
//計算 10 / 0 會導致程式拋出例外. 但是上面的代碼卻能正常運行,
// 說明 10 / 0 并沒有真正被求值.

結論:
1. 對于 && , 如果左側運算式值為 false, 則運算式的整體的值一定是 false, 無需計算右側運算式.
2. 對于 ||, 如果左側運算式值為 true, 則運算式的整體的值一定是 true, 無需計算右側運算式.
3. & 和 | 不建議使用,不支持短路求值

1.3.4位運算子

位運算子總覽:位運算子
位運算子的細節

位操作表示按二進制位計算

注意:

  1. 0x 前綴的數字為16進制數字,16進制可以看成二進制的簡化形式,一個16進制對應4個二進制位
  2. 0xf表示16進制中的15,也就是二進制的1111
  3. 左移 1 位, 相當于原數字 * 2. 左移 N 位, 相當于原數字 * 2 的N次方.
  4. 右移 1 位, 相當于原數字 / 2. 右移 N 位, 相當于原數字 / 2 的N次方.
  5. 由于計算機計算移位效率高于計算乘除, 當某個代碼正好乘除 2 的N次方的時候可以用移位運算代替.
  6. 移動負數位或者移位位數過大都沒有意義

1.3.5條件運算子

條件運算子也叫三目運算子

語法格式:

運算式1?運算式2:運算式3

當運算式1的值為 ture 時,整個運算式的值為運算式2的值;若為 false ,整個運算式的值為運算式3的值,

//求兩個數的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;

2程式流程控制

1.順序結構

順序結構,即按照代碼書寫的順序一行一行執行

System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
//運行結果
aaa
bbb
ccc

2.分支結構

2.1.1 if 陳述句

基本語法形式1

if (布爾運算式){//只能是布爾運算式,不同于C語言
    //條件滿足時執行的代碼
}

基本語法形式2

if(布爾運算式){
    //條件滿足時執行的代碼
}else{
    //條件不滿足時執行的代碼
}

基本語法形式3

if(布爾運算式){
    //條件滿足時執行代碼
}else if(布爾運算式){
    //條件滿足時執行代碼
}else{
    //條件都不滿足時執行代碼
}

代碼示例:

//判定一個數字是奇數還是偶數
int num = 10;
if(num % 2 == 0){
    System.out.println("num 是偶數");
}else{
     System.out.println("num 是奇數");
}

注意:懸垂 else 問題

int x = 10;
int y = 10;
if (x == 10) 
     if (y == 10)
         System.out.println("aaa");
else
     System.out.println("bbb");

if / else 陳述句中可以不加 大括號 . 但是也可以寫陳述句(只能寫一條陳述句). 此時 else 是和最接近的 if 匹配.
但是實際開發中我們 不建議 這么寫,最好加上大括號,

2.1.2 switch 陳述句

基本語法:

switch(整數|列舉|字符|字串){
     case 內容1 : {
         內容滿足時執行陳述句;
         break;
         }
     case 內容2 : {
         內容滿足時執行陳述句;
         break;
         }
     ...
     default:{
         內容都不滿足時執行陳述句;
         break;
         } 
}

注意事項:

  1. break 不要遺漏,否則會失去“多分支選擇”的效果
  2. switch 中的值只能是 整數 | 列舉 | 字符 | 字串
  3. 不能做 switch 的引數的資料型別有:long ,float, double, boolean

3.回圈結構

2.3.1 while 回圈

基本語法格式:

while(回圈條件){//回圈條件為布爾運算式,ture 執行陳述句,否則結束回圈,
    回圈陳述句;
}

示例代碼1:計算1-100的和

int n = 1; 
int result = 0; 
while (n <= 100) { 
    result += n; 
    n++; 
} 
System.out.println(num); 
// 執行結果
5050

注意:
while 下面的陳述句可以不寫{ },但不寫時只能支持一條陳述句,

2.3.2 break 和 continue

break 的功能是讓回圈提前結束

代碼示例:找到100-200中第一個3的倍數

int num = 100; 
while (num <= 200) { 
    if (num % 3 == 0) { 
    System.out.println("找到了 3 的倍數, 為:" + num); 
    break; 
    } 
    num++; 
} 
// 執行結果
找到了3的倍數,為:102

continue 的功能是跳過本次回圈,其以下代碼不再運行

代碼示例:找到100-200中所有3的倍數

int num = 100; 
while (num <= 200) { 
    if (num % 3 != 0) { 
    num++; // 這里的 ++ 不要忘記! 否則會死回圈. 
    continue; 
    } 
    System.out.println("找到了 3 的倍數, 為:" + num); 
    num++; 
}

2.3.3 for 回圈

基本語法:

for(運算式1;運算式2;運算式3){
    回圈體;
}

運算式1:用于初始化回圈變數
運算式2:回圈條件
運算式3:更新回圈變數

示例代碼:計算1!+ 2!+3!+4!+5!

int sum = 0; 
for (int i = 1; i <= 5; i++) { 
    int tmp = 1; 
    for (int j = 1; j <= i; j++) { 
    tmp *= j; 
    }  
    sum += tmp; 
} 
System.out.println("sum = " + sum);

4.輸入輸出

2.4.1輸出到控制臺

基本書法:

System.out.println(msg); // 輸出一個字串, 帶換行
System.out.print(msg); // 輸出一個字串, 不帶換行
System.out.printf(format, msg); // 格式化輸出

println 輸出的內容自帶 \n, print 不帶 \n
printf 的格式化輸出方式和 C 語言的 printf 是基本一致的

2.4.2從鍵盤輸入

使用 Scanner 讀取字串/整數/浮點數

import java.util.Scanner; // 需要匯入 util 包
Scanner sc = new Scanner(System.in); 
System.out.println("請輸入你的姓名:"); 
String name = sc.nextLine(); 
System.out.println("請輸入你的年齡:"); 
int age = sc.nextInt(); 
System.out.println("請輸入你的月薪:"); 
float salary = sc.nextFloat(); 
System.out.println("你的資訊如下:"); 
System.out.println("姓名: "+name+"\n"+"年齡:"+age+"\n"+"工資:"+salary); 
sc.close(); // 注意, 要記得呼叫關閉方法
// 執行結果
請輸入你的姓名:
超人
請輸入你的年齡:
19
請輸入你的月薪:
25000 
你的資訊如下:
姓名: 超人
年齡:19
工資:25000

使用 Scanner 回圈讀取N 個數字

Scanner sc = new Scanner(System.in); 
double sum = 0.0; 
int num = 0; 
while (sc.hasNextDouble()) { 
    double tmp = sc.nextDouble(); 
    sum += tmp; 
    num++; 
} 
System.out.println("sum = " + sum); 
System.out.println("avg = " + sum / num); 
sc.close(); 
// 執行結果
10 
40.0 
50.5 
^Z 
sum = 150.5 
avg = 30.1

注意:當回圈輸入多個資料時,使用ctrl+z來結束輸入,IDEA上是ctrl+D

Java語法知識點補充

Java中的名稱命名規范

Java中的名稱命名規范:

包名:多單詞組成時所有字母都小寫: xxxyyyzzz

類名、介面名:多單詞組成時,所有單詞的首字母大寫: XxxYyyZzz

變數名、方法名:多單詞組成時,第一個單詞首字母小寫,第二個單詞開始每個
單詞首字母大寫: xxxYyyZzz

常量名:所有字母都大寫,多單詞時每個單詞用下劃線連接: XXX_YYY_ZZZ

Java中的關鍵字

常見關鍵字
常見關鍵字

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/325653.html

標籤:其他

上一篇:教你優雅的處理網頁中的圖片

下一篇:超執行緒SMT究竟可以快多少?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more