java筆記02

運算符

1.隱式轉換和強制轉換

 類型轉換的分類
1.隱式轉換:
取值范圍小的數值 轉換為 取值范圍大的數值
2.強制轉換:
取值范圍大的數值 轉換為 取值范圍小的數值隱式轉換的兩種提升規則
取值范圍小的,和取值范圍大的進行運算,小的會先提升為大的,再進行運算
byte short char 三種類型的數據在運算的時候,都會直接先提升為 int,然后再進行運算byte => intint => long => float => doubleshort => int
//        判斷結果的數據類型:
//        byte b1 = 10;
//        byte b2 = 20;
//        result = b1 + b2;   // 數據類型 int
//
//        int i = 10;
//        long n = 100L;
//        double d = 20.0;
//        result = i + n + d;   // 數據類型 double
//
//        byte b = 10;
//        short s = 20;
//        long n = 100L;
//        result = b + s + n;   // 數據類型 long
強制轉換
如果把一個取值范圍大的數值,賦值給取值范圍小的變量。是不允許直接賦值的。如果一定要這么做就需要加入強制轉換。
格式:目標數據類型 變量名 =(目標數據類型) 被強轉的數據;
????????//        范例:double a = 12.3;int b = (int) a;byte b1 = 100;byte b2 = 100;byte result = (byte)(b1 + b2);System.out.println(result);// -56  結果就發生錯誤了 因為要轉換的數據過大

2.字符串和字符的加操作

字符串的 “+” 操作
當 “+” 操作中出現字符串時,這個 “+” 是字符串連接符,而不是算術運算符了。會將前后的數據進行拼接,并產生一個新的字符串。
“123” + 123  結果為  “123123”
連續進行 “+” 操作時,從左到右逐個執行。
1 + 99 + “年黑馬”  結果為  “100 年黑馬”
// 當 字符+字符 或 字符+數字 時,會把字符通過 ASCII 碼表查詢到對應的數字再進行計算。System.out.println(1 + 'a'); //98System.out.println('a' + 'c'); //196System.out.println('a' + "abc"); //aabc

3.自增自減運算符

//        單獨使用: ++ 和 -- 無論是放在變量的前邊還是后邊,單獨寫一行結果是一樣的。
//        參與計算:
//        先用后加int a = 10;int b = a++;
//        先加后用int a = 10;int b = ++a;

4.賦值運算符和關系運算符

        賦值運算符符號      作用                    說明=          賦值         int a = 10,將 10 賦值給變量 a+=     加后賦值       a += b,將 a + b 的值給 a-=     減后賦值       a -= b,將 a - b 的值給 a*=     乘后賦值       a *= b,將 a × b 的值給 a/=     除后賦值       a /= b,將 a ÷ b 的商給 a%=     取余后賦值  a %= b,將 a ÷ b 的余數給 a關系運算符符號             說明==     a==b,判斷 a 和 b 的值是否相等,成立為 true,不成立為 false!=     a!=b,判斷 a 和 b 的值是否不相等,成立為 true,不成立為 false>      a>b,判斷 a 是否大于 b,成立為 true,不成立為 false>=     a>=b,判斷 a 是否大于等于 b,成立為 true,不成立為 false<      a<b,判斷 a 是否小于 b,成立為 true,不成立為 false<=     a<=b,判斷 a 是否小于等于 b,成立為 true,不成立為 false

5.四種邏輯運算符和兩個短路邏輯運算符

        符號    作用         說明&        邏輯與(且) 并且,兩邊都為真,結果才是真|        邏輯或        或者,兩邊都為假,結果才是假^        邏輯異或       相同為 false,不同為 true!        邏輯非        取反&&   短路與        結果和 & 相同,但是有短路效果||   短路或        結果和 | 相同,但是有短路效果

6.三元運算符和運算符的優先級

        (三元運算符 / 三元表達式) 格式格式:關系表達式? 表達式1: 表達式2;
//        范例:求兩個數的較大值int max = a > b ? a : b;System.out.println(a > b ? a : b);
        計算規則首先計算關系表達式的值如果值為 true,表達式 1 的值就是運算結果如果值為 false,表達式 2 的值就是運算結果小括號()的優先級最高

判斷和循環

1.順序結構

//    順序結構語句是 Java 程序默認的執行流程,按照代碼的先后順序,從上到下依次執行System.out.println("努力做主人喜歡的事");System.out.println("大小姐駕到!統統閃開!");System.out.println("凜冬已至,故鄉的梅花開了嗎");System.out.println("心懷不懼,方能翱翔于天際");

2.分支結構if

   if格式if(關系表達式){語句體;}if 的注意點:大括號的開頭可以另起一行書寫,但是建議寫在第一行的末尾在語句體中,如果只有一句代碼,大括號可以省略不寫如果對一個布爾類型的變量進行判斷,不要用 == 號if (關系表達式) {語句體1;} else {語句體2;}執行流程:I. 首先計算關系表達式的值II. 如果關系表達式的值為 true 就執行語句體 1III. 如果關系表達式的值為 false 就執行語句體 2IV. 繼續執行后面的其他語句if (關系表達式1) {語句體1;} else if (關系表達式2) {語句體2;}...else {語句體 n + 1;}執行流程:I. 首先計算關系表達式 1 的值II. 如果為 true 就執行語句體 1;如果為 false 就計算關系表達式 2 的值III. 如果為 true 就執行語句體 2;如果為 false 就計算關系表達式 3 的值IV. ……V. 如果所有關系表達式結果都為 false,就執行語句體 n+1

3.分支結構switch

        switch(表達式) {case 值1:語句體1;break;case 值2:語句體2;break;...default:語句體n+1;break;}執行流程:I. 首先計算表達式的值。II. 依次和 case 后面的值進行比較,如果有對應的值,就會執行相應的語句,在執行的過程中,遇到 break 就會結束。III. 如果所有的 case 后面的值和表達式的值都不匹配,就會執行 default 里面的語句體,然后結束整個 switch 語句。default 的位置和省略位置:default 不一定是寫在最下面的,我們可以寫在任意位置。只不過習慣會寫在最下面省略:default 可以省略,語法不會有問題,但是不建議省略。case 穿透就是語句體中沒有寫 break 導致的。執行流程:首先還是會拿著小括號中表達式的值跟下面每一個 case 進行匹配。如果匹配上了,就會執行對應的語句體,如果此時發現了 break,那么結束整個 switch 語句。如果沒有發現 break,那么程序會繼續執行下一個 case 的語句體,一直遇到 break 或者右大括號為止使用場景:如果多個 case 的語句體重復了,那么我們考慮利用 case 穿透去簡化代碼。
//        用箭頭簡寫int number = 1;switch (number){case 1 -> {System.out.println("一");break;}case 2 -> {System.out.println("二");break;}case 3 -> {System.out.println("三");break;}default -> {System.out.println("沒有這種選項");break;}}
//        省略大括號switch (number){case 1 -> System.out.println("一");case 2 -> System.out.println("二");case 3 -> System.out.println("三");default -> System.out.println("沒有這種選項");}

4.循環語句for

        格式:for (初始化語句 ;條件判斷語句 ;條件控制語句) {循環體語句;}執行流程:
① 執行初始化語句
② 執行條件判斷語句,看其結果是 true 還是 false如果是 false,循環結束如果是 true,執行循環體語句
③ 執行條件控制語句
④ 回到②繼續執行條件判斷語句

5.循環語句while

    初始化語句;while(條件判斷語句){循環體語句;條件控制語句;}for 和 while 的區別:for 循環中,控制循環的變量,因為歸屬 for 循環的語法結構中,在 for 循環結束后,就不能再次被訪問到了while 循環中,控制循環的變量,對于 while 循環來說不歸屬其語法結構中,在 while 循環結束后,該變量還可以繼續使用

循環高級綜合練習

1.無限循環和跳轉控制語句

//for格式的無限循環
for(;;){System.out.println("學習");
}
//while格式的無限循環
while(true){System.out.println("學習");
}
注意事項
無限循環的下面不能再寫其他代碼了,因為循環永遠停不下來,那么下面的代碼永遠執行不到
//1.continue跳過某一次循環
for (int i = 1; i <= 5; i++) {if(i == 3){//結束本次循環,繼續下次循環continue;}System.out.println("小老虎在吃第" + i + "個包子");
}
//2.結束整個循環
for (int i = 1; i <= 5; i++) {if(i == 3){//結束整個循環break;}System.out.println("小老虎在吃第" + i + "個包子");

數組

1.數組的概述和靜態初始化

        數組:是一種容器,可以用來存儲同種數據類型的多個值數組容器在存儲數據的時候,需要結合隱式轉換考慮格式一:數據類型 [] 數組名范例:int [] array格式二:數據類型 數組名 []范例:int array[]數組的初始化初始化:就是在內存中,為數組容器開辟空間,并將數據存入容器中的過程。數組初始化的兩種方式1.靜態初始化2.動態初始化數組的靜態初始化初始化:就是在內存中,為數組容器開辟空間,并將數據存入容器中的過程完整格式:數據類型 [] 數組名 = new 數據類型 []{元素1,元素2,元素3...};范例:int [] array = new int []{11, 22, 33};范例:double [] array2 = new double []{11.1, 22.2, 33.3};簡化格式:數據類型 [] 數組名 = {元素1,元素2,元素3...};范例:int [] array = {11, 22, 33};范例:double [] array2 = {11.1, 22.2, 33.3};
//需求1:定義數組存儲5個學生的年齡int[] arr1 = new int[]{11,12,13,14,15};int[] arr2 = {11,12,13,14,15};//需求2:定義數組存儲3個學生的姓名String[] arr3 = new String[]{"zhangsan","lisi","wangwu"};String[] arr4 = {"zhangsan","lisi","wangwu"};//需求3:定義數組存儲4個學生的身高 1.93double[] arr5 = new double[]{1.93,1.75,1.73,1.81};double[] arr6 = {1.93,1.75,1.73,1.81};

2.數組的地址值和元素訪問

double[] arr6 = {1.93,1.75,1.73,1.81};
System.out.println(arr6);//[D@23fc625e  地址值
擴展:
解釋一下地址值的格式含義 [D@23fc625e
[ :表示當前是一個數組
D:表示當前數組里面的元素都是double類型的
@:表示一個間隔符號。(固定格式)
23fc625e:才是數組真正的地址值,(十六進制)平時我們習慣性的會把這個整體叫做數組的地址值
數組元素訪問
格式:數組名[索引];
索引:也叫做下標,角標。
索引的特點:從 0 開始,逐個 + 1 增長,連續不間斷利用索引對數組中的元素進行訪問
1.獲取數組里面的元素
格式: 數組名[索引]
int[] arr = {1,2,3,4,5};
//獲取數組中的第一個元素
//其實就是0索引上對應的元素
int number = arr[0];
System.out.println(number);//1
//獲取數組中1索引上對應的數據,并直接打印出來
System.out.println(arr[1]);//2//2.把數據存儲到數組當中
//格式:  數組名[索引] = 具體數據/變量;
arr[0] = 100;
System.out.println(arr[0]);//100

3.數組的遍歷

        int[] arr = {1,2,3,4,5};
在Java當中,關于數組的一個長度屬性,length
調用方式:數組名.lengthSystem.out.println(arr.length);for (int i = 0; i < arr.length; i++) {//i: 0 1 2 3 4System.out.println(arr[i]);}擴展:
自動的快速生成數組的遍歷方式
idea提供的
數組名.fori

4.數組的動態初始化和常見問題

        數組動態初始化動態初始化:初始化時只指定數組長度,由系統為數組分配初始值。格式:數據類型[] 數組名 = new 數據類型[數組長度];范例:int[] arr = new int[3];
//在創建的時候,由我們自己指定數組的長度,由虛擬機給出默認的初始化值String[] arr = new String[50];
//添加學生arr[0] = "zhangsan";arr[1] = "lisi";
//獲取System.out.println(arr[0]);//zhangsanSystem.out.println(arr[1]);//lisiSystem.out.println(arr[2]);//打印出來的是默認初始化值null
數組默認初始化值的規律
整數類型:默認初始化值0
小數類型:默認初始化值0.0
字符類型:默認初始化值'\u0000' 空格
布爾類型:默認初始化值 false
引用數據類型:默認初始化值 null
int[] arr2 = new int[3];
System.out.println(arr2[0]);//0
System.out.println(arr2[1]);//0
System.out.println(arr2[2]);//0
數組動態初始化和靜態初始化的區別
動態初始化:手動指定數組長度,由系統給出默認初始化值。
只明確元素個數,不明確具體數值,推薦使用動態初始化
靜態初始化:手動指定數組元素,系統會根據元素個數,計算出數組的長度。
需求中已經明確了要操作的具體數據,直接靜態初始化即可。
數組常見問題當訪問了數組中不存在的索引,就會引發索引越界異常。

5.數組的內存圈

Java 內存分配
棧:方法運行時使用的內存,比如 main 方法運行,進入方法棧中執行
堆:存儲對象或者數組,new 來創建的,都存儲在堆內存
方法區:存儲可以運行的 class 文件
本地方法棧:JVM 在使用操作系統功能的時候使用,和我們開發無關
寄存器:給 CPU 使用,和我們開發無關

方法

1.什么是方法

        什么是方法?方法是程序中最小的執行單元實際開發中,什么時候用到方法?重復的代碼、具有獨立功能的代碼可以抽取到方法中實際開發中,方法有什么好處?可以提高代碼的復用性可以提高代碼的可維護性

2.最簡單的方法定義和調用

        方法定義格式public static void 方法名 (){方法體(就是打包起來的代碼);}范例public static void playGame (){七個打印語句;}方法調用格式方法名();范例playGame();注意:方法必須先定義后調用,否則程序將報錯
//定義一個方法
public static void playGame(){System.out.println("選人物");System.out.println("準備開局");System.out.println("對線");System.out.println("崩盤");System.out.println("罵隊友");System.out.println("送人頭");System.out.println("GG");
}
//調用方法
playGame();

3.帶參數的方法定義和調用

        帶參數的方法定義單個參數格式:public static void 方法名(參數){......}范例:public static void method(int number){......}多個參數格式:public static void 方法名(參數1, 參數2, ......){......}范例:public static void getSum(int number1, int number2){......}帶參數的方法調用單個參數單個參數:方法名(參數);范例 1:method(10);范例 2:method(變量);多個參數多個參數:方法名(參數1, 參數2, ……);范例 1:getSum(10,20);范例 2:getSum(變量1, 變量2);
    public static void main(String[] args) {getSum(10,20);}public static void getSum(int num1, int num2){int result = num1 + num2;System.out.println(result);}
    形參和實參形參:全稱形式參數,是指方法定義中的參數實參:全稱實際參數,方法調用中的參數注意:方法調用時,形參和實參必須一一對應,否則程序將報錯。

4.帶返回值方法的定義和調用

        方法的返回值其實就是方法運行的最終結果如果在調用處要根據方法的結果,去編寫另外一段代碼邏輯為了在調用處拿到方法產生的結果,就需要定義帶有返回值的方法帶返回值方法定義格式public static 返回值類型 方法名(參數) {方法體;return 返回值;}范例public static int getSum(int a, int b) {int c = a + b;return c;}帶返回值方法的調用直接調用:方法名 (實參);賦值調用:整數類型 變量名 = 方法名 (實參);輸出調用:System.out.println (方法名 (實參));
????????return 關鍵字方法沒有返回值:可以省略不寫。如果書寫,表示結束方法方法有返回值:必須要寫。表示結束方法和返回結果

5.方法的重載

        方法的重載在同一個類中,定義了多個同名的方法,這些同名的方法具有同種的功能。每個方法具有不同的參數類型或參數個數,這些同名的方法,就構成了重載關系簡單記:同一個類中,方法名相同,參數不同的方法。與返回值無關。參數不同:個數不同、類型不同、順序不同

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899613.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899613.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899613.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis-07.Redis常用命令-集合操作命令

一.集合操作命令 SADD key member1 [member2]&#xff1a; sadd set1 a b c d sadd set1 a 0表示沒有添加成功&#xff0c;因為集合中已經有了這個元素了&#xff0c;因此無法重復添加。 SMEMBERS key: smembers set1 SCARD key&#xff1a; scard set1 SADD key member1 …

李飛飛、吳佳俊團隊新作:FlowMo如何以零卷積、零對抗損失實現ImageNet重構新巔峰

目錄 一、摘要 二、引言 三、相關工作 四、方法 基于擴散先前的離散標記化器利用廣告 架構 階段 1A&#xff1a;模式匹配預訓練 階段 1B&#xff1a;模式搜索后訓練 采樣 第二階段&#xff1a;潛在生成建模 五、Coovally AI模型訓練與應用平臺 六、實驗 主要結果 …

CSS3:現代Web設計的魔法卷軸

一、布局革命&#xff1a;從平面到多維空間 1.1 Grid布局的次元突破 星際戰艦布局系統 .galaxy {display: grid;grid-template-areas: "nav nav nav""sidebar content ads""footer footer footer";grid-template-rows: 80px 1fr 120p…

美觀快速的react 的admin框架

系統特色&#xff1a; - &#x1f3a8; 精心設計的UI主題系統&#xff0c;提供優雅的配色方案和視覺體驗 - &#x1f4e6; 豐富完整的組件庫&#xff0c;包含大量開箱即用的高質量組件 - &#x1f528; 詳盡的組件使用示例&#xff0c;降低開發者的學習成本 - &#x1f680…

【C++】 string底層封裝的模擬實現

目錄 前情提要Member functions —— 成員函數構造函數拷貝構造函數賦值運算符重載析構函數 Element access —— 元素訪問Iterator —— 迭代器Capacity —— 容量sizecapacityclearemptyreserveresize Modifiers —— 修改器push_backappendoperator(char ch)operator(const …

計算機網絡相關知識小結

計算機網絡 1.計算機網絡&#xff1a;獨立計算機&#xff0c;通信線路連接&#xff0c;實現資源共享 2.組成&#xff1a;資源子網和通信子網 3.拓撲分類 4.范圍&#xff1a;LAN, MAN. WAN 5、有線和無線 6.按照方向&#xff1a;單工、雙工&#xff0c;全雙工 7.傳輸對象方式&a…

16-CSS3新增選擇器

知識目標 掌握屬性選擇器的使用掌握關系選擇器的使用掌握結構化偽類選擇器的使用掌握偽元素選擇器的使用 如何減少文檔內class屬性和id屬性的定義&#xff0c;使文檔變得更加簡潔&#xff1f; 可以通過屬性選擇器、關系選擇器、結構化偽類選擇器、偽元素選擇器。 1. 屬性選擇…

【彈性計算】異構計算云服務和 AI 加速器(四):FPGA 虛擬化技術

《異構計算云服務和 AI 加速器》系列&#xff0c;共包含以下文章&#xff1a; 異構計算云服務和 AI 加速器&#xff08;一&#xff09;&#xff1a;功能特點異構計算云服務和 AI 加速器&#xff08;二&#xff09;&#xff1a;適用場景異構計算云服務和 AI 加速器&#xff08;…

Java進階——位運算

位運算直接操作二進制位&#xff0c;在處理底層數據、加密算法、圖像處理等領域具有高效性能和效率。本文將深入探討Java中的位運算。 本文目錄 一、位運算簡介1. 與運算2. 或運算異或運算取反運算左移運算右移運算無符號右移運算 二、位運算的實際應用1. 權限管理2. 交換兩個變…

OpenAI深夜直播「偷襲」谷歌!GPT-4o原生圖像生成:奧特曼帶梗圖,AGI戰場再燃戰火

引言&#xff1a;AI戰場的「閃電戰」 當谷歌剛剛發布「地表最強」Gemini 2.5 Pro時&#xff0c;OpenAI立即以一場深夜直播「閃電反擊」——GPT-4o的原生圖像生成功能正式上線&#xff01;從自拍變梗圖到相對論漫畫&#xff0c;奧特曼&#xff08;OpenAI團隊&#xff09;用一連…

鴻蒙harmonyOS:筆記 正則表達式

從給出的文本中&#xff0c;按照既定的相關規則&#xff0c;匹配出符合的數據&#xff0c;其中的規則就是正則表達式&#xff0c;使用正則表達式&#xff0c;可以使得我們用簡潔的代碼就能實現一定復雜的邏輯&#xff0c;比如判斷一個郵箱賬號是否符合正常的郵箱賬號&#xff0…

[首發]烽火HG680-KD-海思MV320芯片-2+8G-安卓9.0-強刷卡刷固件包

烽火HG680-KD-海思MV320芯片-28G-安卓9.0-強刷卡刷固件包 U盤強刷刷機步驟&#xff1a; 1、強刷刷機&#xff0c;用一個usb2.0的8G以下U盤&#xff0c;fat32&#xff0c;2048塊單分區格式化&#xff08;強刷對&#xff35;盤非常非常挑剔&#xff0c;usb2.0的4G U盤兼容的多&a…

Python-數據處理

第十五章 生成數據 安裝Matplotlib&#xff1a;通過pip install matplotlib命令安裝庫。繪制折線圖的核心語法為&#xff1a; import matplotlib.pyplot as plt x_values [1, 2, 3] y_values [1, 4, 9] plt.plot(x_values, y_values, linewidth2) plt.title(&quo…

Java基礎-23-靜態變量與靜態方法的使用場景

在Java中&#xff0c;static關鍵字用于定義靜態變量和靜態方法。它們屬于類本身&#xff0c;而不是類的某個實例。因此&#xff0c;靜態成員可以通過類名直接訪問&#xff0c;而無需創建對象。以下是靜態變量與靜態方法的常見使用場景&#xff1a; 一、靜態變量的使用場景 靜態…

大模型架構記錄12【Agent實例-tool】

運行根目錄下幾個ipynb文件- Learn-Agent.ipynb- 學習《Custom agent 自定義代理》部分- v1-Create-Custom-Agent.ipynb- v2-Create-Custom-Agent.ipynb- 基于v1&#xff0c;新增一些職位描述&#xff08;JD&#xff09;信息- v3-Create-Custom-Agent.ipynb- 基于v2&#xff0c…

在MCU工程中優化CPU工作效率的幾種方法

在嵌入式系統開發中&#xff0c;優化 CPU 工作效率對于提升系統性能、降低功耗、提高實時性至關重要。Keil 作為主流的嵌入式開發工具&#xff0c;提供了多種優化策略&#xff0c;包括 關鍵字使用、內存管理、字節對齊、算法優化 等。本文將從多個方面介紹如何在 Keil 工程中優…

Linux系統下C語言fork函數使用案例

一、fork函數的作用 生成一個子進程&#xff0c;異步執行某個任務&#xff1b; 二、子進程的作用 1、子進程能復制一份父進程的變量、函數&#xff1b; 2、子進程可以和父進程同時并發執行&#xff1b; 函數語法&#xff1a; pid_t fork() 說明&#xff1a;調用后返回一個進程…

MySQL中的CREATE TABLE LIKE和CREATE TABLE SELECT

MySQL中的CREATE TABLE LIKE和CREATE TABLE SELECT CREATE TABLE LIKECREATE TABLE SELECT CREATE TABLE LIKE CREATE TABLE ... LIKE可以用來復制表結構&#xff0c;源表上的索引和約束也會復制。CREATE TABLE ... LIKE不能復制表數據。CREATE TABLE ... LIKE只能復制基表&…

Java開發者指南:深入理解HotStuff新型共識算法

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家、全棧領域優質創作者、高級開發工程師、高級信息系統項目管理師、系統架構師&#xff0c;數學與應用數學專業&#xff0c;10年以上多種混合語言開發經驗&#xff0c;從事DICOM醫學影像開發領域多年&#xff0c;熟悉DICOM協議及…

opencv圖像處理之指紋驗證

一、簡介 在當今數字化時代&#xff0c;生物識別技術作為一種安全、便捷的身份驗證方式&#xff0c;正廣泛應用于各個領域。指紋識別作為生物識別技術中的佼佼者&#xff0c;因其獨特性和穩定性&#xff0c;成為了眾多應用場景的首選。今天&#xff0c;我們就來深入探討如何利…